Files
Quizzi/src/quizzi/domain/schemas.py
T
2026-01-07 00:10:25 +03:00

90 lines
1.8 KiB
Python

from dataclasses import dataclass
from datetime import datetime
from enum import Enum
class QuestionType(str, Enum):
SINGLE = "single"
MULTIPLE = "multiple"
INPUT = "input"
@dataclass
class User:
id: int
first_name: str
username: str | None = None
last_name: str | None = None
name: str | None = None
group: int | None = None
is_admin: bool = False
name_updated_at: datetime | None = None
group_updated_at: datetime | None = None
created_at: datetime | None = None
updated_at: datetime | None = None
@dataclass
class Group:
id: int
number: int
created_at: datetime | None = None
updated_at: datetime | None = None
@dataclass
class Test:
id: int
title: str
description: str | None = None
for_group: int | None = None
password: str | None = None
expires_at: datetime | None = None
attempts: int | None = None
time_limit: int | None = None
is_active: bool = True
are_results_viewable: bool = False
created_at: datetime | None = None
updated_at: datetime | None = None
@dataclass
class Question:
id: int
test_id: int
text: str
position: int = 0
question_type: QuestionType = QuestionType.SINGLE
tg_file_id: str | None = None
@dataclass
class Option:
id: int
question_id: int
text: str
is_correct: bool = False
explanation: str | None = None
@dataclass
class TestAttempt:
id: int
user_id: int
test_id: int
started_at: datetime
finished_at: datetime | None = None
warning_sent_at: datetime | None = None
score: int = 0
is_passed: bool = False
@dataclass
class UserAnswer:
id: int
attempt_id: int
question_id: int
selected_option_id: int | None = None
text_answer: str | None = None
is_correct: bool = False