forked from polka_billy/porridger
refactoring - 1
This commit is contained in:
131
back/pydantic_schemas.py
Normal file
131
back/pydantic_schemas.py
Normal file
@ -0,0 +1,131 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Annotated, Union
|
||||
from datetime import date
|
||||
from typing import List
|
||||
from fastapi import UploadFile, Form
|
||||
|
||||
class Book(BaseModel):
|
||||
id: int
|
||||
|
||||
|
||||
class DelAnnouncement(BaseModel):
|
||||
id: int
|
||||
|
||||
|
||||
class Announcement(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
name: str
|
||||
category: str
|
||||
best_by: date
|
||||
address: str
|
||||
longtitude: float
|
||||
latitude: float
|
||||
description: str
|
||||
src: Union[str, None] = None #изображение продукта в объявлении
|
||||
metro: str #ближайщее метро от адреса нахождения продукта
|
||||
trashId: Union[int, None] = None
|
||||
booked_by: Union[int, None] = 0 #статус бронирования (либо 0, либо айди бронирующего)
|
||||
obsolete: bool
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
arbitrary_types_allowed=True
|
||||
|
||||
|
||||
# для "/api/announcement"
|
||||
class AnnResponce(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
name: str
|
||||
category: str
|
||||
best_by: date
|
||||
address: str
|
||||
longtitude: float
|
||||
latitude: float
|
||||
description: str
|
||||
src: Union[str, None] = None #изображение продукта в объявлении
|
||||
metro: str #ближайщее метро от адреса нахождения продукта
|
||||
trashId: Union[int, None] = None
|
||||
booked_by: Union[int, None] = 0 #статус бронирования (либо 0, либо айди бронирующего)
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
# Схемы для токенов
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
# token_type: str
|
||||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
user_id: Union[int, None] = None
|
||||
|
||||
|
||||
# Схемы юзера
|
||||
class User(BaseModel):
|
||||
id: int
|
||||
nickname: str
|
||||
reg_date: date
|
||||
disabled: Union[bool, None] = False
|
||||
items: list[Announcement] = []
|
||||
points: int
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
arbitrary_types_allowed=True
|
||||
|
||||
|
||||
class UserInDB(User):
|
||||
hashed_password: str
|
||||
|
||||
# Схема для стиха
|
||||
class Poem(BaseModel):
|
||||
id: int
|
||||
title: str
|
||||
text: str
|
||||
author: str
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
# Для "/api/trashbox"
|
||||
class TrashboxBase(BaseModel):
|
||||
Lat: float
|
||||
Lng: float
|
||||
|
||||
class TrashboxResponse(TrashboxBase):
|
||||
Name: str
|
||||
Address: str
|
||||
Categories: list[str]
|
||||
|
||||
class TrashboxRequest(TrashboxBase):
|
||||
Category: str
|
||||
|
||||
|
||||
# Для /api/announcement/dispose
|
||||
class TrashboxSelected(BaseModel):
|
||||
Lat: float
|
||||
Lng: float
|
||||
Name: str
|
||||
Address: str
|
||||
Category: str
|
||||
|
||||
class DisposeRequest(BaseModel):
|
||||
ann_id: int
|
||||
trashbox: TrashboxSelected
|
||||
|
||||
|
||||
# схема для передачи параметров, по которым ведется фильтрация
|
||||
class SortAnnouncements(BaseModel):
|
||||
obsolete: Union[int, None] = False
|
||||
user_id: Union[int, None] = None
|
||||
metro: Union[str, None] = None
|
||||
category: Union[str, None] = None
|
||||
# booked_by: Union[int, None] = None
|
||||
|
||||
# схема для начисления баллов
|
||||
class AddRating(BaseModel):
|
||||
user_id: int
|
||||
rate: int
|
Reference in New Issue
Block a user