Use type aliases for common columns
parent
778c2272f5
commit
75666a021d
|
@ -1,17 +1,17 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
class Alt(Base):
|
class Alt(Base):
|
||||||
__tablename__ = "alts"
|
__tablename__ = "alts"
|
||||||
|
|
||||||
user1: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user1: Mapped[user_id_fk_pk]
|
||||||
user2: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user2: Mapped[user_id_fk_pk]
|
||||||
is_manual: Mapped[bool] = mapped_column(default=False)
|
is_manual: Mapped[bool] = mapped_column(default=False)
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.config.awards import AWARDS, HOUSE_AWARDS
|
from files.helpers.config.awards import AWARDS, HOUSE_AWARDS
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import comment_id_fk, int_pk, post_id_fk, user_id_fk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Comment, Post, User
|
from files.classes import Comment, Post, User
|
||||||
|
@ -16,10 +16,10 @@ if TYPE_CHECKING:
|
||||||
class AwardRelationship(Base):
|
class AwardRelationship(Base):
|
||||||
__tablename__ = "award_relationships"
|
__tablename__ = "award_relationships"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
user_id: Mapped[user_id_fk]
|
||||||
post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
|
post_id: Mapped[Optional[post_id_fk]]
|
||||||
comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
|
comment_id: Mapped[Optional[comment_id_fk]]
|
||||||
kind: Mapped[str]
|
kind: Mapped[str]
|
||||||
awarded_utc: Mapped[Optional[int]]
|
awarded_utc: Mapped[Optional[int]]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
|
@ -8,6 +8,7 @@ from sqlalchemy.sql.sqltypes import *
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import int_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -16,7 +17,7 @@ if TYPE_CHECKING:
|
||||||
class BadgeDef(Base):
|
class BadgeDef(Base):
|
||||||
__tablename__ = "badge_defs"
|
__tablename__ = "badge_defs"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
|
id: Mapped[int_pk] = mapped_column(autoincrement=True)
|
||||||
name: Mapped[str]
|
name: Mapped[str]
|
||||||
description: Mapped[Optional[str]]
|
description: Mapped[Optional[str]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
@ -37,7 +38,7 @@ class Badge(Base):
|
||||||
|
|
||||||
__tablename__ = "badges"
|
__tablename__ = "badges"
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
badge_id: Mapped[int] = mapped_column(ForeignKey('badge_defs.id'), primary_key=True)
|
badge_id: Mapped[int] = mapped_column(ForeignKey('badge_defs.id'), primary_key=True)
|
||||||
description: Mapped[Optional[str]]
|
description: Mapped[Optional[str]]
|
||||||
url: Mapped[Optional[str]]
|
url: Mapped[Optional[str]]
|
||||||
|
|
|
@ -2,12 +2,12 @@ import json
|
||||||
import time
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import int_pk, user_id_fk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -17,8 +17,8 @@ CASINO_GAME_KINDS = ['blackjack', 'slots', 'roulette']
|
||||||
class CasinoGame(Base):
|
class CasinoGame(Base):
|
||||||
__tablename__ = "casino_games"
|
__tablename__ = "casino_games"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
user_id: Mapped[user_id_fk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
active: Mapped[bool] = mapped_column(default=True)
|
active: Mapped[bool] = mapped_column(default=True)
|
||||||
currency: Mapped[str]
|
currency: Mapped[str]
|
||||||
|
|
|
@ -9,6 +9,7 @@ from sqlalchemy.sql.sqltypes import *
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import int_pk, user_id_fk, user_id_fk_pk
|
||||||
|
|
||||||
from .comment import Comment
|
from .comment import Comment
|
||||||
from .post import Post
|
from .post import Post
|
||||||
|
@ -20,12 +21,12 @@ if TYPE_CHECKING:
|
||||||
class OauthApp(Base):
|
class OauthApp(Base):
|
||||||
__tablename__ = "oauth_apps"
|
__tablename__ = "oauth_apps"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
client_id: Mapped[Optional[Annotated[str, 64]]]
|
client_id: Mapped[Optional[Annotated[str, 64]]]
|
||||||
app_name: Mapped[str]
|
app_name: Mapped[str]
|
||||||
redirect_uri: Mapped[str]
|
redirect_uri: Mapped[str]
|
||||||
description: Mapped[str]
|
description: Mapped[str]
|
||||||
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
author_id: Mapped[user_id_fk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
author: Mapped["User"] = relationship(back_populates="apps")
|
author: Mapped["User"] = relationship(back_populates="apps")
|
||||||
|
@ -56,7 +57,7 @@ class OauthApp(Base):
|
||||||
|
|
||||||
class ClientAuth(Base):
|
class ClientAuth(Base):
|
||||||
__tablename__ = "client_auths"
|
__tablename__ = "client_auths"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
oauth_client: Mapped[int] = mapped_column(ForeignKey("oauth_apps.id"), primary_key=True)
|
oauth_client: Mapped[int] = mapped_column(ForeignKey("oauth_apps.id"), primary_key=True)
|
||||||
access_token: Mapped[str]
|
access_token: Mapped[str]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
|
@ -18,6 +18,7 @@ from files.helpers.slurs_and_profanities import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.regex import *
|
from files.helpers.regex import *
|
||||||
from files.helpers.sorting_and_time import *
|
from files.helpers.sorting_and_time import *
|
||||||
|
from files.helpers.types import comment_id_fk, int_pk, post_id_fk, user_id_fk
|
||||||
from files.helpers.bleach_body import *
|
from files.helpers.bleach_body import *
|
||||||
|
|
||||||
from .saves import CommentSaveRelationship
|
from .saves import CommentSaveRelationship
|
||||||
|
@ -176,10 +177,10 @@ def add_options(self, body, v):
|
||||||
class Comment(Base):
|
class Comment(Base):
|
||||||
__tablename__ = "comments"
|
__tablename__ = "comments"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
author_id: Mapped[user_id_fk]
|
||||||
parent_post: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
|
parent_post: Mapped[Optional[post_id_fk]]
|
||||||
wall_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
wall_user_id: Mapped[Optional[user_id_fk]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
edited_utc: Mapped[int] = mapped_column(default=0)
|
edited_utc: Mapped[int] = mapped_column(default=0)
|
||||||
is_banned: Mapped[bool] = mapped_column(default=False)
|
is_banned: Mapped[bool] = mapped_column(default=False)
|
||||||
|
@ -188,15 +189,15 @@ class Comment(Base):
|
||||||
chuddedfor: Mapped[Optional[str]]
|
chuddedfor: Mapped[Optional[str]]
|
||||||
distinguished: Mapped[bool] = mapped_column(default=False)
|
distinguished: Mapped[bool] = mapped_column(default=False)
|
||||||
deleted_utc: Mapped[int] = mapped_column(default=0)
|
deleted_utc: Mapped[int] = mapped_column(default=0)
|
||||||
is_approved: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
is_approved: Mapped[Optional[user_id_fk]]
|
||||||
level: Mapped[int] = mapped_column(default=1)
|
level: Mapped[int] = mapped_column(default=1)
|
||||||
parent_comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
|
parent_comment_id: Mapped[Optional[comment_id_fk]]
|
||||||
top_comment_id: Mapped[Optional[int]]
|
top_comment_id: Mapped[Optional[int]]
|
||||||
is_bot: Mapped[bool] = mapped_column(default=False)
|
is_bot: Mapped[bool] = mapped_column(default=False)
|
||||||
stickied: Mapped[Optional[str]]
|
stickied: Mapped[Optional[str]]
|
||||||
stickied_utc: Mapped[Optional[int]]
|
stickied_utc: Mapped[Optional[int]]
|
||||||
num_of_pinned_children: Mapped[int] = mapped_column(default=0)
|
num_of_pinned_children: Mapped[int] = mapped_column(default=0)
|
||||||
sentto: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
sentto: Mapped[Optional[user_id_fk]]
|
||||||
app_id: Mapped[Optional[int]] = mapped_column(ForeignKey("oauth_apps.id"))
|
app_id: Mapped[Optional[int]] = mapped_column(ForeignKey("oauth_apps.id"))
|
||||||
upvotes: Mapped[int] = mapped_column(default=1)
|
upvotes: Mapped[int] = mapped_column(default=1)
|
||||||
downvotes: Mapped[int] = mapped_column(default=0)
|
downvotes: Mapped[int] = mapped_column(default=0)
|
||||||
|
|
|
@ -5,10 +5,11 @@ from sqlalchemy.orm import Mapped, mapped_column
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk
|
||||||
|
|
||||||
class BannedDomain(Base):
|
class BannedDomain(Base):
|
||||||
__tablename__ = "banneddomains"
|
__tablename__ = "banneddomains"
|
||||||
domain: Mapped[str] = mapped_column(primary_key=True)
|
domain: Mapped[str_pk]
|
||||||
reason: Mapped[str]
|
reason: Mapped[str]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk, user_id_fk
|
||||||
|
|
||||||
class Emoji(Base):
|
class Emoji(Base):
|
||||||
__tablename__ = "emojis"
|
__tablename__ = "emojis"
|
||||||
|
|
||||||
name: Mapped[str] = mapped_column(primary_key=True)
|
name: Mapped[str_pk]
|
||||||
kind: Mapped[str]
|
kind: Mapped[str]
|
||||||
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
author_id: Mapped[user_id_fk]
|
||||||
tags: Mapped[str]
|
tags: Mapped[str]
|
||||||
count: Mapped[int] = mapped_column(default=0)
|
count: Mapped[int] = mapped_column(default=0)
|
||||||
submitter_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
submitter_id: Mapped[Optional[user_id_fk]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
nsfw: Mapped[bool] = mapped_column(default=False)
|
nsfw: Mapped[bool] = mapped_column(default=False)
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -13,8 +13,8 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class Follow(Base):
|
class Follow(Base):
|
||||||
__tablename__ = "follows"
|
__tablename__ = "follows"
|
||||||
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
target_id: Mapped[user_id_fk_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship(uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following")
|
user: Mapped["User"] = relationship(uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following")
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.types import Integer
|
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
|
from files.helpers.types import str_pk, user_id_fk
|
||||||
|
|
||||||
from .group_membership import *
|
from .group_membership import *
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class Group(Base):
|
class Group(Base):
|
||||||
__tablename__ = "groups"
|
__tablename__ = "groups"
|
||||||
name: Mapped[str] = mapped_column(primary_key=True)
|
name: Mapped[str_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
owner_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
owner_id: Mapped[Optional[user_id_fk]]
|
||||||
description: Mapped[Optional[str]]
|
description: Mapped[Optional[str]]
|
||||||
description_html: Mapped[Optional[str]]
|
description_html: Mapped[Optional[str]]
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@ from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy import ForeignKey
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.types import Integer, String, Boolean
|
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes.user import User
|
from files.classes.user import User
|
||||||
|
@ -13,7 +13,7 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class GroupMembership(Base):
|
class GroupMembership(Base):
|
||||||
__tablename__ = "group_memberships"
|
__tablename__ = "group_memberships"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
group_name: Mapped[str] = mapped_column(ForeignKey("groups.name"), primary_key=True)
|
group_name: Mapped[str] = mapped_column(ForeignKey("groups.name"), primary_key=True)
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
approved_utc: Mapped[Optional[int]]
|
approved_utc: Mapped[Optional[int]]
|
||||||
|
|
|
@ -9,6 +9,7 @@ from flask import g
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
||||||
|
from files.helpers.types import int_pk, user_id_fk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -17,12 +18,12 @@ if TYPE_CHECKING:
|
||||||
class HatDef(Base):
|
class HatDef(Base):
|
||||||
__tablename__ = "hat_defs"
|
__tablename__ = "hat_defs"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
name: Mapped[str]
|
name: Mapped[str]
|
||||||
description: Mapped[str]
|
description: Mapped[str]
|
||||||
author_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
|
author_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
|
||||||
price: Mapped[int]
|
price: Mapped[int]
|
||||||
submitter_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
submitter_id: Mapped[Optional[user_id_fk]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
author: Mapped["User"] = relationship(primaryjoin="HatDef.author_id == User.id", back_populates="designed_hats")
|
author: Mapped["User"] = relationship(primaryjoin="HatDef.author_id == User.id", back_populates="designed_hats")
|
||||||
|
|
|
@ -11,6 +11,7 @@ from files.helpers.config.const import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
||||||
from files.helpers.sorting_and_time import make_age_string
|
from files.helpers.sorting_and_time import make_age_string
|
||||||
|
from files.helpers.types import comment_id_fk, int_pk, post_id_fk, user_id_fk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Comment, Post, User
|
from files.classes import Comment, Post, User
|
||||||
|
@ -18,13 +19,13 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class HoleAction(Base):
|
class HoleAction(Base):
|
||||||
__tablename__ = "hole_actions"
|
__tablename__ = "hole_actions"
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
hole: Mapped[str] = mapped_column(ForeignKey("holes.name"))
|
hole: Mapped[str] = mapped_column(ForeignKey("holes.name"))
|
||||||
user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
user_id: Mapped[Optional[user_id_fk]]
|
||||||
kind: Mapped[Optional[str]]
|
kind: Mapped[Optional[str]]
|
||||||
target_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
target_user_id: Mapped[Optional[user_id_fk]]
|
||||||
target_post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
|
target_post_id: Mapped[Optional[post_id_fk]]
|
||||||
target_comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
|
target_comment_id: Mapped[Optional[comment_id_fk]]
|
||||||
_note: Mapped[Optional[str]]
|
_note: Mapped[Optional[str]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -13,8 +13,8 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class IPLog(Base):
|
class IPLog(Base):
|
||||||
__tablename__ = "ip_logs"
|
__tablename__ = "ip_logs"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
ip: Mapped[str] = mapped_column(primary_key=True)
|
ip: Mapped[str_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
last_used: Mapped[int]
|
last_used: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import int_pk, user_id_fk
|
||||||
|
|
||||||
class Lottery(Base):
|
class Lottery(Base):
|
||||||
__tablename__ = "lotteries"
|
__tablename__ = "lotteries"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
is_active: Mapped[bool] = mapped_column(default=False)
|
is_active: Mapped[bool] = mapped_column(default=False)
|
||||||
ends_at: Mapped[int]
|
ends_at: Mapped[int]
|
||||||
prize: Mapped[int] = mapped_column(default=0)
|
prize: Mapped[int] = mapped_column(default=0)
|
||||||
tickets_sold: Mapped[int] = mapped_column(default=0)
|
tickets_sold: Mapped[int] = mapped_column(default=0)
|
||||||
winner_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
winner_id: Mapped[Optional[user_id_fk]]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk, user_id_fk
|
||||||
|
|
||||||
class Media(Base):
|
class Media(Base):
|
||||||
__tablename__ = "media"
|
__tablename__ = "media"
|
||||||
kind: Mapped[str] = mapped_column(primary_key=True)
|
kind: Mapped[str_pk]
|
||||||
filename: Mapped[str] = mapped_column(primary_key=True)
|
filename: Mapped[str_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
user_id: Mapped[user_id_fk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
size: Mapped[int]
|
size: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
from flask import g
|
from flask import g
|
||||||
|
|
||||||
|
@ -11,6 +10,7 @@ from files.helpers.config.const import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
||||||
from files.helpers.sorting_and_time import make_age_string
|
from files.helpers.sorting_and_time import make_age_string
|
||||||
|
from files.helpers.types import comment_id_fk, int_pk, post_id_fk, user_id_fk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Comment, Post, User
|
from files.classes import Comment, Post, User
|
||||||
|
@ -18,12 +18,12 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class ModAction(Base):
|
class ModAction(Base):
|
||||||
__tablename__ = "modactions"
|
__tablename__ = "modactions"
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
user_id: Mapped[Optional[user_id_fk]]
|
||||||
kind: Mapped[Optional[str]]
|
kind: Mapped[Optional[str]]
|
||||||
target_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
target_user_id: Mapped[Optional[user_id_fk]]
|
||||||
target_post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
|
target_post_id: Mapped[Optional[post_id_fk]]
|
||||||
target_comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
|
target_comment_id: Mapped[Optional[comment_id_fk]]
|
||||||
_note: Mapped[Optional[str]]
|
_note: Mapped[Optional[str]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import comment_id_fk_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Comment, User
|
from files.classes import Comment, User
|
||||||
|
@ -14,8 +14,8 @@ if TYPE_CHECKING:
|
||||||
class Notification(Base):
|
class Notification(Base):
|
||||||
__tablename__ = "notifications"
|
__tablename__ = "notifications"
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
|
comment_id: Mapped[comment_id_fk_pk]
|
||||||
read: Mapped[bool] = mapped_column(default=False)
|
read: Mapped[bool] = mapped_column(default=False)
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,11 @@ from flask import g, abort
|
||||||
import requests
|
import requests
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import or_
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import int_pk
|
||||||
|
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
|
@ -15,7 +15,7 @@ from files.helpers.config.const import *
|
||||||
class Orgy(Base):
|
class Orgy(Base):
|
||||||
__tablename__ = "orgies"
|
__tablename__ = "orgies"
|
||||||
|
|
||||||
created_utc: Mapped[int] = mapped_column(primary_key=True)
|
created_utc: Mapped[int_pk]
|
||||||
type: Mapped[str]
|
type: Mapped[str]
|
||||||
data: Mapped[str]
|
data: Mapped[str]
|
||||||
title: Mapped[str]
|
title: Mapped[str]
|
||||||
|
|
|
@ -7,6 +7,7 @@ from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import comment_id_fk, int_pk, post_id_fk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Comment, Post, User
|
from files.classes import Comment, Post, User
|
||||||
|
@ -15,8 +16,8 @@ if TYPE_CHECKING:
|
||||||
class PostOption(Base):
|
class PostOption(Base):
|
||||||
__tablename__ = "post_options"
|
__tablename__ = "post_options"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
parent_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
|
parent_id: Mapped[post_id_fk]
|
||||||
body_html: Mapped[str] = mapped_column(Text)
|
body_html: Mapped[str] = mapped_column(Text)
|
||||||
exclusive: Mapped[int]
|
exclusive: Mapped[int]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
@ -46,9 +47,9 @@ class PostOptionVote(Base):
|
||||||
__tablename__ = "post_option_votes"
|
__tablename__ = "post_option_votes"
|
||||||
|
|
||||||
option_id: Mapped[int] = mapped_column(ForeignKey("post_options.id"), primary_key=True)
|
option_id: Mapped[int] = mapped_column(ForeignKey("post_options.id"), primary_key=True)
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
|
post_id: Mapped[Optional[post_id_fk]]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship()
|
user: Mapped["User"] = relationship()
|
||||||
|
|
||||||
|
@ -64,8 +65,8 @@ class CommentOption(Base):
|
||||||
|
|
||||||
__tablename__ = "comment_options"
|
__tablename__ = "comment_options"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
parent_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
|
parent_id: Mapped[comment_id_fk]
|
||||||
body_html: Mapped[str] = mapped_column(Text)
|
body_html: Mapped[str] = mapped_column(Text)
|
||||||
exclusive: Mapped[int]
|
exclusive: Mapped[int]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
@ -95,9 +96,9 @@ class CommentOptionVote(Base):
|
||||||
__tablename__ = "comment_option_votes"
|
__tablename__ = "comment_option_votes"
|
||||||
|
|
||||||
option_id: Mapped[int] = mapped_column(ForeignKey("comment_options.id"), primary_key=True)
|
option_id: Mapped[int] = mapped_column(ForeignKey("comment_options.id"), primary_key=True)
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
|
comment_id: Mapped[Optional[comment_id_fk]]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship()
|
user: Mapped["User"] = relationship()
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from typing import Optional, TYPE_CHECKING
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
from flask import g
|
from flask import g
|
||||||
|
|
||||||
from sqlalchemy import FetchedValue, ForeignKey
|
from sqlalchemy import ForeignKey
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ from files.helpers.slurs_and_profanities import *
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.regex import *
|
from files.helpers.regex import *
|
||||||
from files.helpers.sorting_and_time import make_age_string
|
from files.helpers.sorting_and_time import make_age_string
|
||||||
|
from files.helpers.types import int_pk, user_id_fk
|
||||||
from files.helpers.bleach_body import *
|
from files.helpers.bleach_body import *
|
||||||
|
|
||||||
from .comment import *
|
from .comment import *
|
||||||
|
@ -30,8 +31,8 @@ if TYPE_CHECKING:
|
||||||
class Post(Base):
|
class Post(Base):
|
||||||
__tablename__ = "posts"
|
__tablename__ = "posts"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
|
author_id: Mapped[user_id_fk]
|
||||||
edited_utc: Mapped[int] = mapped_column(default=0)
|
edited_utc: Mapped[int] = mapped_column(default=0)
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
thumburl: Mapped[Optional[str]]
|
thumburl: Mapped[Optional[str]]
|
||||||
|
@ -51,7 +52,7 @@ class Post(Base):
|
||||||
is_pinned: Mapped[bool] = mapped_column(default=False)
|
is_pinned: Mapped[bool] = mapped_column(default=False)
|
||||||
private: Mapped[bool] = mapped_column(default=False)
|
private: Mapped[bool] = mapped_column(default=False)
|
||||||
comment_count: Mapped[int] = mapped_column(default=0)
|
comment_count: Mapped[int] = mapped_column(default=0)
|
||||||
is_approved: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
is_approved: Mapped[Optional[user_id_fk]]
|
||||||
is_bot: Mapped[bool] = mapped_column(default=False)
|
is_bot: Mapped[bool] = mapped_column(default=False)
|
||||||
upvotes: Mapped[int] = mapped_column(default=1)
|
upvotes: Mapped[int] = mapped_column(default=1)
|
||||||
downvotes: Mapped[int] = mapped_column(default=0)
|
downvotes: Mapped[int] = mapped_column(default=0)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk, user_id_fk_pk
|
||||||
|
|
||||||
class PushSubscription(Base):
|
class PushSubscription(Base):
|
||||||
__tablename__ = "push_subscriptions"
|
__tablename__ = "push_subscriptions"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
subscription_json: Mapped[str] = mapped_column(primary_key=True)
|
subscription_json: Mapped[str_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
from files.helpers.slurs_and_profanities import censor_slurs_profanities
|
||||||
|
from files.helpers.types import comment_id_fk_pk, post_id_fk_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -16,8 +16,8 @@ if TYPE_CHECKING:
|
||||||
class Report(Base):
|
class Report(Base):
|
||||||
__tablename__ = "reports"
|
__tablename__ = "reports"
|
||||||
|
|
||||||
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
|
post_id: Mapped[post_id_fk_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
reason: Mapped[Optional[str]]
|
reason: Mapped[Optional[str]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ class Report(Base):
|
||||||
class CommentReport(Base):
|
class CommentReport(Base):
|
||||||
__tablename__ = "commentreports"
|
__tablename__ = "commentreports"
|
||||||
|
|
||||||
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
|
comment_id: Mapped[comment_id_fk_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
reason: Mapped[Optional[str]]
|
reason: Mapped[Optional[str]]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import comment_id_fk_pk, post_id_fk_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes.comment import Comment
|
from files.classes.comment import Comment
|
||||||
|
@ -15,8 +15,8 @@ if TYPE_CHECKING:
|
||||||
class SaveRelationship(Base):
|
class SaveRelationship(Base):
|
||||||
__tablename__ = "save_relationship"
|
__tablename__ = "save_relationship"
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
|
post_id: Mapped[post_id_fk_pk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
post: Mapped["Post"] = relationship(uselist=False)
|
post: Mapped["Post"] = relationship(uselist=False)
|
||||||
|
@ -33,8 +33,8 @@ class CommentSaveRelationship(Base):
|
||||||
|
|
||||||
__tablename__ = "comment_save_relationship"
|
__tablename__ = "comment_save_relationship"
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
|
comment_id: Mapped[comment_id_fk_pk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
comment: Mapped["Comment"] = relationship(uselist=False)
|
comment: Mapped["Comment"] = relationship(uselist=False)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import post_id_fk_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import Post, User
|
from files.classes import Post, User
|
||||||
|
@ -13,8 +13,8 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class Subscription(Base):
|
class Subscription(Base):
|
||||||
__tablename__ = "subscriptions"
|
__tablename__ = "subscriptions"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
|
post_id: Mapped[post_id_fk_pk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship(uselist=False)
|
user: Mapped["User"] = relationship(uselist=False)
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import str_pk
|
||||||
|
|
||||||
class Transaction(Base):
|
class Transaction(Base):
|
||||||
__tablename__ = "transactions"
|
__tablename__ = "transactions"
|
||||||
id: Mapped[str] = mapped_column(primary_key=True)
|
id: Mapped[str_pk]
|
||||||
created_utc: Mapped[int]
|
created_utc: Mapped[int]
|
||||||
type: Mapped[str]
|
type: Mapped[str]
|
||||||
amount: Mapped[int]
|
amount: Mapped[int]
|
||||||
|
|
|
@ -3,8 +3,7 @@ from operator import *
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import pyotp
|
import pyotp
|
||||||
from sqlalchemy import ForeignKey, FetchedValue
|
from sqlalchemy.orm import DynamicMapped, Mapped, aliased, mapped_column
|
||||||
from sqlalchemy.orm import DynamicMapped, Mapped, Query, aliased, deferred, mapped_column
|
|
||||||
from sqlalchemy.sql import case, func, literal
|
from sqlalchemy.sql import case, func, literal
|
||||||
from sqlalchemy.sql.expression import not_, and_, or_
|
from sqlalchemy.sql.expression import not_, and_, or_
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
@ -21,6 +20,7 @@ from files.helpers.config.awards import AWARDS_ENABLED, HOUSE_AWARDS
|
||||||
from files.helpers.media import *
|
from files.helpers.media import *
|
||||||
from files.helpers.security import *
|
from files.helpers.security import *
|
||||||
from files.helpers.sorting_and_time import *
|
from files.helpers.sorting_and_time import *
|
||||||
|
from files.helpers.types import int_pk, user_id_fk
|
||||||
from files.helpers.can_see import *
|
from files.helpers.can_see import *
|
||||||
|
|
||||||
from .alts import Alt
|
from .alts import Alt
|
||||||
|
@ -50,7 +50,7 @@ else:
|
||||||
class User(Base):
|
class User(Base):
|
||||||
__tablename__ = "users"
|
__tablename__ = "users"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int_pk]
|
||||||
username: Mapped[str]
|
username: Mapped[str]
|
||||||
namecolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
|
namecolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
|
||||||
background: Mapped[Optional[str]]
|
background: Mapped[Optional[str]]
|
||||||
|
@ -91,8 +91,8 @@ class User(Base):
|
||||||
queen: Mapped[Optional[int]] = mapped_column(default=0)
|
queen: Mapped[Optional[int]] = mapped_column(default=0)
|
||||||
chud_phrase: Mapped[Optional[str]]
|
chud_phrase: Mapped[Optional[str]]
|
||||||
email_verified: Mapped[bool] = mapped_column(default=False)
|
email_verified: Mapped[bool] = mapped_column(default=False)
|
||||||
shadowbanned: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
shadowbanned: Mapped[Optional[user_id_fk]]
|
||||||
chudded_by: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
chudded_by: Mapped[Optional[user_id_fk]]
|
||||||
slurreplacer: Mapped[int] = mapped_column(default=1)
|
slurreplacer: Mapped[int] = mapped_column(default=1)
|
||||||
profanityreplacer: Mapped[int] = mapped_column(default=1)
|
profanityreplacer: Mapped[int] = mapped_column(default=1)
|
||||||
flairchanged: Mapped[Optional[int]] = mapped_column(default=0)
|
flairchanged: Mapped[Optional[int]] = mapped_column(default=0)
|
||||||
|
@ -111,7 +111,7 @@ class User(Base):
|
||||||
friends_html: Mapped[Optional[str]] = mapped_column(deferred=True)
|
friends_html: Mapped[Optional[str]] = mapped_column(deferred=True)
|
||||||
enemies: Mapped[Optional[str]] = mapped_column(deferred=True)
|
enemies: Mapped[Optional[str]] = mapped_column(deferred=True)
|
||||||
enemies_html: Mapped[Optional[str]] = mapped_column(deferred=True)
|
enemies_html: Mapped[Optional[str]] = mapped_column(deferred=True)
|
||||||
is_banned: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
is_banned: Mapped[Optional[user_id_fk]]
|
||||||
unban_utc: Mapped[Optional[int]]
|
unban_utc: Mapped[Optional[int]]
|
||||||
ban_reason: Mapped[Optional[str]] = mapped_column(deferred=True)
|
ban_reason: Mapped[Optional[str]] = mapped_column(deferred=True)
|
||||||
shadowban_reason: Mapped[Optional[str]] = mapped_column(deferred=True)
|
shadowban_reason: Mapped[Optional[str]] = mapped_column(deferred=True)
|
||||||
|
@ -130,7 +130,7 @@ class User(Base):
|
||||||
original_username: Mapped[Optional[str]]
|
original_username: Mapped[Optional[str]]
|
||||||
extra_username: Mapped[Optional[str]]
|
extra_username: Mapped[Optional[str]]
|
||||||
prelock_username: Mapped[Optional[str]]
|
prelock_username: Mapped[Optional[str]]
|
||||||
referred_by: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
referred_by: Mapped[Optional[user_id_fk]]
|
||||||
currently_held_lottery_tickets: Mapped[int] = mapped_column(default=0)
|
currently_held_lottery_tickets: Mapped[int] = mapped_column(default=0)
|
||||||
total_held_lottery_tickets: Mapped[int] = mapped_column(default=0)
|
total_held_lottery_tickets: Mapped[int] = mapped_column(default=0)
|
||||||
total_lottery_winnings: Mapped[int] = mapped_column(default=0)
|
total_lottery_winnings: Mapped[int] = mapped_column(default=0)
|
||||||
|
@ -146,7 +146,7 @@ class User(Base):
|
||||||
spider: Mapped[Optional[int]] = mapped_column(default=0)
|
spider: Mapped[Optional[int]] = mapped_column(default=0)
|
||||||
lifetimedonated: Mapped[int] = mapped_column(default=0)
|
lifetimedonated: Mapped[int] = mapped_column(default=0)
|
||||||
lifetimedonated_visible: Mapped[bool] = mapped_column(default=False)
|
lifetimedonated_visible: Mapped[bool] = mapped_column(default=False)
|
||||||
blacklisted_by: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
|
blacklisted_by: Mapped[Optional[user_id_fk]]
|
||||||
grinch: Mapped[bool] = mapped_column(default=SITE_NAME != 'rDrama') #don't put in an if condition, it will cause an error bc it has a not-null constraint
|
grinch: Mapped[bool] = mapped_column(default=SITE_NAME != 'rDrama') #don't put in an if condition, it will cause an error bc it has a not-null constraint
|
||||||
group_creation_notifs: Mapped[bool] = mapped_column(default=False)
|
group_creation_notifs: Mapped[bool] = mapped_column(default=False)
|
||||||
effortpost_notifs: Mapped[bool] = mapped_column(default=False)
|
effortpost_notifs: Mapped[bool] = mapped_column(default=False)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -13,8 +13,8 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class UserBlock(Base):
|
class UserBlock(Base):
|
||||||
__tablename__ = "userblocks"
|
__tablename__ = "userblocks"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
target_id: Mapped[user_id_fk_pk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship(primaryjoin="User.id==UserBlock.user_id", back_populates="blocking")
|
user: Mapped["User"] = relationship(primaryjoin="User.id==UserBlock.user_id", back_populates="blocking")
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -13,8 +13,8 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
class UserMute(Base):
|
class UserMute(Base):
|
||||||
__tablename__ = "usermutes"
|
__tablename__ = "usermutes"
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
target_id: Mapped[user_id_fk_pk]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
user: Mapped["User"] = relationship(primaryjoin="User.id==UserMute.user_id")
|
user: Mapped["User"] = relationship(primaryjoin="User.id==UserMute.user_id")
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import time
|
import time
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy.orm import Mapped, relationship
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import *
|
from files.helpers.lazy import *
|
||||||
from files.helpers.sorting_and_time import make_age_string
|
from files.helpers.sorting_and_time import make_age_string
|
||||||
|
from files.helpers.types import user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -16,8 +16,8 @@ if TYPE_CHECKING:
|
||||||
class ViewerRelationship(Base):
|
class ViewerRelationship(Base):
|
||||||
__tablename__ = "viewers"
|
__tablename__ = "viewers"
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
viewer_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
|
viewer_id: Mapped[user_id_fk_pk]
|
||||||
last_view_utc: Mapped[int]
|
last_view_utc: Mapped[int]
|
||||||
created_utc: Mapped[Optional[int]]
|
created_utc: Mapped[Optional[int]]
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import time
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.sql.sqltypes import *
|
from sqlalchemy.sql.sqltypes import *
|
||||||
|
|
||||||
from files.classes import Base
|
from files.classes import Base
|
||||||
from files.helpers.lazy import lazy
|
from files.helpers.lazy import lazy
|
||||||
|
from files.helpers.types import comment_id_fk_pk, post_id_fk_pk, user_id_fk_pk
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from files.classes import User
|
from files.classes import User
|
||||||
|
@ -15,8 +15,8 @@ if TYPE_CHECKING:
|
||||||
class Vote(Base):
|
class Vote(Base):
|
||||||
__tablename__ = "votes"
|
__tablename__ = "votes"
|
||||||
|
|
||||||
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
|
post_id: Mapped[post_id_fk_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
vote_type: Mapped[int]
|
vote_type: Mapped[int]
|
||||||
real: Mapped[bool] = mapped_column(default=True)
|
real: Mapped[bool] = mapped_column(default=True)
|
||||||
coins: Mapped[int] = mapped_column(default=1)
|
coins: Mapped[int] = mapped_column(default=1)
|
||||||
|
@ -45,8 +45,8 @@ class CommentVote(Base):
|
||||||
|
|
||||||
__tablename__ = "commentvotes"
|
__tablename__ = "commentvotes"
|
||||||
|
|
||||||
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
|
comment_id: Mapped[comment_id_fk_pk]
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
|
user_id: Mapped[user_id_fk_pk]
|
||||||
vote_type: Mapped[int]
|
vote_type: Mapped[int]
|
||||||
real: Mapped[bool] = mapped_column(default=True)
|
real: Mapped[bool] = mapped_column(default=True)
|
||||||
coins: Mapped[int] = mapped_column(default=1)
|
coins: Mapped[int] = mapped_column(default=1)
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from sqlalchemy.sql.schema import ForeignKey
|
||||||
|
from sqlalchemy.orm import mapped_column
|
||||||
|
|
||||||
|
int_pk = Annotated[int, mapped_column(primary_key=True)]
|
||||||
|
str_pk = Annotated[str, mapped_column(primary_key=True)]
|
||||||
|
|
||||||
|
user_id_fk = Annotated[int, mapped_column(ForeignKey("users.id"))]
|
||||||
|
user_id_fk_pk = Annotated[int, mapped_column(ForeignKey("users.id"), primary_key=True)]
|
||||||
|
post_id_fk = Annotated[int, mapped_column(ForeignKey("posts.id"))]
|
||||||
|
post_id_fk_pk = Annotated[int, mapped_column(ForeignKey("posts.id"), primary_key=True)]
|
||||||
|
comment_id_fk = Annotated[int, mapped_column(ForeignKey("comments.id"))]
|
||||||
|
comment_id_fk_pk = Annotated[int, mapped_column(ForeignKey("comments.id"), primary_key=True)]
|
Loading…
Reference in New Issue