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