93 lines
2.2 KiB
Python
93 lines
2.2 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from sqlalchemy import Column, DateTime, JSON, func
|
|
from sqlmodel import Field, SQLModel
|
|
|
|
|
|
class Department(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
|
|
wecom_dept_id: str = Field(default=None, index=True)
|
|
|
|
dname: str = Field(
|
|
max_length=100,
|
|
description="部门名称",
|
|
)
|
|
|
|
name_en: str = Field(
|
|
max_length=100,
|
|
description="部门英文名",
|
|
)
|
|
|
|
department_leader: list[str] = Field(
|
|
default_factory=list,
|
|
sa_column=Column(JSON),
|
|
description="部门负责人 user_id 列表",
|
|
)
|
|
|
|
parent_id: str = Field(default=0, index=True)
|
|
order: int = Field(default=0)
|
|
|
|
created_at: datetime = Field(
|
|
default_factory=datetime.now,
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
nullable=False,
|
|
),
|
|
)
|
|
|
|
updated_at: datetime = Field(
|
|
default_factory=datetime.now,
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
onupdate=func.now(),
|
|
nullable=False,
|
|
),
|
|
)
|
|
|
|
|
|
class Employee(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
|
|
wecom_user_id: str = Field(default=None, index=True)
|
|
|
|
ename: str = Field(
|
|
max_length=100,
|
|
description="员工姓名",
|
|
)
|
|
|
|
dept_ids: list[str] = Field(
|
|
default_factory=list,
|
|
sa_column=Column(JSON),
|
|
description="部门ID",
|
|
)
|
|
|
|
open_userid: str | None = Field(
|
|
default=None,
|
|
max_length=100,
|
|
index=True,
|
|
description="企业微信 user_id",
|
|
)
|
|
|
|
created_at: datetime = Field(
|
|
default_factory=datetime.now,
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
nullable=False,
|
|
),
|
|
)
|
|
|
|
updated_at: datetime = Field(
|
|
default_factory=datetime.now,
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
onupdate=func.now(),
|
|
nullable=False,
|
|
),
|
|
)
|