Files

55 lines
1.3 KiB
Python
Raw Permalink Normal View History

from datetime import datetime
from typing import Literal
2026-04-24 15:50:52 +08:00
from pydantic import BaseModel, Field, field_validator
class UserPublic(BaseModel):
id: str
2026-04-24 15:50:52 +08:00
email: str
username: str
status: str
role_codes: list[str]
permission_codes: list[str]
created_at: datetime
last_login_at: datetime | None = None
class UserListResponse(BaseModel):
items: list[UserPublic]
total: int
class UserIdCheckResponse(BaseModel):
available: bool
message: str
class UserUpdateRequest(BaseModel):
email: str | None = None
username: str | None = Field(default=None, min_length=3, max_length=64)
2026-04-24 15:50:52 +08:00
status: Literal["active", "disabled", "enabled"] | None = None
class UserRoleUpdateRequest(BaseModel):
role_codes: list[str] = Field(min_length=1)
2026-04-17 21:55:27 +08:00
class UserPasswordResetRequest(BaseModel):
new_password: str = Field(min_length=8, max_length=128)
class UserCreateRequest(BaseModel):
user_id: str = Field(min_length=3, max_length=64)
email: str | None = None
2026-04-17 21:55:27 +08:00
username: str = Field(min_length=3, max_length=64)
password: str = Field(min_length=8, max_length=128)
@field_validator("user_id")
@classmethod
def validate_user_id(cls, value: str) -> str:
normalized = value.strip()
if not normalized:
raise ValueError("user_id cannot be empty")
return normalized