Files
wecom-wnzs-adapter/model/model.py
2026-01-15 19:24:52 +08:00

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,
),
)