from . import db from flask_login import UserMixin from sqlalchemy.sql import func from dataclasses import dataclass from sqlalchemy_serializer import SerializerMixin @dataclass class User(db.Model, UserMixin, SerializerMixin): serialize_only = ("id", "first_name", "email", "stoliki", "location", "cousine") serialize_rules = ("-stoliki.user_id", ) id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(150), unique=True) password = db.Column(db.String(150)) first_name = db.Column(db.String(150)) location = db.Column(db.String(30)) cousine = db.Column(db.String(30)) # link_facebook = db.Column(db.String(100)) # link_instagram = db.Column(db.String(100)) stoliki = db.relationship('Stolik', back_populates='user') @dataclass class Stolik(db.Model, SerializerMixin): serialize_only = ("size", "queue_count") id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) size = db.Column(db.Integer) queue = db.relationship('Klient', lazy=True) #queue_length = len(queue) current_number = db.Column(db.Integer) user = db.relationship('User', back_populates='stoliki') @property def queue_count(self): return len(self.queue) def __init__(self, user_id, size): self.user_id = user_id self.size = size self.current_number = 0 class Klient(db.Model, SerializerMixin): id = db.Column(db.Integer, primary_key=True) table_id = db.Column(db.Integer, db.ForeignKey('stolik.id')) last_name = db.Column(db.String(50)) phone_number = db.Column(db.String(9)) uniqe_code = db.Column(db.String(10)) def __init__(self, table_id, last_name, phone_number, uniqe_code): self.table_id = table_id self.last_name = last_name self.phone_number = phone_number self.uniqe_code = uniqe_code