mirror of
https://github.com/Balshgit/different
synced 2025-09-11 02:50:41 +03:00
63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
import datetime
|
|
|
|
from sqlalchemy_study.sqlalchemy import Column, String, DateTime, ForeignKey
|
|
from sqlalchemy_study.sqlalchemy import VARCHAR
|
|
from sqlalchemy_study.sqlalchemy import relationship
|
|
|
|
from db.base import BaseModel
|
|
from db.models.coin import Coin
|
|
|
|
|
|
class User(BaseModel):
|
|
__tablename__ = 'users'
|
|
|
|
username: str = Column(String(255), unique=True)
|
|
email: str = Column(String(255), index=True, unique=True, nullable=True)
|
|
hash_password: str = Column(String(255))
|
|
auth_token: str = Column(String(255))
|
|
last_login: datetime.datetime = Column(DateTime, default=datetime.datetime.now, index=True)
|
|
|
|
def __repr__(self):
|
|
return f'User: id:{self.id}, name: {self.username}'
|
|
|
|
employee = relationship('Employee',
|
|
primaryjoin='foreign(User.id)==remote(Employee.id)',
|
|
lazy='noload',
|
|
backref='user_employee',
|
|
)
|
|
|
|
|
|
class Employee(BaseModel):
|
|
__tablename__ = 'employees'
|
|
|
|
first_name = Column(VARCHAR(128), nullable=False)
|
|
last_name = Column(VARCHAR(128), nullable=False)
|
|
phone = Column(VARCHAR(30), unique=True, nullable=True)
|
|
description = Column(VARCHAR(255), nullable=True)
|
|
coin_id = Column('coin_id', ForeignKey('coins.id', ondelete='SET NULL'), nullable=True)
|
|
|
|
coin = relationship(Coin,
|
|
back_populates='employee',
|
|
primaryjoin='Employee.coin_id==Coin.id',
|
|
lazy='noload',
|
|
uselist=False,
|
|
)
|
|
|
|
skills = relationship('Skill',
|
|
secondary="employees_skills",
|
|
lazy='noload',
|
|
uselist=True,
|
|
)
|
|
|
|
department = relationship('EmployeeDepartments',
|
|
lazy='noload',
|
|
backref='employee',
|
|
uselist=False,
|
|
)
|
|
|
|
user = relationship('User',
|
|
primaryjoin='foreign(Employee.id)==remote(User.id)',
|
|
lazy='raise',
|
|
backref='user_employee',
|
|
)
|