Use type aliases for common columns

pull/222/head
TriHard 2024-02-15 14:50:18 -07:00
parent 778c2272f5
commit 75666a021d
32 changed files with 150 additions and 127 deletions

View File

@ -1,17 +1,17 @@
import time
from typing import Optional
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import user_id_fk_pk
class Alt(Base):
__tablename__ = "alts"
user1: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user2: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user1: Mapped[user_id_fk_pk]
user2: Mapped[user_id_fk_pk]
is_manual: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[Optional[int]]

View File

@ -1,13 +1,13 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.config.awards import AWARDS, HOUSE_AWARDS
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:
from files.classes import Comment, Post, User
@ -16,10 +16,10 @@ if TYPE_CHECKING:
class AwardRelationship(Base):
__tablename__ = "award_relationships"
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
id: Mapped[int_pk]
user_id: Mapped[user_id_fk]
post_id: Mapped[Optional[post_id_fk]]
comment_id: Mapped[Optional[comment_id_fk]]
kind: Mapped[str]
awarded_utc: Mapped[Optional[int]]
created_utc: Mapped[Optional[int]]

View File

@ -8,6 +8,7 @@ from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.config.const import *
from files.helpers.lazy import lazy
from files.helpers.types import int_pk, user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -16,7 +17,7 @@ if TYPE_CHECKING:
class BadgeDef(Base):
__tablename__ = "badge_defs"
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
id: Mapped[int_pk] = mapped_column(autoincrement=True)
name: Mapped[str]
description: Mapped[Optional[str]]
created_utc: Mapped[int]
@ -37,7 +38,7 @@ class Badge(Base):
__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)
description: Mapped[Optional[str]]
url: Mapped[Optional[str]]

View File

@ -2,12 +2,12 @@ import json
import time
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.lazy import lazy
from files.helpers.types import int_pk, user_id_fk
if TYPE_CHECKING:
from files.classes import User
@ -17,8 +17,8 @@ CASINO_GAME_KINDS = ['blackjack', 'slots', 'roulette']
class CasinoGame(Base):
__tablename__ = "casino_games"
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
id: Mapped[int_pk]
user_id: Mapped[user_id_fk]
created_utc: Mapped[int]
active: Mapped[bool] = mapped_column(default=True)
currency: Mapped[str]

View File

@ -9,6 +9,7 @@ from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.config.const import *
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 .post import Post
@ -20,12 +21,12 @@ if TYPE_CHECKING:
class OauthApp(Base):
__tablename__ = "oauth_apps"
id: Mapped[int] = mapped_column(primary_key=True)
id: Mapped[int_pk]
client_id: Mapped[Optional[Annotated[str, 64]]]
app_name: Mapped[str]
redirect_uri: 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]]
author: Mapped["User"] = relationship(back_populates="apps")
@ -56,7 +57,7 @@ class OauthApp(Base):
class ClientAuth(Base):
__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)
access_token: Mapped[str]
created_utc: Mapped[Optional[int]]

View File

@ -18,6 +18,7 @@ from files.helpers.slurs_and_profanities import *
from files.helpers.lazy import lazy
from files.helpers.regex 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 .saves import CommentSaveRelationship
@ -176,10 +177,10 @@ def add_options(self, body, v):
class Comment(Base):
__tablename__ = "comments"
id: Mapped[int] = mapped_column(primary_key=True)
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
parent_post: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
wall_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
id: Mapped[int_pk]
author_id: Mapped[user_id_fk]
parent_post: Mapped[Optional[post_id_fk]]
wall_user_id: Mapped[Optional[user_id_fk]]
created_utc: Mapped[int]
edited_utc: Mapped[int] = mapped_column(default=0)
is_banned: Mapped[bool] = mapped_column(default=False)
@ -188,15 +189,15 @@ class Comment(Base):
chuddedfor: Mapped[Optional[str]]
distinguished: Mapped[bool] = mapped_column(default=False)
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)
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]]
is_bot: Mapped[bool] = mapped_column(default=False)
stickied: Mapped[Optional[str]]
stickied_utc: Mapped[Optional[int]]
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"))
upvotes: Mapped[int] = mapped_column(default=1)
downvotes: Mapped[int] = mapped_column(default=0)

View File

@ -5,10 +5,11 @@ from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk
class BannedDomain(Base):
__tablename__ = "banneddomains"
domain: Mapped[str] = mapped_column(primary_key=True)
domain: Mapped[str_pk]
reason: Mapped[str]
created_utc: Mapped[Optional[int]]

View File

@ -1,21 +1,21 @@
import time
from typing import Optional
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk, user_id_fk
class Emoji(Base):
__tablename__ = "emojis"
name: Mapped[str] = mapped_column(primary_key=True)
name: Mapped[str_pk]
kind: Mapped[str]
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
author_id: Mapped[user_id_fk]
tags: Mapped[str]
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]
nsfw: Mapped[bool] = mapped_column(default=False)

View File

@ -1,11 +1,11 @@
import time
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -13,8 +13,8 @@ if TYPE_CHECKING:
class Follow(Base):
__tablename__ = "follows"
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id: Mapped[user_id_fk_pk]
user_id: Mapped[user_id_fk_pk]
created_utc: Mapped[int]
user: Mapped["User"] = relationship(uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following")

View File

@ -1,12 +1,12 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.types import Integer
from sqlalchemy.orm import Mapped, relationship
from files.classes import Base
from files.helpers.lazy import lazy
from files.helpers.config.const import *
from files.helpers.types import str_pk, user_id_fk
from .group_membership import *
@ -16,9 +16,9 @@ if TYPE_CHECKING:
class Group(Base):
__tablename__ = "groups"
name: Mapped[str] = mapped_column(primary_key=True)
name: Mapped[str_pk]
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_html: Mapped[Optional[str]]

View File

@ -3,9 +3,9 @@ from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.types import Integer, String, Boolean
from files.classes import Base
from files.helpers.types import user_id_fk_pk
if TYPE_CHECKING:
from files.classes.user import User
@ -13,7 +13,7 @@ if TYPE_CHECKING:
class GroupMembership(Base):
__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)
created_utc: Mapped[int]
approved_utc: Mapped[Optional[int]]

View File

@ -9,6 +9,7 @@ from flask import g
from files.classes import Base
from files.helpers.lazy import lazy
from files.helpers.slurs_and_profanities import censor_slurs_profanities
from files.helpers.types import int_pk, user_id_fk
if TYPE_CHECKING:
from files.classes import User
@ -17,12 +18,12 @@ if TYPE_CHECKING:
class HatDef(Base):
__tablename__ = "hat_defs"
id: Mapped[int] = mapped_column(primary_key=True)
id: Mapped[int_pk]
name: Mapped[str]
description: Mapped[str]
author_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
price: Mapped[int]
submitter_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
submitter_id: Mapped[Optional[user_id_fk]]
created_utc: Mapped[int]
author: Mapped["User"] = relationship(primaryjoin="HatDef.author_id == User.id", back_populates="designed_hats")

View File

@ -11,6 +11,7 @@ from files.helpers.config.const import *
from files.helpers.lazy import lazy
from files.helpers.slurs_and_profanities import censor_slurs_profanities
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:
from files.classes import Comment, Post, User
@ -18,13 +19,13 @@ if TYPE_CHECKING:
class HoleAction(Base):
__tablename__ = "hole_actions"
id: Mapped[int] = mapped_column(primary_key=True)
id: Mapped[int_pk]
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]]
target_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
target_post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
target_comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
target_user_id: Mapped[Optional[user_id_fk]]
target_post_id: Mapped[Optional[post_id_fk]]
target_comment_id: Mapped[Optional[comment_id_fk]]
_note: Mapped[Optional[str]]
created_utc: Mapped[int]

View File

@ -1,11 +1,11 @@
import time
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk, user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -13,8 +13,8 @@ if TYPE_CHECKING:
class IPLog(Base):
__tablename__ = "ip_logs"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
ip: Mapped[str] = mapped_column(primary_key=True)
user_id: Mapped[user_id_fk_pk]
ip: Mapped[str_pk]
created_utc: Mapped[int]
last_used: Mapped[int]

View File

@ -1,23 +1,23 @@
import time
from typing import Optional
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.config.const import *
from files.helpers.lazy import lazy
from files.helpers.types import int_pk, user_id_fk
class Lottery(Base):
__tablename__ = "lotteries"
id: Mapped[int] = mapped_column(primary_key=True)
id: Mapped[int_pk]
is_active: Mapped[bool] = mapped_column(default=False)
ends_at: Mapped[int]
prize: 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]]
def __init__(self, *args, **kwargs):

View File

@ -1,15 +1,15 @@
import time
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.orm import Mapped
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk, user_id_fk
class Media(Base):
__tablename__ = "media"
kind: Mapped[str] = mapped_column(primary_key=True)
filename: Mapped[str] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
kind: Mapped[str_pk]
filename: Mapped[str_pk]
user_id: Mapped[user_id_fk]
created_utc: Mapped[int]
size: Mapped[int]

View File

@ -1,8 +1,7 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from flask import g
@ -11,6 +10,7 @@ from files.helpers.config.const import *
from files.helpers.lazy import lazy
from files.helpers.slurs_and_profanities import censor_slurs_profanities
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:
from files.classes import Comment, Post, User
@ -18,12 +18,12 @@ if TYPE_CHECKING:
class ModAction(Base):
__tablename__ = "modactions"
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
id: Mapped[int_pk]
user_id: Mapped[Optional[user_id_fk]]
kind: Mapped[Optional[str]]
target_user_id: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
target_post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
target_comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
target_user_id: Mapped[Optional[user_id_fk]]
target_post_id: Mapped[Optional[post_id_fk]]
target_comment_id: Mapped[Optional[comment_id_fk]]
_note: Mapped[Optional[str]]
created_utc: Mapped[int]

View File

@ -1,11 +1,11 @@
import time
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import comment_id_fk_pk, user_id_fk_pk
if TYPE_CHECKING:
from files.classes import Comment, User
@ -14,8 +14,8 @@ if TYPE_CHECKING:
class Notification(Base):
__tablename__ = "notifications"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
comment_id: Mapped[comment_id_fk_pk]
read: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[int]

View File

@ -3,11 +3,11 @@ from flask import g, abort
import requests
from typing import Optional
from sqlalchemy import or_
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import int_pk
from files.helpers.lazy import lazy
from files.helpers.config.const import *
@ -15,7 +15,7 @@ from files.helpers.config.const import *
class Orgy(Base):
__tablename__ = "orgies"
created_utc: Mapped[int] = mapped_column(primary_key=True)
created_utc: Mapped[int_pk]
type: Mapped[str]
data: Mapped[str]
title: Mapped[str]

View File

@ -7,6 +7,7 @@ from sqlalchemy.sql.sqltypes import *
from files.classes import Base
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:
from files.classes import Comment, Post, User
@ -15,8 +16,8 @@ if TYPE_CHECKING:
class PostOption(Base):
__tablename__ = "post_options"
id: Mapped[int] = mapped_column(primary_key=True)
parent_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
id: Mapped[int_pk]
parent_id: Mapped[post_id_fk]
body_html: Mapped[str] = mapped_column(Text)
exclusive: Mapped[int]
created_utc: Mapped[Optional[int]]
@ -46,9 +47,9 @@ class PostOptionVote(Base):
__tablename__ = "post_option_votes"
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]
post_id: Mapped[Optional[int]] = mapped_column(ForeignKey("posts.id"))
post_id: Mapped[Optional[post_id_fk]]
user: Mapped["User"] = relationship()
@ -64,8 +65,8 @@ class CommentOption(Base):
__tablename__ = "comment_options"
id: Mapped[int] = mapped_column(primary_key=True)
parent_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
id: Mapped[int_pk]
parent_id: Mapped[comment_id_fk]
body_html: Mapped[str] = mapped_column(Text)
exclusive: Mapped[int]
created_utc: Mapped[Optional[int]]
@ -95,9 +96,9 @@ class CommentOptionVote(Base):
__tablename__ = "comment_option_votes"
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]
comment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("comments.id"))
comment_id: Mapped[Optional[comment_id_fk]]
user: Mapped["User"] = relationship()

View File

@ -4,7 +4,7 @@ from typing import Optional, TYPE_CHECKING
from urllib.parse import urlparse
from flask import g
from sqlalchemy import FetchedValue, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
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.regex import *
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 .comment import *
@ -30,8 +31,8 @@ if TYPE_CHECKING:
class Post(Base):
__tablename__ = "posts"
id: Mapped[int] = mapped_column(primary_key=True)
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
id: Mapped[int_pk]
author_id: Mapped[user_id_fk]
edited_utc: Mapped[int] = mapped_column(default=0)
created_utc: Mapped[int]
thumburl: Mapped[Optional[str]]
@ -51,7 +52,7 @@ class Post(Base):
is_pinned: Mapped[bool] = mapped_column(default=False)
private: Mapped[bool] = mapped_column(default=False)
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)
upvotes: Mapped[int] = mapped_column(default=1)
downvotes: Mapped[int] = mapped_column(default=0)

View File

@ -1,15 +1,15 @@
import time
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.orm import Mapped
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk, user_id_fk_pk
class PushSubscription(Base):
__tablename__ = "push_subscriptions"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
subscription_json: Mapped[str] = mapped_column(primary_key=True)
user_id: Mapped[user_id_fk_pk]
subscription_json: Mapped[str_pk]
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):

View File

@ -1,13 +1,13 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.lazy import lazy
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:
from files.classes import User
@ -16,8 +16,8 @@ if TYPE_CHECKING:
class Report(Base):
__tablename__ = "reports"
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[post_id_fk_pk]
user_id: Mapped[user_id_fk_pk]
reason: Mapped[Optional[str]]
created_utc: Mapped[int]
@ -44,8 +44,8 @@ class Report(Base):
class CommentReport(Base):
__tablename__ = "commentreports"
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[comment_id_fk_pk]
user_id: Mapped[user_id_fk_pk]
reason: Mapped[Optional[str]]
created_utc: Mapped[int]

View File

@ -1,11 +1,11 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
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:
from files.classes.comment import Comment
@ -15,8 +15,8 @@ if TYPE_CHECKING:
class SaveRelationship(Base):
__tablename__ = "save_relationship"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
post_id: Mapped[post_id_fk_pk]
created_utc: Mapped[Optional[int]]
post: Mapped["Post"] = relationship(uselist=False)
@ -33,8 +33,8 @@ class CommentSaveRelationship(Base):
__tablename__ = "comment_save_relationship"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
comment_id: Mapped[comment_id_fk_pk]
created_utc: Mapped[Optional[int]]
comment: Mapped["Comment"] = relationship(uselist=False)

View File

@ -1,11 +1,11 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import post_id_fk_pk, user_id_fk_pk
if TYPE_CHECKING:
from files.classes import Post, User
@ -13,8 +13,8 @@ if TYPE_CHECKING:
class Subscription(Base):
__tablename__ = "subscriptions"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
post_id: Mapped[post_id_fk_pk]
created_utc: Mapped[Optional[int]]
user: Mapped["User"] = relationship(uselist=False)

View File

@ -1,13 +1,14 @@
from typing import Optional
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.orm import Mapped
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import str_pk
class Transaction(Base):
__tablename__ = "transactions"
id: Mapped[str] = mapped_column(primary_key=True)
id: Mapped[str_pk]
created_utc: Mapped[int]
type: Mapped[str]
amount: Mapped[int]

View File

@ -3,8 +3,7 @@ from operator import *
from typing import Optional
import pyotp
from sqlalchemy import ForeignKey, FetchedValue
from sqlalchemy.orm import DynamicMapped, Mapped, Query, aliased, deferred, mapped_column
from sqlalchemy.orm import DynamicMapped, Mapped, aliased, mapped_column
from sqlalchemy.sql import case, func, literal
from sqlalchemy.sql.expression import not_, and_, or_
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.security 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 .alts import Alt
@ -50,7 +50,7 @@ else:
class User(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True)
id: Mapped[int_pk]
username: Mapped[str]
namecolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
background: Mapped[Optional[str]]
@ -91,8 +91,8 @@ class User(Base):
queen: Mapped[Optional[int]] = mapped_column(default=0)
chud_phrase: Mapped[Optional[str]]
email_verified: Mapped[bool] = mapped_column(default=False)
shadowbanned: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
chudded_by: Mapped[Optional[int]] = mapped_column(ForeignKey("users.id"))
shadowbanned: Mapped[Optional[user_id_fk]]
chudded_by: Mapped[Optional[user_id_fk]]
slurreplacer: Mapped[int] = mapped_column(default=1)
profanityreplacer: Mapped[int] = mapped_column(default=1)
flairchanged: Mapped[Optional[int]] = mapped_column(default=0)
@ -111,7 +111,7 @@ class User(Base):
friends_html: Mapped[Optional[str]] = mapped_column(deferred=True)
enemies: 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]]
ban_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]]
extra_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)
total_held_lottery_tickets: 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)
lifetimedonated: Mapped[int] = mapped_column(default=0)
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
group_creation_notifs: Mapped[bool] = mapped_column(default=False)
effortpost_notifs: Mapped[bool] = mapped_column(default=False)

View File

@ -1,11 +1,11 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -13,8 +13,8 @@ if TYPE_CHECKING:
class UserBlock(Base):
__tablename__ = "userblocks"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
target_id: Mapped[user_id_fk_pk]
created_utc: Mapped[Optional[int]]
user: Mapped["User"] = relationship(primaryjoin="User.id==UserBlock.user_id", back_populates="blocking")

View File

@ -1,11 +1,11 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.types import user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -13,8 +13,8 @@ if TYPE_CHECKING:
class UserMute(Base):
__tablename__ = "usermutes"
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user_id: Mapped[user_id_fk_pk]
target_id: Mapped[user_id_fk_pk]
created_utc: Mapped[Optional[int]]
user: Mapped["User"] = relationship(primaryjoin="User.id==UserMute.user_id")

View File

@ -1,13 +1,13 @@
import time
from typing import Optional, TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.orm import Mapped, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
from files.helpers.lazy import *
from files.helpers.sorting_and_time import make_age_string
from files.helpers.types import user_id_fk_pk
if TYPE_CHECKING:
from files.classes import User
@ -16,8 +16,8 @@ if TYPE_CHECKING:
class ViewerRelationship(Base):
__tablename__ = "viewers"
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
viewer_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
user_id: Mapped[user_id_fk_pk]
viewer_id: Mapped[user_id_fk_pk]
last_view_utc: Mapped[int]
created_utc: Mapped[Optional[int]]

View File

@ -1,12 +1,12 @@
import time
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
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:
from files.classes import User
@ -15,8 +15,8 @@ if TYPE_CHECKING:
class Vote(Base):
__tablename__ = "votes"
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[post_id_fk_pk]
user_id: Mapped[user_id_fk_pk]
vote_type: Mapped[int]
real: Mapped[bool] = mapped_column(default=True)
coins: Mapped[int] = mapped_column(default=1)
@ -45,8 +45,8 @@ class CommentVote(Base):
__tablename__ = "commentvotes"
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[comment_id_fk_pk]
user_id: Mapped[user_id_fk_pk]
vote_type: Mapped[int]
real: Mapped[bool] = mapped_column(default=True)
coins: Mapped[int] = mapped_column(default=1)

View File

@ -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)]