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