from sqlalchemy import Column, String, Integer, DateTime, Boolean, ForeignKey, UniqueConstraint from sqlalchemy.sql import func from pydantic import BaseModel, Field from typing import Optional from datetime import datetime from .database import Base class UserAuthDB(Base): __tablename__ = "user_auth_records" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey("users.userid"), unique=True, nullable=False) name = Column(String(50), nullable=False) id_number = Column(String(18), nullable=False) create_time = Column(DateTime(timezone=True), server_default=func.now()) update_time = Column(DateTime(timezone=True), onupdate=func.now()) class UserAuthCreate(BaseModel): name: str = Field(..., min_length=2, max_length=50) id_number: str = Field(..., min_length=18, max_length=18, pattern="^[0-9Xx]{18}$") class UserAuthInfo(BaseModel): name: str id_number: str create_time: datetime class Config: from_attributes = True