alabuga/backend/app/schemas/rank.py
2025-09-24 20:18:46 +02:00

77 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Схемы рангов."""
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
class RankBase(BaseModel):
"""Базовая информация о ранге."""
id: int
title: str
description: str
required_xp: int
class Config:
from_attributes = True
class RankRequirementMission(BaseModel):
"""Обязательная миссия."""
mission_id: int
mission_title: str
class RankRequirementCompetency(BaseModel):
"""Требование к компетенции."""
competency_id: int
competency_name: str
required_level: int
class RankDetailed(RankBase):
"""Полный ранг со списком условий."""
mission_requirements: list[RankRequirementMission]
competency_requirements: list[RankRequirementCompetency]
created_at: datetime
updated_at: datetime
class RankRequirementMissionInput(BaseModel):
"""Входная схема обязательной миссии."""
mission_id: int
class RankRequirementCompetencyInput(BaseModel):
"""Входная схема требования к компетенции."""
competency_id: int
required_level: int = Field(ge=0)
class RankCreate(BaseModel):
"""Создание нового ранга."""
title: str
description: str
required_xp: int = Field(ge=0)
mission_ids: list[int] = []
competency_requirements: list[RankRequirementCompetencyInput] = []
class RankUpdate(BaseModel):
"""Обновление существующего ранга."""
title: str
description: str
required_xp: int = Field(ge=0)
mission_ids: list[int] = []
competency_requirements: list[RankRequirementCompetencyInput] = []