This commit is contained in:
2026-01-06 18:06:51 +03:00
parent 326ced233b
commit efe3f4ab43
71 changed files with 245 additions and 245 deletions
+87
View File
@@ -0,0 +1,87 @@
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
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
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