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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,15 +1,15 @@
import time import time
from sqlalchemy import 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
class BannedDomain(Base): class BannedDomain(Base):
__tablename__ = "banneddomains" __tablename__ = "banneddomains"
domain = Column(String, primary_key=True) domain: Mapped[str] = mapped_column(primary_key=True)
reason = Column(String) reason: Mapped[str]
created_utc = Column(Integer) created_utc: Mapped[int]
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())

View File

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

View File

@ -1,16 +1,16 @@
import time import time
from sqlalchemy import Column, ForeignKey from sqlalchemy import ForeignKey
from sqlalchemy.orm import 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
class Follow(Base): class Follow(Base):
__tablename__ = "follows" __tablename__ = "follows"
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True) target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", back_populates="following") 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") target = relationship("User", uselist=False, primaryjoin="User.id==Follow.target_id", back_populates="followers")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,17 +1,17 @@
import time import time
from sqlalchemy import Column, ForeignKey from sqlalchemy import ForeignKey
from sqlalchemy.orm import 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
class IPLog(Base): class IPLog(Base):
__tablename__ = "ip_logs" __tablename__ = "ip_logs"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
ip = Column(String, primary_key=True) ip: Mapped[str] = mapped_column(primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
last_used = Column(Integer) last_used: Mapped[int]
user = relationship("User") user = relationship("User")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,16 +1,16 @@
import time import time
from sqlalchemy import Column, ForeignKey from sqlalchemy import ForeignKey
from sqlalchemy.orm import 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
class Subscription(Base): class Subscription(Base):
__tablename__ = "subscriptions" __tablename__ = "subscriptions"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
post_id = Column(Integer, ForeignKey("posts.id"), primary_key=True) post_id: Mapped[int] = mapped_column(ForeignKey("posts.id"), primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
user = relationship("User", uselist=False) user = relationship("User", uselist=False)
post = relationship("Post", 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 sqlalchemy.sql.sqltypes import *
from files.classes import Base from files.classes import Base
class Transaction(Base): class Transaction(Base):
__tablename__ = "transactions" __tablename__ = "transactions"
id = Column(String, primary_key=True) id: Mapped[str] = mapped_column(primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
type = Column(String) type: Mapped[str]
amount = Column(Integer) amount: Mapped[int]
email = Column(String) email: Mapped[str]
claimed = Column(Boolean) claimed: Mapped[bool]
def __repr__(self): def __repr__(self):
return f"<{self.__class__.__name__}(id={self.id})>" return f"<{self.__class__.__name__}(id={self.id})>"

View File

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

View File

@ -1,16 +1,16 @@
import time import time
from sqlalchemy import Column, ForeignKey from sqlalchemy import ForeignKey
from sqlalchemy.orm import 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
class UserBlock(Base): class UserBlock(Base):
__tablename__ = "userblocks" __tablename__ = "userblocks"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True) target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==UserBlock.user_id", back_populates="blocking") user = relationship("User", primaryjoin="User.id==UserBlock.user_id", back_populates="blocking")
target = relationship("User", primaryjoin="User.id==UserBlock.target_id", back_populates="blocked") target = relationship("User", primaryjoin="User.id==UserBlock.target_id", back_populates="blocked")

View File

@ -1,16 +1,16 @@
import time import time
from sqlalchemy import Column, ForeignKey from sqlalchemy import ForeignKey
from sqlalchemy.orm import 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
class UserMute(Base): class UserMute(Base):
__tablename__ = "usermutes" __tablename__ = "usermutes"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True) target_id: Mapped[int] = mapped_column(ForeignKey("users.id"), primary_key=True)
created_utc = Column(Integer) created_utc: Mapped[int]
user = relationship("User", primaryjoin="User.id==UserMute.user_id") user = relationship("User", primaryjoin="User.id==UserMute.user_id")
target = relationship("User", primaryjoin="User.id==UserMute.target_id") target = relationship("User", primaryjoin="User.id==UserMute.target_id")

View File

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

View File

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