83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
# sqlalchemy
|
|
from sqlalchemy.orm import declarative_base
|
|
from sqlalchemy import (
|
|
Column,
|
|
Integer,
|
|
String,
|
|
BIGINT,
|
|
VARCHAR,
|
|
Boolean,
|
|
DateTime,
|
|
SmallInteger,
|
|
ARRAY,
|
|
DOUBLE_PRECISION,
|
|
Enum,
|
|
Numeric,
|
|
Text,
|
|
)
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
# types
|
|
from database.db_types import *
|
|
|
|
|
|
# init baseModel
|
|
BaseModel = declarative_base()
|
|
|
|
|
|
class User(BaseModel):
|
|
|
|
__tablename__ = "users"
|
|
|
|
user_id = Column(BIGINT, primary_key=True)
|
|
username = Column(VARCHAR(33), nullable=True)
|
|
fullname = Column(VARCHAR(128), nullable=False)
|
|
register_date = Column(DateTime(timezone=True), nullable=False)
|
|
|
|
|
|
class Admin(BaseModel):
|
|
|
|
__tablename__ = "admins"
|
|
|
|
user_id = Column(BIGINT, primary_key=True)
|
|
username = Column(VARCHAR(33), nullable=True)
|
|
fullname = Column(VARCHAR(128), nullable=False)
|
|
|
|
|
|
class Blacklist(BaseModel):
|
|
|
|
__tablename__ = "blacklist"
|
|
|
|
user_id = Column(BIGINT, primary_key=True)
|
|
|
|
|
|
class Setting(BaseModel):
|
|
|
|
__tablename__ = "settings"
|
|
|
|
name = Column(String, primary_key=True)
|
|
value = Column(JSONB, nullable=True)
|
|
|
|
|
|
class Payment(BaseModel):
|
|
|
|
__tablename__ = "payments"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
order_id = Column(VARCHAR(64), unique=True, nullable=False, index=True)
|
|
user_id = Column(BIGINT, nullable=False, index=True)
|
|
amount = Column(Numeric(12, 2), nullable=False)
|
|
currency = Column(VARCHAR(3), nullable=False, default="RUB")
|
|
description = Column(VARCHAR(255), nullable=True)
|
|
status = Column(VARCHAR(32), nullable=False, default="created")
|
|
payment_link_id = Column(VARCHAR(36), nullable=True)
|
|
payment_url = Column(Text, nullable=True)
|
|
payment_link_status = Column(VARCHAR(32), nullable=True)
|
|
transaction_id = Column(VARCHAR(36), nullable=True)
|
|
transaction_status = Column(VARCHAR(32), nullable=True)
|
|
error_code = Column(VARCHAR(64), nullable=True)
|
|
error_description = Column(Text, nullable=True)
|
|
created_at = Column(DateTime(timezone=True), nullable=False)
|
|
updated_at = Column(DateTime(timezone=True), nullable=False)
|
|
paid_at = Column(DateTime(timezone=True), nullable=True)
|