Column -> mapped_column

pull/222/head
TriHard 2024-02-15 06:17:23 -07:00
parent ecd64e1999
commit 7b0632bdc7
33 changed files with 460 additions and 456 deletions

View File

@ -1,6 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -8,10 +9,10 @@ from files.classes import Base
class Alt(Base):
__tablename__ = "alts"
user1 = Column(Integer, ForeignKey("users.id"), primary_key=True)
user2 = Column(Integer, ForeignKey("users.id"), primary_key=True)
is_manual = Column(Boolean, default=False)
created_utc = Column(Integer)
user1: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user2: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
is_manual: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -12,15 +12,15 @@ from files.helpers.lazy import lazy
class AwardRelationship(Base):
__tablename__ = "award_relationships"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"))
post_id = Column(Integer, ForeignKey("posts.id"))
comment_id = Column(Integer, ForeignKey("comments.id"))
kind = Column(String)
awarded_utc = Column(Integer)
created_utc = Column(Integer)
price_paid = Column(Integer, default = 0)
note = Column(String)
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
kind: Mapped[str]
awarded_utc: Mapped[int]
created_utc: Mapped[int]
price_paid: Mapped[int] = mapped_column(default = 0)
note: Mapped[str]
user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", back_populates="awards")
post = relationship("Post", primaryjoin="AwardRelationship.post_id==Post.id", back_populates="awards")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -11,10 +11,10 @@ from files.helpers.lazy import lazy
class BadgeDef(Base):
__tablename__ = "badge_defs"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
description = Column(String)
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str]
description: Mapped[str]
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
@ -32,11 +32,11 @@ class Badge(Base):
__tablename__ = "badges"
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
badge_id = Column(Integer, ForeignKey('badge_defs.id'), primary_key=True)
description = Column(String)
url = Column(String)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
badge_id: Mapped[int] = mapped_column(ForeignKey('badge_defs.id'), primary_key=True)
description: Mapped[str]
url: Mapped[str]
created_utc: Mapped[int]
user = relationship("User", back_populates="badges")
badge = relationship("BadgeDef", primaryjoin="Badge.badge_id == BadgeDef.id", lazy="joined", innerjoin=True)

View File

@ -1,8 +1,8 @@
import json
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -13,15 +13,15 @@ CASINO_GAME_KINDS = ['blackjack', 'slots', 'roulette']
class CasinoGame(Base):
__tablename__ = "casino_games"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
active = Column(Boolean, default=True)
currency = Column(String)
wager = Column(Integer)
winnings = Column(Integer)
kind = Column(String)
game_state = Column(JSON)
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
active: Mapped[bool] = mapped_column(default=True)
currency: Mapped[str]
wager: Mapped[int]
winnings: Mapped[int]
kind: Mapped[str]
game_state: Mapped[str] = mapped_column(JSON)
user = relationship("User")

View File

@ -1,8 +1,8 @@
import time
from flask import g
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship, load_only
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, load_only, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -15,13 +15,13 @@ from .post import Post
class OauthApp(Base):
__tablename__ = "oauth_apps"
id = Column(Integer, primary_key=True)
client_id = Column(String)
app_name = Column(String)
redirect_uri = Column(String)
description = Column(String)
author_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
client_id: Mapped[str]
app_name: Mapped[str]
redirect_uri: Mapped[str]
description: Mapped[str]
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
author = relationship("User", back_populates="apps")
@ -51,10 +51,10 @@ class OauthApp(Base):
class ClientAuth(Base):
__tablename__ = "client_auths"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
oauth_client = Column(Integer, ForeignKey("oauth_apps.id"), primary_key=True)
access_token = Column(String)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
oauth_client: Mapped[int] = mapped_column(ForeignKey("oauth_apps.id"), primary_key=True)
access_token: Mapped[str]
created_utc: Mapped[int]
user = relationship("User")
application = relationship("OauthApp")

View File

@ -4,9 +4,9 @@ from random import randint
from urllib.parse import parse_qs, urlencode, urlparse
from flask import g
from sqlalchemy import Column, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.dialects.postgresql import TSVECTOR
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.schema import FetchedValue
from sqlalchemy.sql.sqltypes import *
@ -172,47 +172,47 @@ def add_options(self, body, v):
class Comment(Base):
__tablename__ = "comments"
id = Column(Integer, primary_key=True)
author_id = Column(Integer, ForeignKey("users.id"))
parent_post = Column(Integer, ForeignKey("posts.id"))
wall_user_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
edited_utc = Column(Integer, default=0)
is_banned = Column(Boolean, default=False)
ghost = Column(Boolean, default=False)
bannedfor = Column(String)
chuddedfor = Column(String)
distinguished = Column(Boolean, default=False)
deleted_utc = Column(Integer, default=0)
is_approved = Column(Integer, ForeignKey("users.id"))
level = Column(Integer, default=1)
parent_comment_id = Column(Integer, ForeignKey("comments.id"))
top_comment_id = Column(Integer)
is_bot = Column(Boolean, default=False)
stickied = Column(String)
stickied_utc = Column(Integer)
num_of_pinned_children = Column(Integer, default=0)
sentto = Column(Integer, ForeignKey("users.id"))
app_id = Column(Integer, ForeignKey("oauth_apps.id"))
upvotes = Column(Integer, default=1)
downvotes = Column(Integer, default=0)
realupvotes = Column(Integer, default=1)
body = Column(String)
body_html = Column(String)
body_ts = Column(TSVECTOR(), server_default=FetchedValue())
ban_reason = Column(String)
treasure_amount = Column(String)
slots_result = Column(String)
ping_cost = Column(Integer, default=0)
blackjack_result = Column(String)
casino_game_id = Column(Integer, ForeignKey("casino_games.id"))
chudded = Column(Boolean, default=False)
rainbowed = Column(Boolean, default=False)
queened = Column(Boolean, default=False)
sharpened = Column(Boolean, default=False)
id: Mapped[int] = mapped_column(primary_key=True)
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
parent_post: Mapped[int] = mapped_column(ForeignKey("posts.id"))
wall_user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
edited_utc: Mapped[int] = mapped_column(default=0)
is_banned: Mapped[bool] = mapped_column(default=False)
ghost: Mapped[bool] = mapped_column(default=False)
bannedfor: Mapped[str]
chuddedfor: Mapped[str]
distinguished: Mapped[bool] = mapped_column(default=False)
deleted_utc: Mapped[int] = mapped_column(default=0)
is_approved: Mapped[int] = mapped_column(ForeignKey("users.id"))
level: Mapped[int] = mapped_column(default=1)
parent_comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
top_comment_id: Mapped[int]
is_bot: Mapped[bool] = mapped_column(default=False)
stickied: Mapped[str]
stickied_utc: Mapped[int]
num_of_pinned_children: Mapped[int] = mapped_column(default=0)
sentto: Mapped[int] = mapped_column(ForeignKey("users.id"))
app_id: Mapped[int] = mapped_column(ForeignKey("oauth_apps.id"))
upvotes: Mapped[int] = mapped_column(default=1)
downvotes: Mapped[int] = mapped_column(default=0)
realupvotes: Mapped[int] = mapped_column(default=1)
body: Mapped[str]
body_html: Mapped[str]
body_ts: Mapped[str] = mapped_column(TSVECTOR(), server_default=FetchedValue())
ban_reason: Mapped[str]
treasure_amount: Mapped[str]
slots_result: Mapped[str]
ping_cost: Mapped[int] = mapped_column(default=0)
blackjack_result: Mapped[str]
casino_game_id: Mapped[int] = mapped_column(ForeignKey("casino_games.id"))
chudded: Mapped[bool] = mapped_column(default=False)
rainbowed: Mapped[bool] = mapped_column(default=False)
queened: Mapped[bool] = mapped_column(default=False)
sharpened: Mapped[bool] = mapped_column(default=False)
if FEATURES['NSFW_MARKING']:
nsfw = Column(Boolean, default=False)
nsfw: Mapped[bool] = mapped_column(default=False)
else:
nsfw = False

View File

@ -1,15 +1,15 @@
import time
from sqlalchemy import Column
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class BannedDomain(Base):
__tablename__ = "banneddomains"
domain = Column(String, primary_key=True)
reason = Column(String)
created_utc = Column(Integer)
domain: Mapped[str] = mapped_column(primary_key=True)
reason: Mapped[str]
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,6 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -8,14 +9,14 @@ from files.classes import Base
class Emoji(Base):
__tablename__ = "emojis"
name = Column(String, primary_key=True)
kind = Column(String)
author_id = Column(Integer, ForeignKey("users.id"))
tags = Column(String)
count = Column(Integer, default=0)
submitter_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
nsfw = Column(Boolean, default=False)
name: Mapped[str] = mapped_column(primary_key=True)
kind: Mapped[str]
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
tags: Mapped[str]
count: Mapped[int] = mapped_column(default=0)
submitter_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
nsfw: Mapped[bool] = mapped_column(default=False)
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,16 +1,16 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class Follow(Base):
__tablename__ = "follows"
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer)
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc: Mapped[int]
user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following")
target = relationship("User", uselist=False, primaryjoin="User.id==Follow.target_id", back_populates="followers")

View File

@ -1,7 +1,6 @@
import time
from sqlalchemy import Column
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.types import Integer
from files.classes import Base
@ -12,11 +11,11 @@ from .group_membership import *
class Group(Base):
__tablename__ = "groups"
name = Column(String, primary_key=True)
created_utc = Column(Integer)
owner_id = Column(Integer, ForeignKey("users.id"))
description = Column(String)
description_html = Column(String)
name: Mapped[str] = mapped_column(primary_key=True)
created_utc: Mapped[int]
owner_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
description: Mapped[str]
description_html: Mapped[str]
memberships = relationship("GroupMembership", primaryjoin="GroupMembership.group_name==Group.name", order_by="GroupMembership.approved_utc")
owner = relationship("User", primaryjoin="Group.owner_id==User.id")

View File

@ -1,18 +1,18 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.types import Integer, String, Boolean
from files.classes import Base
class GroupMembership(Base):
__tablename__ = "group_memberships"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
group_name = Column(String, ForeignKey("groups.name"), primary_key=True)
created_utc = Column(Integer)
approved_utc = Column(Integer)
is_mod = Column(Boolean, default=False)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
group_name: Mapped[str] = mapped_column(ForeignKey("groups.name"), primary_key=True)
created_utc: Mapped[int]
approved_utc: Mapped[int]
is_mod: Mapped[bool] = mapped_column(default=False)
user = relationship("User", uselist=False)

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from flask import g
@ -12,13 +12,13 @@ from files.helpers.slurs_and_profanities import censor_slurs_profanities
class HatDef(Base):
__tablename__ = "hat_defs"
id = Column(Integer, primary_key=True)
name = Column(String)
description = Column(String)
author_id = Column(Integer, ForeignKey('users.id'))
price = Column(Integer)
submitter_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
description: Mapped[str]
author_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
price: Mapped[int]
submitter_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
author = relationship("User", primaryjoin="HatDef.author_id == User.id", back_populates="designed_hats")
submitter = relationship("User", primaryjoin="HatDef.submitter_id == User.id")
@ -48,10 +48,10 @@ class HatDef(Base):
class Hat(Base):
__tablename__ = "hats"
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
hat_id = Column(Integer, ForeignKey('hat_defs.id'), primary_key=True)
equipped = Column(Boolean, default=False)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
hat_id: Mapped[int] = mapped_column(ForeignKey('hat_defs.id'), primary_key=True)
equipped: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[int]
hat_def = relationship("HatDef")
owners = relationship("User", back_populates="owned_hats")

View File

@ -1,10 +1,9 @@
import random
import time
from typing import Annotated
from sqlalchemy import Column
from sqlalchemy.ext.mutable import MutableList
from sqlalchemy.orm import relationship, deferred
from sqlalchemy.types import *
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.dialects.postgresql import ARRAY
from files.classes import Base
@ -15,20 +14,20 @@ from .hole_relationship import *
class Hole(Base):
__tablename__ = "holes"
name = Column(String, primary_key=True)
sidebar = Column(String)
sidebar_html = Column(String)
sidebarurls = Column(MutableList.as_mutable(ARRAY(String)), default=MutableList([]))
bannerurls = Column(MutableList.as_mutable(ARRAY(String)), default=MutableList([]))
marseyurl = Column(String)
css = deferred(Column(String))
stealth = Column(Boolean, default=False)
public_use = Column(Boolean, default=False)
created_utc = Column(Integer)
name: Mapped[str] = mapped_column(primary_key=True)
sidebar: Mapped[str]
sidebar_html: Mapped[str]
sidebarurls: Mapped[list[str]] = mapped_column(MutableList.as_mutable(ARRAY(String)), default=MutableList([]))
bannerurls: Mapped[list[str]] = mapped_column(MutableList.as_mutable(ARRAY(String)), default=MutableList([]))
marseyurl: Mapped[str]
css: Mapped[str] = mapped_column(deferred=True)
stealth: Mapped[bool] = mapped_column(default=False)
public_use: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[int]
if SITE_NAME == 'WPD':
snappy_quotes = None
else:
snappy_quotes = deferred(Column(String))
snappy_quotes: Mapped[Annotated[str, HOLE_SNAPPY_QUOTES_LENGTH]] = mapped_column(deferred=True)
blocks = relationship("HoleBlock", primaryjoin="HoleBlock.hole==Hole.name")
followers = relationship("HoleFollow", primaryjoin="HoleFollow.hole==Hole.name")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from flask import g
@ -13,15 +13,15 @@ from files.helpers.sorting_and_time import make_age_string
class HoleAction(Base):
__tablename__ = "hole_actions"
id = Column(Integer, primary_key=True)
hole = Column(String, ForeignKey("holes.name"))
user_id = Column(Integer, ForeignKey("users.id"))
kind = Column(String)
target_user_id = Column(Integer, ForeignKey("users.id"))
target_post_id = Column(Integer, ForeignKey("posts.id"))
target_comment_id = Column(Integer, ForeignKey("comments.id"))
_note = Column(String)
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
hole: Mapped[str] = mapped_column(ForeignKey("holes.name"))
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
kind: Mapped[str]
target_user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
target_post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
target_comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
_note: Mapped[str]
created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==HoleAction.user_id")
target_user = relationship("User", primaryjoin="User.id==HoleAction.target_user_id")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, relationship, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -10,9 +10,9 @@ class HoleRelationship(Base):
__tablename__ = NotImplemented
__abstract__ = True
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
hole = Column(String, ForeignKey("holes.name"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
hole: Mapped[str] = mapped_column(ForeignKey("holes.name"), primary_key=True)
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
@ -35,5 +35,5 @@ class Mod(HoleRelationship):
class Exile(HoleRelationship):
__tablename__ = "exiles"
exiler_id = Column(Integer, ForeignKey("users.id"))
exiler_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
exiler = relationship("User", primaryjoin="User.id==Exile.exiler_id")

View File

@ -1,17 +1,17 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class IPLog(Base):
__tablename__ = "ip_logs"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
ip = Column(String, primary_key=True)
created_utc = Column(Integer)
last_used = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
ip: Mapped[str] = mapped_column(primary_key=True)
created_utc: Mapped[int]
last_used: Mapped[int]
user = relationship("User")

View File

@ -1,6 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -10,13 +11,13 @@ from files.helpers.lazy import lazy
class Lottery(Base):
__tablename__ = "lotteries"
id = Column(Integer, primary_key=True)
is_active = Column(Boolean, default=False)
ends_at = Column(Integer)
prize = Column(Integer, default=0)
tickets_sold = Column(Integer, default=0)
winner_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
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[int] = mapped_column(ForeignKey("users.id"))
created_utc: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,16 +1,17 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class Media(Base):
__tablename__ = "media"
kind = Column(String, primary_key=True)
filename = Column(String, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"))
created_utc = Column(Integer)
size = Column(Integer)
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"))
created_utc: Mapped[int]
size: Mapped[int]
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from flask import g
@ -13,14 +13,14 @@ from files.helpers.sorting_and_time import make_age_string
class ModAction(Base):
__tablename__ = "modactions"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"))
kind = Column(String)
target_user_id = Column(Integer, ForeignKey("users.id"))
target_post_id = Column(Integer, ForeignKey("posts.id"))
target_comment_id = Column(Integer, ForeignKey("comments.id"))
_note = Column(String)
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
kind: Mapped[str]
target_user_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
target_post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
target_comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
_note: Mapped[str]
created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==ModAction.user_id")
target_user = relationship("User", primaryjoin="User.id==ModAction.target_user_id")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -9,10 +9,10 @@ from files.classes import Base
class Notification(Base):
__tablename__ = "notifications"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
read = Column(Boolean, default=False)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
read: Mapped[bool] = mapped_column(default=False)
created_utc: Mapped[int]
comment = relationship("Comment")
user = relationship("User")

View File

@ -2,7 +2,8 @@ import time
from flask import g, abort
import requests
from sqlalchemy import Column, or_
from sqlalchemy import or_
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -13,13 +14,13 @@ from files.helpers.config.const import *
class Orgy(Base):
__tablename__ = "orgies"
created_utc = Column(Integer, primary_key=True)
type = Column(String)
data = Column(String)
title = Column(String)
start_utc = Column(Integer)
end_utc = Column(Integer)
started = Column(Boolean, default=False)
created_utc: Mapped[int] = mapped_column(primary_key=True)
type: Mapped[str]
data: Mapped[str]
title: Mapped[str]
start_utc: Mapped[int]
end_utc: Mapped[int]
started: Mapped[bool] = mapped_column(default=False)
def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -10,11 +10,11 @@ from files.helpers.lazy import lazy
class PostOption(Base):
__tablename__ = "post_options"
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey("posts.id"))
body_html = Column(Text)
exclusive = Column(Integer)
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
parent_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
body_html: Mapped[str] = mapped_column(Text)
exclusive: Mapped[int]
created_utc: Mapped[int]
votes = relationship("PostOptionVote")
parent = relationship("Post", back_populates="options")
@ -40,10 +40,10 @@ class PostOptionVote(Base):
__tablename__ = "post_option_votes"
option_id = Column(Integer, ForeignKey("post_options.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer)
post_id = Column(Integer, ForeignKey("posts.id"))
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)
created_utc: Mapped[int]
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"))
user = relationship("User")
@ -59,11 +59,11 @@ class CommentOption(Base):
__tablename__ = "comment_options"
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey("comments.id"))
body_html = Column(Text)
exclusive = Column(Integer)
created_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
parent_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
body_html: Mapped[str] = mapped_column(Text)
exclusive: Mapped[int]
created_utc: Mapped[int]
votes = relationship("CommentOptionVote")
parent = relationship("Comment", back_populates="options")
@ -89,10 +89,10 @@ class CommentOptionVote(Base):
__tablename__ = "comment_option_votes"
option_id = Column(Integer, ForeignKey("comment_options.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer)
comment_id = Column(Integer, ForeignKey("comments.id"))
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)
created_utc: Mapped[int]
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"))
user = relationship("User")

View File

@ -3,8 +3,8 @@ import time
from urllib.parse import urlparse
from flask import g
from sqlalchemy import Column, FetchedValue, ForeignKey
from sqlalchemy.orm import deferred, relationship
from sqlalchemy import FetchedValue, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -25,57 +25,57 @@ from .saves import SaveRelationship
class Post(Base):
__tablename__ = "posts"
id = Column(Integer, primary_key=True)
author_id = Column(Integer, ForeignKey("users.id"))
edited_utc = Column(Integer, default=0)
created_utc = Column(Integer)
thumburl = Column(String)
posterurl = Column(String)
is_banned = Column(Boolean, default=False)
bannedfor = Column(String)
chuddedfor = Column(String)
ghost = Column(Boolean, default=False)
effortpost = Column(Boolean, default=False)
views = Column(Integer, default=0)
deleted_utc = Column(Integer, default=0)
distinguished = Column(Boolean, default=False)
stickied = Column(String)
stickied_utc = Column(Integer)
hole_pinned = Column(String)
hole = Column(String, ForeignKey("holes.name"))
is_pinned = Column(Boolean, default=False)
private = Column(Boolean, default=False)
comment_count = Column(Integer, default=0)
is_approved = Column(Integer, ForeignKey("users.id"))
is_bot = Column(Boolean, default=False)
upvotes = Column(Integer, default=1)
downvotes = Column(Integer, default=0)
realupvotes = Column(Integer, default=1)
app_id = Column(Integer, ForeignKey("oauth_apps.id"))
title = Column(String)
title_html = Column(String)
url = Column(String)
body = Column(String)
body_html = Column(String)
flair = Column(String)
ban_reason = Column(String)
embed = Column(String)
new = Column(Boolean)
notify = Column(Boolean)
chudded = Column(Boolean, default=False)
rainbowed = Column(Boolean, default=False)
queened = Column(Boolean, default=False)
sharpened = Column(Boolean, default=False)
ping_cost = Column(Integer, default=0)
bump_utc = Column(Integer)
id: Mapped[int] = mapped_column(primary_key=True)
author_id: Mapped[int] = mapped_column(ForeignKey("users.id"))
edited_utc: Mapped[int] = mapped_column(default=0)
created_utc: Mapped[int]
thumburl: Mapped[str]
posterurl: Mapped[str]
is_banned: Mapped[bool] = mapped_column(default=False)
bannedfor: Mapped[str]
chuddedfor: Mapped[str]
ghost: Mapped[bool] = mapped_column(default=False)
effortpost: Mapped[bool] = mapped_column(default=False)
views: Mapped[int] = mapped_column(default=0)
deleted_utc: Mapped[int] = mapped_column(default=0)
distinguished: Mapped[bool] = mapped_column(default=False)
stickied: Mapped[str]
stickied_utc: Mapped[int]
hole_pinned: Mapped[str]
hole: Mapped[str] = mapped_column(ForeignKey("holes.name"))
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[int] = mapped_column(ForeignKey("users.id"))
is_bot: Mapped[bool] = mapped_column(default=False)
upvotes: Mapped[int] = mapped_column(default=1)
downvotes: Mapped[int] = mapped_column(default=0)
realupvotes: Mapped[int] = mapped_column(default=1)
app_id: Mapped[int] = mapped_column(ForeignKey("oauth_apps.id"))
title: Mapped[str]
title_html: Mapped[str]
url: Mapped[str]
body: Mapped[str]
body_html: Mapped[str]
flair: Mapped[str]
ban_reason: Mapped[str]
embed: Mapped[str]
new: Mapped[bool]
notify: Mapped[bool]
chudded: Mapped[bool] = mapped_column(default=False)
rainbowed: Mapped[bool] = mapped_column(default=False)
queened: Mapped[bool] = mapped_column(default=False)
sharpened: Mapped[bool] = mapped_column(default=False)
ping_cost: Mapped[int] = mapped_column(default=0)
bump_utc: Mapped[int]
if FEATURES['NSFW_MARKING']:
nsfw = Column(Boolean, default=False)
nsfw: Mapped[bool] = mapped_column(default=False)
else:
nsfw = False
if SITE_NAME == 'WPD':
cw = Column(Boolean, default=False)
cw: Mapped[bool] = mapped_column(default=False)
author = relationship("User", primaryjoin="Post.author_id==User.id")
oauth_app = relationship("OauthApp")

View File

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

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -11,10 +11,10 @@ from files.helpers.slurs_and_profanities import censor_slurs_profanities
class Report(Base):
__tablename__ = "reports"
post_id = Column(Integer, ForeignKey("posts.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
reason = Column(String)
created_utc = Column(Integer)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
reason: Mapped[str]
created_utc: Mapped[int]
user = relationship("User", primaryjoin = "Report.user_id == User.id", uselist = False)
@ -39,10 +39,10 @@ class Report(Base):
class CommentReport(Base):
__tablename__ = "commentreports"
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
reason = Column(String)
created_utc = Column(Integer)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
reason: Mapped[str]
created_utc: Mapped[int]
user = relationship("User", primaryjoin = "CommentReport.user_id == User.id", uselist = False)

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -9,9 +9,9 @@ from files.classes import Base
class SaveRelationship(Base):
__tablename__ = "save_relationship"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
post_id = Column(Integer, ForeignKey("posts.id"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
created_utc: Mapped[int]
post = relationship("Post", uselist=False)
@ -27,9 +27,9 @@ class CommentSaveRelationship(Base):
__tablename__ = "comment_save_relationship"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
created_utc: Mapped[int]
comment = relationship("Comment", uselist=False)

View File

@ -1,16 +1,16 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class Subscription(Base):
__tablename__ = "subscriptions"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
post_id = Column(Integer, ForeignKey("posts.id"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
created_utc: Mapped[int]
user = relationship("User", uselist=False)
post = relationship("Post", uselist=False)

View File

@ -1,16 +1,16 @@
from sqlalchemy import Column
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class Transaction(Base):
__tablename__ = "transactions"
id = Column(String, primary_key=True)
created_utc = Column(Integer)
type = Column(String)
amount = Column(Integer)
email = Column(String)
claimed = Column(Boolean)
id: Mapped[str] = mapped_column(primary_key=True)
created_utc: Mapped[int]
type: Mapped[str]
amount: Mapped[int]
email: Mapped[str]
claimed: Mapped[bool]
def __repr__(self):
return f"<{self.__class__.__name__}(id={self.id})>"

View File

@ -2,8 +2,8 @@ import random
from operator import *
import pyotp
from sqlalchemy import Column, ForeignKey, FetchedValue
from sqlalchemy.orm import aliased, deferred, Query
from sqlalchemy import ForeignKey, FetchedValue
from sqlalchemy.orm import Mapped, Query, aliased, deferred, mapped_column
from sqlalchemy.sql import case, func, literal
from sqlalchemy.sql.expression import not_, and_, or_
from sqlalchemy.sql.sqltypes import *
@ -49,106 +49,106 @@ else:
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String)
namecolor = Column(String, default=DEFAULT_COLOR)
background = Column(String)
profile_background = Column(String)
flair = deferred(Column(String))
flair_html = Column(String)
flaircolor = Column(String, default=DEFAULT_COLOR)
theme = Column(String, default=DEFAULT_THEME)
themecolor = Column(String, default=DEFAULT_COLOR)
song = Column(String)
highres = Column(String)
profileurl = Column(String)
bannerurl = Column(String)
house = Column(String, default='')
old_house = Column(String, default='')
patron = Column(Integer, default=0)
patron_utc = Column(Integer, default=0)
verified = Column(String)
verifiedcolor = Column(String)
hieroglyphs = Column(Integer, default=0)
rehab = Column(Integer, default=0)
longpost = Column(Integer, default=0)
bird = Column(Integer, default=0)
email = deferred(Column(String))
css = Column(String)
profilecss = deferred(Column(String))
passhash = deferred(Column(String))
post_count = Column(Integer, default=0)
comment_count = Column(Integer, default=0)
received_award_count = Column(Integer, default=0)
created_utc = Column(Integer)
admin_level = Column(Integer, default=DEFAULT_ADMIN_LEVEL)
last_active = Column(Integer)
coins_spent = Column(Integer, default=0)
coins_spent_on_hats = Column(Integer, default=0)
lootboxes_bought = Column(Integer, default=0)
chud = Column(Integer, default=0)
queen = Column(Integer, default=0)
chud_phrase = Column(String)
email_verified = Column(Boolean, default=False)
shadowbanned = Column(Integer, ForeignKey("users.id"))
chudded_by = Column(Integer, ForeignKey("users.id"))
slurreplacer = Column(Integer, default=1)
profanityreplacer = Column(Integer, default=1)
flairchanged = Column(Integer, default=0)
namechanged = Column(Integer, default=0)
newtab = Column(Boolean, default=False)
newtabexternal = Column(Boolean, default=True)
frontsize = Column(Integer, default=25)
bio = deferred(Column(String))
bio_html = Column(String)
sig = deferred(Column(String))
sig_html = Column(String)
show_sigs = Column(Boolean, default=True)
progressivestack = Column(Integer, default=0)
deflector = Column(Integer, default=0)
friends = deferred(Column(String))
friends_html = deferred(Column(String))
enemies = deferred(Column(String))
enemies_html = deferred(Column(String))
is_banned = Column(Integer, ForeignKey("users.id"))
unban_utc = Column(Integer)
ban_reason = deferred(Column(String))
shadowban_reason = deferred(Column(String))
is_muted = Column(Boolean, default=False)
login_nonce = Column(Integer, default=0)
coins = Column(Integer, default=DEFAULT_COINS)
truescore = Column(Integer, default=0)
marseybux = Column(Integer, default=DEFAULT_MARSEYBUX)
mfa_secret = deferred(Column(String))
is_private = Column(Boolean, default=False)
stored_subscriber_count = Column(Integer, default=0)
defaultsortingcomments = Column(String, default="hot")
defaultsorting = Column(String, default="hot")
defaulttime = Column(String, default=DEFAULT_TIME_FILTER)
custom_filter_list = Column(String)
original_username = Column(String)
extra_username = Column(String)
prelock_username = Column(String)
referred_by = Column(Integer, ForeignKey("users.id"))
currently_held_lottery_tickets = Column(Integer, default=0)
total_held_lottery_tickets = Column(Integer, default=0)
total_lottery_winnings = Column(Integer, default=0)
last_viewed_modmail_notifs = Column(Integer, default=0)
last_viewed_post_notifs = Column(Integer, default=0)
last_viewed_log_notifs = Column(Integer, default=0)
last_viewed_offsite_notifs = Column(Integer, default=0)
bite = Column(Integer, default=0)
owoify = Column(Integer, default=0)
sharpen = Column(Integer, default=0)
marsify = Column(Integer, default=0)
rainbow = Column(Integer, default=0)
spider = Column(Integer, default=0)
lifetimedonated = Column(Integer, default=0)
lifetimedonated_visible = Column(Boolean, default=False)
blacklisted_by = Column(Integer, ForeignKey("users.id"))
grinch = Column(Boolean, 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 = Column(Boolean, default=False)
effortpost_notifs = Column(Boolean, default=False)
id: Mapped[int] = mapped_column(primary_key=True)
username: Mapped[str]
namecolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
background: Mapped[str]
profile_background: Mapped[str]
flair: Mapped[str] = mapped_column(deferred=True)
flair_html: Mapped[str]
flaircolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
theme: Mapped[str] = mapped_column(default=DEFAULT_THEME)
themecolor: Mapped[str] = mapped_column(default=DEFAULT_COLOR)
song: Mapped[str]
highres: Mapped[str]
profileurl: Mapped[str]
bannerurl: Mapped[str]
house: Mapped[str] = mapped_column(default='')
old_house: Mapped[str] = mapped_column(default='')
patron: Mapped[int] = mapped_column(default=0)
patron_utc: Mapped[int] = mapped_column(default=0)
verified: Mapped[str]
verifiedcolor: Mapped[str]
hieroglyphs: Mapped[int] = mapped_column(default=0)
rehab: Mapped[int] = mapped_column(default=0)
longpost: Mapped[int] = mapped_column(default=0)
bird: Mapped[int] = mapped_column(default=0)
email: Mapped[str] = mapped_column(deferred=True)
css: Mapped[str]
profilecss: Mapped[str] = mapped_column(deferred=True)
passhash: Mapped[str] = mapped_column(deferred=True)
post_count: Mapped[int] = mapped_column(default=0)
comment_count: Mapped[int] = mapped_column(default=0)
received_award_count: Mapped[int] = mapped_column(default=0)
created_utc: Mapped[int]
admin_level: Mapped[int] = mapped_column(default=DEFAULT_ADMIN_LEVEL)
last_active: Mapped[int]
coins_spent: Mapped[int] = mapped_column(default=0)
coins_spent_on_hats: Mapped[int] = mapped_column(default=0)
lootboxes_bought: Mapped[int] = mapped_column(default=0)
chud: Mapped[int] = mapped_column(default=0)
queen: Mapped[int] = mapped_column(default=0)
chud_phrase: Mapped[str]
email_verified: Mapped[bool] = mapped_column(default=False)
shadowbanned: Mapped[int] = mapped_column(ForeignKey("users.id"))
chudded_by: Mapped[int] = mapped_column(ForeignKey("users.id"))
slurreplacer: Mapped[int] = mapped_column(default=1)
profanityreplacer: Mapped[int] = mapped_column(default=1)
flairchanged: Mapped[int] = mapped_column(default=0)
namechanged: Mapped[int] = mapped_column(default=0)
newtab: Mapped[bool] = mapped_column(default=False)
newtabexternal: Mapped[bool] = mapped_column(default=True)
frontsize: Mapped[int] = mapped_column(default=25)
bio: Mapped[str] = mapped_column(deferred=True)
bio_html: Mapped[str]
sig: Mapped[str] = mapped_column(deferred=True)
sig_html: Mapped[str]
show_sigs: Mapped[bool] = mapped_column(default=True)
progressivestack: Mapped[int] = mapped_column(default=0)
deflector: Mapped[int] = mapped_column(default=0)
friends: Mapped[str] = mapped_column(deferred=True)
friends_html: Mapped[str] = mapped_column(deferred=True)
enemies: Mapped[str] = mapped_column(deferred=True)
enemies_html: Mapped[str] = mapped_column(deferred=True)
is_banned: Mapped[int] = mapped_column(ForeignKey("users.id"))
unban_utc: Mapped[int]
ban_reason: Mapped[str] = mapped_column(deferred=True)
shadowban_reason: Mapped[str] = mapped_column(deferred=True)
is_muted: Mapped[bool] = mapped_column(default=False)
login_nonce: Mapped[int] = mapped_column(default=0)
coins: Mapped[int] = mapped_column(default=DEFAULT_COINS)
truescore: Mapped[int] = mapped_column(default=0)
marseybux: Mapped[int] = mapped_column(default=DEFAULT_MARSEYBUX)
mfa_secret: Mapped[str] = mapped_column(deferred=True)
is_private: Mapped[bool] = mapped_column(default=False)
stored_subscriber_count: Mapped[int] = mapped_column(default=0)
defaultsortingcomments: Mapped[str] = mapped_column(default="hot")
defaultsorting: Mapped[str] = mapped_column(default="hot")
defaulttime: Mapped[str] = mapped_column(default=DEFAULT_TIME_FILTER)
custom_filter_list: Mapped[str]
original_username: Mapped[str]
extra_username: Mapped[str]
prelock_username: Mapped[str]
referred_by: Mapped[int] = mapped_column(ForeignKey("users.id"))
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)
last_viewed_modmail_notifs: Mapped[int] = mapped_column(default=0)
last_viewed_post_notifs: Mapped[int] = mapped_column(default=0)
last_viewed_log_notifs: Mapped[int] = mapped_column(default=0)
last_viewed_offsite_notifs: Mapped[int] = mapped_column(default=0)
bite: Mapped[int] = mapped_column(default=0)
owoify: Mapped[int] = mapped_column(default=0)
sharpen: Mapped[int] = mapped_column(default=0)
marsify: Mapped[int] = mapped_column(default=0)
rainbow: Mapped[int] = mapped_column(default=0)
spider: Mapped[int] = mapped_column(default=0)
lifetimedonated: Mapped[int] = mapped_column(default=0)
lifetimedonated_visible: Mapped[bool] = mapped_column(default=False)
blacklisted_by: Mapped[int] = mapped_column(ForeignKey("users.id"))
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)
if SITE_NAME == 'WPD':
nitter = False
@ -158,22 +158,22 @@ class User(Base):
pronouns = 'they/them'
earlylife = 0
hole_creation_notifs = False
hidevotedon = Column(Boolean, default=False)
hide_cw = Column(Boolean, default=False)
hidevotedon: Mapped[bool] = mapped_column(default=False)
hide_cw: Mapped[bool] = mapped_column(default=False)
else:
nitter = Column(Boolean, default=False)
imgsed = Column(Boolean, default=False)
controversial = Column(Boolean, default=False)
reddit = Column(String, default='old.reddit.com')
pronouns = Column(String, default='they/them')
earlylife = Column(Integer, default=0)
hole_creation_notifs = Column(Boolean, default=True)
nitter: Mapped[bool] = mapped_column(default=False)
imgsed: Mapped[bool] = mapped_column(default=False)
controversial: Mapped[bool] = mapped_column(default=False)
reddit: Mapped[str] = mapped_column(default='old.reddit.com')
pronouns: Mapped[str] = mapped_column(default='they/them')
earlylife: Mapped[int] = mapped_column(default=0)
hole_creation_notifs: Mapped[bool] = mapped_column(default=True)
hidevotedon = False
hide_cw = False
if IS_HOMOWEEN():
zombie = Column(Integer, default=0) # > 0 vaxxed; < 0 zombie
jumpscare = Column(Integer, default=0)
zombie: Mapped[int] = mapped_column(default=0) # > 0 vaxxed; < 0 zombie
jumpscare: Mapped[int] = mapped_column(default=0)
badges = relationship("Badge", order_by="Badge.created_utc", back_populates="user")
subscriptions = relationship("Subscription", back_populates="user")

View File

@ -1,16 +1,16 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class UserBlock(Base):
__tablename__ = "userblocks"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==UserBlock.user_id", back_populates="blocking")
target = relationship("User", primaryjoin="User.id==UserBlock.target_id", back_populates="blocked")

View File

@ -1,16 +1,16 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
class UserMute(Base):
__tablename__ = "usermutes"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==UserMute.user_id")
target = relationship("User", primaryjoin="User.id==UserMute.target_id")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -11,10 +11,10 @@ from files.helpers.sorting_and_time import make_age_string
class ViewerRelationship(Base):
__tablename__ = "viewers"
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
viewer_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
last_view_utc = Column(Integer)
created_utc = Column(Integer)
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
viewer_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True)
last_view_utc: Mapped[int]
created_utc: Mapped[int]
viewer = relationship("User", primaryjoin="ViewerRelationship.viewer_id == User.id")

View File

@ -1,7 +1,7 @@
import time
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.sqltypes import *
from files.classes import Base
@ -10,12 +10,12 @@ from files.helpers.lazy import lazy
class Vote(Base):
__tablename__ = "votes"
post_id = Column(Integer, ForeignKey("posts.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
vote_type = Column(Integer)
real = Column(Boolean, default=True)
coins = Column(Integer, default=1)
created_utc = Column(Integer)
post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
vote_type: Mapped[int]
real: Mapped[bool] = mapped_column(default=True)
coins: Mapped[int] = mapped_column(default=1)
created_utc: Mapped[int]
user = relationship("User")
@ -40,12 +40,12 @@ class CommentVote(Base):
__tablename__ = "commentvotes"
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
vote_type = Column(Integer)
real = Column(Boolean, default=True)
coins = Column(Integer, default=1)
created_utc = Column(Integer)
comment_id: Mapped[int] = mapped_column(ForeignKey("comments.id"), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
vote_type: Mapped[int]
real: Mapped[bool] = mapped_column(default=True)
coins: Mapped[int] = mapped_column(default=1)
created_utc: Mapped[int]
user = relationship("User")