This commit is contained in:
2024-03-31 07:36:35 +03:00
parent df6e2e7fb1
commit 5de5b9b3e4
12 changed files with 1469 additions and 56 deletions

View File

@@ -1,7 +1,7 @@
from schemas.base import CustomModel
from schemas.base import CustomModelCamel, CustomModelSnake
class AuthLoginRequest(CustomModel):
class AuthLoginRequest(CustomModelSnake):
auth_date: int
first_name: str
hash: str
@@ -9,5 +9,5 @@ class AuthLoginRequest(CustomModel):
photo_url: str
class AuthLoginResponse(CustomModel):
class AuthLoginResponse(CustomModelCamel):
access_token: str

View File

@@ -1,4 +1,5 @@
from pydantic import BaseModel
from pydantic.alias_generators import to_camel
class CustomConfig:
@@ -6,21 +7,34 @@ class CustomConfig:
from_attributes = True
class CustomModel(BaseModel):
class CustomModelCamel(BaseModel):
class Config:
from_attributes = True
alias_generator = to_camel
populate_by_name = True
@classmethod
def from_sql_model(cls, model, fields: dict):
model_dict = {c.name: getattr(model, c.name) for c in model.__table__.columns}
model_dict.update(fields)
return cls(**model_dict)
class CustomModelSnake(BaseModel):
class Config:
from_attributes = True
class OkMessageSchema(BaseModel):
class OkMessageSchema(CustomModelCamel):
ok: bool
message: str
class PaginationSchema(CustomModel):
class PaginationSchema(CustomModelCamel):
page: int
items_per_page: int
class PaginationInfoSchema(CustomModel):
class PaginationInfoSchema(CustomModelCamel):
total_pages: int
total_items: int

View File

@@ -1,42 +1,42 @@
from typing import List
from schemas.base import CustomModel
from schemas.base import CustomModelCamel
class ClientDetailsSchema(CustomModel):
class ClientDetailsSchema(CustomModelCamel):
address: str | None = None
phone_number: str | None = None
inn: int | None = None
email: str | None = None
class ClientSchema(CustomModel):
class ClientSchema(CustomModelCamel):
id: int
name: str
details: ClientDetailsSchema | None = None
class ClientSearchRequest(CustomModel):
class ClientSearchRequest(CustomModelCamel):
name: str
class ClientCreateRequest(CustomModel):
class ClientCreateRequest(CustomModelCamel):
name: str
address: str
class ClientSearchResponse(CustomModel):
class ClientSearchResponse(CustomModelCamel):
clients: List[ClientSchema]
class ClientUpdateDetailsRequest(CustomModel):
class ClientUpdateDetailsRequest(CustomModelCamel):
client_id: int
details: ClientDetailsSchema
class ClientUpdateDetailsResponse(CustomModel):
class ClientUpdateDetailsResponse(CustomModelCamel):
ok: bool
class ClientGetAllResponse(CustomModel):
class ClientGetAllResponse(CustomModelCamel):
clients: List[ClientSchema]

View File

@@ -1,19 +1,19 @@
import datetime
from typing import List
from schemas.base import CustomModel
from schemas.base import CustomModelCamel
from schemas.client import ClientSchema
# region Entities
class FastDeal(CustomModel):
class FastDeal(CustomModelCamel):
name: str
client: ClientSchema
comment: str
acceptance_date: datetime.datetime
class DealSummary(CustomModel):
class DealSummary(CustomModelCamel):
id: int
name: str
client_name: str
@@ -22,7 +22,7 @@ class DealSummary(CustomModel):
total_price: int
class DealServiceSchema(CustomModel):
class DealServiceSchema(CustomModelCamel):
id: int
quantity: int
@@ -30,16 +30,16 @@ class DealServiceSchema(CustomModel):
# endregion Entities
# region Requests
class DealChangeStatusRequest(CustomModel):
class DealChangeStatusRequest(CustomModelCamel):
deal_id: int
new_status: int
class DealCreateRequest(CustomModel):
class DealCreateRequest(CustomModelCamel):
name: str
class DealQuickCreateRequest(CustomModel):
class DealQuickCreateRequest(CustomModelCamel):
name: str
client_name: str
client_address: str
@@ -47,11 +47,11 @@ class DealQuickCreateRequest(CustomModel):
acceptance_date: datetime.datetime
class DealSummaryRequest(CustomModel):
class DealSummaryRequest(CustomModelCamel):
pass
class DealAddServicesRequest(CustomModel):
class DealAddServicesRequest(CustomModelCamel):
deal_id: int
services: list[DealServiceSchema]
@@ -60,23 +60,23 @@ class DealAddServicesRequest(CustomModel):
# region Responses
class DealChangeStatusResponse(CustomModel):
class DealChangeStatusResponse(CustomModelCamel):
ok: bool
class DealCreateResponse(CustomModel):
class DealCreateResponse(CustomModelCamel):
ok: bool
class DealQuickCreateResponse(CustomModel):
class DealQuickCreateResponse(CustomModelCamel):
deal_id: int
class DealSummaryResponse(CustomModel):
class DealSummaryResponse(CustomModelCamel):
summaries: List[DealSummary]
class DealAddServicesResponse(CustomModel):
class DealAddServicesResponse(CustomModelCamel):
ok: bool
message: str
# endregion Responses

View File

@@ -1,33 +1,51 @@
from typing import List
from schemas.base import CustomModel, PaginationInfoSchema
from schemas.base import CustomModelCamel, PaginationInfoSchema, OkMessageSchema
# region Entities
class ProductSchema(CustomModel):
class ProductSchema(CustomModelCamel):
id: int
name: str
article: str
client_id: int
barcodes: list[str]
# endregion
# region Requests
class ProductCreateRequest(CustomModel):
class ProductCreateRequest(CustomModelCamel):
name: str
article: str
client_id: int
barcodes: List[str]
class ProductDeleteRequest(CustomModelCamel):
product_id: int
class ProductUpdateRequest(CustomModelCamel):
product: ProductSchema
# endregion
# region Responses
class ProductCreateResponse(CustomModel):
product_id: int
class ProductCreateResponse(OkMessageSchema):
product_id: int | None = None
class ProductGetResponse(CustomModel):
class ProductGetResponse(CustomModelCamel):
products: List[ProductSchema]
pagination_info: PaginationInfoSchema
class ProductDeleteResponse(OkMessageSchema):
pass
class ProductUpdateResponse(OkMessageSchema):
pass
# endregion

View File

@@ -1,15 +1,15 @@
from typing import List
from schemas.base import CustomModel, OkMessageSchema
from schemas.base import CustomModelCamel, OkMessageSchema
# region Entities
class ServiceCategorySchema(CustomModel):
class ServiceCategorySchema(CustomModelCamel):
id: int
name: str
class ServiceSchema(CustomModel):
class ServiceSchema(CustomModelCamel):
id: int
name: str
category: ServiceCategorySchema
@@ -20,11 +20,11 @@ class ServiceSchema(CustomModel):
# region Requests
class ServiceCreateRequest(CustomModel):
class ServiceCreateRequest(CustomModelCamel):
service: ServiceSchema
class ServiceCreateCategoryRequest(CustomModel):
class ServiceCreateCategoryRequest(CustomModelCamel):
category: ServiceCategorySchema
@@ -32,11 +32,11 @@ class ServiceCreateCategoryRequest(CustomModel):
# region Responses
class ServiceGetAllResponse(CustomModel):
class ServiceGetAllResponse(CustomModelCamel):
services: List[ServiceSchema]
class ServiceGetAllCategoriesResponse(CustomModel):
class ServiceGetAllCategoriesResponse(CustomModelCamel):
categories: List[ServiceCategorySchema]