lavkach3

Форк
0
/
list_schema.py 
36 строк · 916.0 Байт
1
from typing import Any, Type
2

3
from pydantic import BaseModel, model_validator
4
from typing import Optional, List
5

6

7
class GenericListSchema(BaseModel):
8
    """
9
    example
10
    class CompanyListSchema(BaseListSchame):
11
    data: List[CompanyScheme] = []
12
    """
13
    size: int = 0
14
    cursor: int = 0
15
    prevcursor: int = 0
16
    data: Optional[List] = []
17

18

19
    @model_validator(mode='before')
20
    def mixin(cls: Type['Model'], data: Any) -> 'Model':
21
        if data['data']:
22
            if not getattr(data['data'][0], 'lsn'):
23
                cursor = 99999
24
            else:
25
                cursor = max([i.lsn for i in data['data']])
26
            return {
27
                'size': len(data['data']),
28
                'data': data['data'],
29
                'cursor': cursor,
30
            }
31
        return data
32

33
    class Config:
34
        from_attributes = False
35
        arbitrary_types_allowed = True
36
        extra = 'allow'
37

38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.