Rest-vs-gRPC/rest_grpc_compare_code/rest_client_models.py
2025-08-20 11:54:40 +01:00

55 lines
1.7 KiB
Python

from pydantic import BaseModel, Field
from typing import List, Optional
class BookInfo(BaseModel):
abstract: Optional[str] = ""
author: Optional[str] = ""
barcode: Optional[str] = ""
binding: Optional[str] = ""
category_id: Optional[int] = 0
cover_image: Optional[str] = ""
description: Optional[str] = ""
edition: Optional[str] = ""
editor: Optional[str] = ""
format: Optional[str] = ""
id: Optional[int] = 0
isbn: Optional[str] = ""
keywords: Optional[str] = ""
language: Optional[str] = ""
pages: Optional[int] = 0
publication_date: Optional[int] = 0 # Unix timestamp
publisher: Optional[str] = ""
subject: Optional[str] = ""
subtitle: Optional[str] = ""
title: Optional[str] = ""
translator: Optional[str] = ""
weight: Optional[float] = 0.0
class Config:
extra = "ignore"
exclude_none = True
class ServerDeserialize(BaseModel):
cpu: float = 0.0
time: float = 0.0
class MessageResponse(BaseModel):
message: str = ""
class GeneralResponse(BaseModel):
response_data: MessageResponse = Field(default_factory=MessageResponse)
server_deserialize: ServerDeserialize = Field(default_factory=ServerDeserialize)
server_protocol_total_time: float = 0.0
server_serialize: ServerDeserialize = Field(default_factory=ServerDeserialize, alias="server_serialize")
class GetListResponse(BaseModel):
response_data: List[BookInfo] = Field(default_factory=list)
server_deserialize: ServerDeserialize = Field(default_factory=ServerDeserialize)
server_protocol_total_time: float = 0.0
server_serialize: ServerDeserialize = Field(default_factory=ServerDeserialize)