feat: вфыв
This commit is contained in:
		@@ -1,3 +1,5 @@
 | 
			
		||||
from typing import Self
 | 
			
		||||
 | 
			
		||||
from pydantic import BaseModel
 | 
			
		||||
from pydantic.alias_generators import to_camel
 | 
			
		||||
 | 
			
		||||
@@ -7,44 +9,52 @@ class CustomConfig:
 | 
			
		||||
    from_attributes = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CustomModelCamel(BaseModel):
 | 
			
		||||
class BaseSchema(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)
 | 
			
		||||
 | 
			
		||||
    def model_dump_parent(self):
 | 
			
		||||
        parent_class: BaseModel = self.__class__.__bases__[0]
 | 
			
		||||
        parent_fields = set(parent_class.model_fields.keys())
 | 
			
		||||
        return self.model_dump(include=parent_fields)
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def from_orm_list(cls, sql_models) -> list[Self]:
 | 
			
		||||
        return [cls.model_validate(model) for model in sql_models]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CustomModelSnake(BaseModel):
 | 
			
		||||
    class Config:
 | 
			
		||||
        from_attributes = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class OkMessageSchema(CustomModelCamel):
 | 
			
		||||
class OkMessageSchema(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
    message: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PaginationSchema(CustomModelCamel):
 | 
			
		||||
class PaginationSchema(BaseSchema):
 | 
			
		||||
    page: int | None = None
 | 
			
		||||
    items_per_page: int | None = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PaginationInfoSchema(CustomModelCamel):
 | 
			
		||||
class PaginationInfoSchema(BaseSchema):
 | 
			
		||||
    total_pages: int
 | 
			
		||||
    total_items: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseEnumSchema(CustomModelCamel):
 | 
			
		||||
class BaseEnumSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseEnumListSchema(CustomModelCamel):
 | 
			
		||||
class BaseEnumListSchema(BaseSchema):
 | 
			
		||||
    items: list[BaseEnumSchema]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user