Files
TextSouls/backend/textsouls/users/models.py
2022-11-21 22:47:23 +03:00

86 lines
2.3 KiB
Python

import datetime
from sqlalchemy_serializer import SerializerMixin
from textsouls import db
class User(db.Model, SerializerMixin):
__tablename__ = "users"
serialize_rules = ("-character",)
id = db.Column(db.BigInteger, primary_key=True, autoincrement=False)
chat_id = db.Column(db.BigInteger, nullable=False, unique=True)
first_name = db.Column(db.String(255), nullable=True)
last_name = db.Column(db.String(255), nullable=True)
username = db.Column(db.String(255), nullable=False)
registered_on = db.Column(
db.DateTime, nullable=False, default=datetime.datetime.now()
)
is_admin = db.Column(db.Boolean, nullable=False, default=False)
characters = db.relationship("Character", backref="user", lazy="dynamic")
destinations = db.relationship(
"SendlistDestination", backref="sendlist", lazy="dynamic"
)
def __str__(self):
return f"{self.id}: {self.username}"
class Sendlist(db.Model, SerializerMixin):
__tablename__ = "sendlists"
serialize_rules = ("-destination",)
id = db.Column(db.BigInteger, primary_key=True)
message = db.Column(db.String(255), nullable=True)
destinations = db.relationship(
"SendlistDestination", backref="sendlist", lazy="dynamic"
)
def __str__(self):
return f"{self.message[:12]}..."
class SendlistDestinationStatus(db.Model, SerializerMixin):
__tablename__ = "sendlists_destionations_statuses"
serialize_rules = ("-destination",)
id = db.Column(db.BigInteger, primary_key=True)
name = db.Column(db.String(255), nullable=False)
destinations = db.relationship(
"SendlistDestination",
backref="status",
lazy="dynamic",
)
def __str__(self):
return self.name
class SendlistDestination(db.Model, SerializerMixin):
__tablename__ = "sendlists_destionations"
id = db.Column(db.BigInteger, primary_key=True)
sendlist_id = db.Column(
db.Integer,
db.ForeignKey("sendlists.id", ondelete="CASCADE"),
)
user_id = db.Column(
db.BigInteger,
db.ForeignKey("users.id", ondelete="CASCADE"),
)
status_id = db.Column(
db.Integer,
db.ForeignKey("sendlists_destionations_types.id", ondelete="CASCADE"),
)
def __str__(self):
return f"{self.message[:12]}..."