deliveryman-api/app/models/community_building.py
2025-01-08 09:52:41 +08:00

40 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
# 数据库模型
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
community_name: Optional[str] = None # 通过join查询获取的社区名称
building_name: str
building_number: str
class Config:
from_attributes = True