Files
allmende-essen/new-registration-app/models.py

55 lines
1.6 KiB
Python

from datetime import datetime
from typing import Literal
from sqlmodel import Field, Relationship, SQLModel, String
class Event(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
title: str = Field(nullable=False)
event_time: datetime = Field(nullable=False)
registration_deadline: datetime = Field(nullable=False)
description: str
recipe_link: str
# Min and max number of people needed for cooking, doing the dishes and preparing the tables
team_cooking_min: int = 3
team_cooking_max: int = 5
team_dishes_min: int = 3
team_dishes_max: int = 5
team_prep_min: int = 1
team_prep_max: int = 1
registrations: list["Registration"] = Relationship()
team: list["TeamRegistration"] = Relationship()
class TeamRegistration(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
event_id: int | None = Field(default=None, foreign_key="event.id")
person_name: str = Field(nullable=False)
work_type: Literal["cooking", "dishes", "tables"] = Field(
nullable=False, sa_type=String
)
comment: str | None
class Household(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str = Field(nullable=False)
class Registration(SQLModel, table=True):
event_id: int | None = Field(default=None, foreign_key="event.id", primary_key=True)
household_id: int | None = Field(
default=None, foreign_key="household.id", primary_key=True
)
num_adult_meals: int
num_children_meals: int
num_small_children_meals: int
comment: str | None
household: Household = Relationship()