Files
score/backend/app/models/mixin.py
2025-06-07 22:29:39 +02:00

99 lines
2.3 KiB
Python

import uuid
from datetime import datetime
from pydantic import BaseModel, EmailStr
from sqlmodel import (
Field,
)
from .base import RowId as RowIdType
class Name(BaseModel):
name: str | None = Field(default=None, nullable=False, unique=True, max_length=255)
class FullName(BaseModel):
full_name: str | None = Field(default=None, nullable=True, max_length=255)
class ThemeName(BaseModel):
theme_name: str = Field(index=True, max_length=255)
class ThemeNameUpdate(ThemeName):
theme_name: str | None = Field(default=None, max_length=255)
class Contact(BaseModel):
contact: str | None = Field(default=None, nullable=True, max_length=255)
class IsActive(BaseModel):
is_active: bool | None = Field(default=True, nullable=False)
class IsVerified(BaseModel):
is_verified: bool | None = Field(default=False, nullable=False)
class UserName(BaseModel):
username: str | None = Field(
default=None, nullable=True, unique=True, max_length=255
)
class Email(BaseModel):
email: EmailStr | None = Field(
default=None, nullable=True, unique=True, max_length=255
)
class EmailUpdate(Email):
email: EmailStr | None = Field(default=None, max_length=255)
class ScoutingId(BaseModel):
scouting_id: str | None = Field(default=None, max_length=32)
class Password(BaseModel):
password: str = Field(min_length=8, max_length=100)
class PasswordUpdate(Password):
password: str | None = Field(default=None, min_length=8, max_length=40)
class RowId(BaseModel):
id: RowIdType | None = Field(
primary_key=True,
nullable=False,
default_factory=uuid.uuid4,
)
class RowIdPublic(RowId):
id: RowIdType
class Description(BaseModel):
description: str | None = Field(default=None, nullable=True, max_length=512)
class StartEndDate:
start_at: datetime | None = Field(default=None, nullable=True)
end_at: datetime | None = Field(default=None, nullable=True)
class Canceled(BaseModel):
canceled_at: datetime | None = Field(default=None, nullable=True)
canceled_reason: str | None = Field(default=None, nullable=True, max_length=1024)
class CheckInCheckOut(BaseModel):
checkin_at: datetime | None = Field(default=None, nullable=True)
checkout_at: datetime | None = Field(default=None, nullable=True)