format .
This commit is contained in:
@@ -1,22 +1,85 @@
|
||||
from sqlmodel import SQLModel, Field, Column, JSON
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import JSON, Column, DateTime, func
|
||||
from sqlmodel import JSON, Field, SQLModel
|
||||
|
||||
|
||||
class Department(SQLModel, table = True):
|
||||
did: int = Field(default=None, primary_key=True)
|
||||
class TenantTimeMixin(SQLModel):
|
||||
tenant_id: int = Field(index=True, description="租户ID")
|
||||
|
||||
created_at: datetime = Field(
|
||||
sa_column=Column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
)
|
||||
|
||||
updated_at: datetime = Field(
|
||||
sa_column=Column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
onupdate=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Department(TenantTimeMixin, SQLModel, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
dname: str = Field(max_length=100)
|
||||
name_en: str = Field(max_length=100)
|
||||
department_leader: list[int] = Field(default=[], sa_column=Column(JSON))
|
||||
parent_id: int = Field(default=0)
|
||||
|
||||
department_leader: list[int] = Field(default_factory=list, sa_column=Column(JSON))
|
||||
|
||||
parent_id: int = Field(default=0, index=True)
|
||||
order: int = Field(default=0)
|
||||
|
||||
class Employee(SQLModel, table = True):
|
||||
userid: int = Field(default=None, primary_key=True)
|
||||
|
||||
class Employee(TenantTimeMixin, SQLModel, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
ename: str = Field(max_length=100)
|
||||
dept_id: int = Field(foreign_key='Department.did')
|
||||
open_userid: str = Field(max_length=100)
|
||||
|
||||
dept_id: int = Field(foreign_key="department.id", index=True)
|
||||
|
||||
open_userid: str = Field(max_length=100, index=True)
|
||||
|
||||
|
||||
class Tenant(SQLModel, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
# ========== 基础信息 ==========
|
||||
name: str = Field(max_length=100, index=True, description="租户名称 / 企业名称")
|
||||
|
||||
# ========== 企业微信配置 ==========
|
||||
wecom_corp_id: str = Field(max_length=64, index=True, description="企业微信 CorpID")
|
||||
|
||||
wecom_corp_secret: str = Field(max_length=128, description="企业微信应用 Secret")
|
||||
|
||||
wecom_agent_id: int = Field(description="企业微信应用 AgentId")
|
||||
|
||||
wecom_token: str = Field(max_length=64, description="企业微信回调 Token")
|
||||
|
||||
wecom_encoding_aes_key: str = Field(
|
||||
max_length=64, description="企业微信回调 EncodingAESKey"
|
||||
)
|
||||
|
||||
# ========== 时间字段 ==========
|
||||
created_at: datetime = Field(
|
||||
sa_column=Column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
)
|
||||
|
||||
updated_at: datetime = Field(
|
||||
sa_column=Column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
onupdate=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user