99 lines
2.3 KiB
Python
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)
|
|
|
|
|