41 lines
1.4 KiB
Python
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 |