deliveryman-api/app/models/community_building.py
2025-01-05 17:05:17 +08:00

40 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.sql import func
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
from .database import Base
# 数据库模型
class CommunityBuildingDB(Base):
__tablename__ = "community_buildings"
id = Column(Integer, primary_key=True, autoincrement=True)
community_id = Column(Integer, ForeignKey("communities.id"), index=True)
building_name = Column(String(50), nullable=False) # 楼栋名称,如"1号楼"
building_number = Column(String(20), nullable=False) # 楼栋编号,如"A1"
create_time = Column(DateTime(timezone=True), server_default=func.now())
update_time = Column(DateTime(timezone=True), onupdate=func.now())
class Config:
unique_together = [("community_id", "building_number")]
# Pydantic 模型
class CommunityBuildingCreate(BaseModel):
community_id: int
building_name: str = Field(..., max_length=50)
building_number: str = Field(..., max_length=20)
class CommunityBuildingUpdate(BaseModel):
building_name: Optional[str] = Field(None, max_length=50)
building_number: Optional[str] = Field(None, max_length=20)
class CommunityBuildingInfo(BaseModel):
id: int
community_id: int
building_name: str
building_number: str
create_time: datetime
class Config:
from_attributes = True