mirror of
https://github.com/wowlikon/LiB.git
synced 2026-02-04 04:31:09 +00:00
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
"""Модуль DTO-моделей для выдачи книг"""
|
||
|
||
from typing import List
|
||
|
||
from datetime import datetime
|
||
from sqlmodel import SQLModel, Field
|
||
|
||
|
||
class LoanBase(SQLModel):
|
||
"""Базовая модель выдачи"""
|
||
|
||
book_id: int = Field(description="Идентификатор книги")
|
||
user_id: int = Field(description="Идентификатор пользователя")
|
||
due_date: datetime = Field(description="Дата и время планируемого возврата")
|
||
|
||
|
||
class LoanCreate(LoanBase):
|
||
"""Модель для создания записи о выдаче"""
|
||
|
||
pass
|
||
|
||
|
||
class LoanUpdate(SQLModel):
|
||
"""Модель для обновления записи о выдаче"""
|
||
|
||
user_id: int | None = Field(None, description="Идентификатор пользователя")
|
||
due_date: datetime | None = Field(
|
||
None, description="дата и время планируемого возврата"
|
||
)
|
||
returned_at: datetime | None = Field(
|
||
None, description="Дата и время фактического возврата"
|
||
)
|
||
|
||
|
||
class LoanRead(LoanBase):
|
||
"""Модель чтения записи о выдаче"""
|
||
|
||
id: int = Field(description="Идентификатор")
|
||
borrowed_at: datetime = Field(description="Дата и время выдачи")
|
||
returned_at: datetime | None = Field(
|
||
None, description="Дата и время фактического возврата"
|
||
)
|
||
|
||
|
||
class LoanList(SQLModel):
|
||
"""Список выдач"""
|
||
|
||
loans: List[LoanRead] = Field(description="Список выдач")
|
||
total: int = Field(description="Количество выдач")
|