user.py 1000 B

12345678910111213141516171819202122232425262728
  1. from typing import Optional
  2. from datetime import datetime, timezone
  3. from sqlalchemy import (
  4. Column, String, Text, Integer, Float, Boolean,
  5. DateTime, ForeignKey, JSON, func,
  6. )
  7. from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
  8. class Base(DeclarativeBase):
  9. pass
  10. class User(Base):
  11. __tablename__ = "users"
  12. id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
  13. openid: Mapped[str] = mapped_column(String(128), unique=True, nullable=False, index=True)
  14. nickname: Mapped[Optional[str]] = mapped_column(String(128))
  15. avatar_url: Mapped[Optional[str]] = mapped_column(String(512))
  16. role: Mapped[str] = mapped_column(String(32), default="user") # user / admin / pharmacist
  17. created_at: Mapped[datetime] = mapped_column(
  18. DateTime(timezone=True), server_default=func.now()
  19. )
  20. updated_at: Mapped[datetime] = mapped_column(
  21. DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
  22. )