remake了所有的models:(

This commit is contained in:
高子兴 2024-11-19 18:31:20 +08:00
parent 9aa9d744cf
commit c3101a8219

View File

@ -1,51 +1,41 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# @Time : 2024/11/18 下午7:00 # @Time : 2024/11/19 下午6:09
# @Author : 河瞬 # @Author : 河瞬
# @FileName: models.py # @FileName: new_models.py
# @Software: PyCharm # @Software: PyCharm
from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey, Text
from sqlalchemy.orm import relationship, sessionmaker, declarative_base
from datetime import datetime from datetime import datetime
from typing import List, Optional
# 创建基类 from sqlmodel import Field, Relationship, SQLModel, DateTime
Base = declarative_base()
class Tenant(Base): class Tenant(SQLModel, table=True):
__tablename__ = 'Tenant' __tablename__ = 'Tenant'
id = Column(Integer, primary_key=True) id: Optional[int] = Field(default=None, primary_key=True)
name = Column(String(100), nullable=False) name: str = Field(index=True)
users = relationship('User', back_populates='tenant', cascade='all, delete-orphan') users: List["User"] = Relationship(back_populates="tenant")
projects = relationship('Project', back_populates='owner', cascade='all, delete-orphan') projects: List["Project"] = Relationship(back_populates="owner")
class User(Base): class User(SQLModel, table=True):
__tablename__ = 'User' __tablename__ = 'User'
id = Column(Integer, primary_key=True) id: Optional[int] = Field(default=None, primary_key=True)
username = Column(String(100), nullable=False) username: str = Field(index=True)
password = Column(String(100), nullable=False) password: str
role = Column(Integer, nullable=False) # 0: 超级管理员 1租户管理员 2评估员 3审核员 role: int
tenant_id = Column(Integer, ForeignKey('Tenant.id'), nullable=False) tenant_id: int = Field(default=None, foreign_key="Tenant.id")
tenant = relationship('Tenant', back_populates='users') tenant: Tenant = Relationship(back_populates="users")
projects: List["Project"] = Relationship(back_populates="estimators")
class Project(Base): class Project(SQLModel, table=True):
__tablename__ = 'Project' __tablename__ = 'Project'
id = Column(Integer, primary_key=True) id: Optional[int] = Field(default=None, primary_key=True)
name = Column(String(100), nullable=False) name: str = Field(index=True)
requirement = Column(String(200), nullable=True) requirement: str
start_time = Column(DateTime, nullable=False, default=datetime.utcnow) owner_id: int = Field(default=None, foreign_key="Tenant.id")
deadline = Column(DateTime, nullable=False) owner: Tenant = Relationship(back_populates="projects")
owner_id = Column(Integer, ForeignKey('Tenant.id'), nullable=False) start_time: DateTime = Field(default=datetime.utcnow)
owner = relationship('Tenant', back_populates='projects') deadline: DateTime
estimators: List["User"] = Relationship(back_populates="projects")
auditors: List["User"] = Relationship(back_populates="projects")
if __name__ == "__main__":
# 创建数据库引擎
engine = create_engine('sqlite:///test.db')
# 创建所有表
Base.metadata.create_all(engine)
# 创建会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)