deliveryman-api/app/models/community_building.py
2025-03-13 14:47:45 +08:00

41 lines
1.4 KiB
Python

from typing import Optional
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.sql import func
from pydantic import BaseModel, Field
from .database import Base
from datetime import datetime
from typing import List
# 数据库模型
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号楼"
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_name")]
# Pydantic 模型
class CommunityBuildingCreateBatch(BaseModel):
community_id: int
building_names: List[str] = Field(..., max_length=500)
class CommunityBuildingCreate(BaseModel):
community_id: int
building_name: str = Field(..., max_length=50)
class CommunityBuildingUpdate(BaseModel):
building_name: Optional[str] = Field(None, max_length=50)
class CommunityBuildingInfo(BaseModel):
id: int
community_id: int
community_name: Optional[str] = None # 通过join查询获取的社区名称
building_name: str
class Config:
from_attributes = True