Olympus/backend/hermes/app/models/user.py
2026-07-02 23:05:59 +02:00

75 lines
1.6 KiB
Python

from datetime import datetime
from sqlalchemy import Boolean
from sqlalchemy import DateTime
from sqlalchemy import ForeignKey
from sqlalchemy import String
from sqlalchemy import func
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from app.db.database import Base
class User(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True)
first_name: Mapped[str] = mapped_column(
String(100),
default="",
server_default=""
)
last_name: Mapped[str] = mapped_column(
String(100),
default="",
server_default=""
)
username: Mapped[str] = mapped_column(
String(50),
unique=True,
index=True
)
email: Mapped[str] = mapped_column(
String(255),
unique=True
)
password_hash: Mapped[str] = mapped_column(
String(255)
)
role: Mapped[str] = mapped_column(
String(50),
default="user",
server_default="user"
)
role_id: Mapped[int] = mapped_column(
ForeignKey("roles.id"),
index=True,
)
primary_role = relationship("Role", lazy="joined")
is_active: Mapped[bool] = mapped_column(
Boolean,
default=True,
server_default="true"
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now()
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now()
)