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 # 数据库模型 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 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