eigent/server/app/model/user/role.py
2025-08-20 23:05:54 +08:00

34 lines
896 B
Python

from datetime import datetime
from enum import Enum
from pydantic import BaseModel
from sqlmodel import Field, Column, SmallInteger, JSON
from app.model.abstract.model import AbstractModel, DefaultTimes
from sqlalchemy_utils import ChoiceType
class RoleType(int, Enum):
System = 1
Custom = 2
class Role(AbstractModel, DefaultTimes, table=True):
id: int = Field(default=None, primary_key=True)
name: str
description: str = ""
type: RoleType = Field(default=RoleType.Custom.value, sa_column=Column(ChoiceType(RoleType, SmallInteger())))
permissions: list[str] = Field(sa_column=Column(JSON))
class RoleIn(BaseModel):
name: str
description: str = ""
permissions: list[str]
class RoleOut(BaseModel):
id: int
name: str
description: str
type: RoleType
permissions: list[str]
created_at: datetime