Skip to content

Commit 1e3f4bd

Browse files
committed
admin info table
1 parent 12a2fc4 commit 1e3f4bd

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

backend/python/app/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def init_app(_app: Any | None = None) -> None:
8383
from .entity import Entity # noqa: F401
8484
from .simple_entity import SimpleEntity # noqa: F401
8585
from .user import User # noqa: F401
86+
from .admin import Admin # noqa: F401
8687

8788
init_database()
8889

backend/python/app/models/admin.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from typing import Optional
2+
from uuid import UUID, uuid4
3+
from sqlmodel import Field, SQLModel
4+
from pydantic import EmailStr
5+
from .base import BaseModel
6+
7+
8+
class AdminBase(SQLModel):
9+
"""Shared fields between table and API models"""
10+
admin_name: str = Field(min_length=1, max_length=100, nullable=False)
11+
default_cap: Optional[int] = Field(default=None)
12+
admin_phone: str = Field(min_length=1, max_length=100, nullable=False)
13+
admin_email: EmailStr = Field(nullable=False)
14+
route_start_time: Optional[str] = Field(default=None)
15+
warehouse_location: Optional[str] = Field(default=None, min_length=1)
16+
preferred_language: Optional[str] = Field(default=None)
17+
admin_timezone: Optional[str] = Field(default=None)
18+
19+
class Admin(AdminBase, BaseModel, table=True):
20+
"""Database table model"""
21+
__tablename__ = "admin_info"
22+
23+
admin_id: UUID = Field(default_factory=uuid4, primary_key=True)
24+
25+
class AdminCreate(AdminBase):
26+
"""Create request model"""
27+
pass
28+
29+
class AdminRead(AdminBase):
30+
"""Read response model"""
31+
admin_id: UUID
32+
33+
class AdminUpdate(SQLModel):
34+
"""Update request model - all optional"""
35+
admin_name: Optional[str] = Field(default=None, min_length=1, max_length=100)
36+
default_cap: Optional[int] = Field(default=None)
37+
admin_phone: Optional[str] = Field(default=None, min_length=1, max_length=100)
38+
admin_email: Optional[EmailStr] = Field(default=None)
39+
route_start_time: Optional[str] = Field(default=None)
40+
warehouse_location: Optional[str] = Field(default=None, min_length=1)
41+
preferred_language: Optional[str] = Field(default=None)
42+
admin_timezone: Optional[str] = Field(default=None)
43+
44+
class AdminRegister(SQLModel):
45+
"""Admin registration request"""
46+
admin_name: str = Field(min_length=1, max_length=100)
47+
admin_phone: str = Field(min_length=1, max_length=100)
48+
admin_email: EmailStr
49+
admin_password: str = Field(min_length=8, max_length=100)

0 commit comments

Comments
 (0)