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