quivr/backend/modules/brain/entity/api_brain_definition_entity.py
Stan Girard 08e015af6c
feat(lcel): migrated to lcel and pydantic (#2185)
# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):

---------

Co-authored-by: Antoine Dewez <44063631+Zewed@users.noreply.github.com>
2024-02-14 14:01:35 -08:00

48 lines
1.1 KiB
Python

from enum import Enum
from typing import Optional
from uuid import UUID
from pydantic import BaseModel, Extra
class ApiBrainDefinitionSchemaProperty(BaseModel, extra=Extra.forbid):
type: str
description: str
enum: Optional[list] = None
name: str
def dict(self, **kwargs):
result = super().dict(**kwargs)
if "enum" in result and result["enum"] is None:
del result["enum"]
return result
class ApiBrainDefinitionSchema(BaseModel, extra=Extra.forbid):
properties: list[ApiBrainDefinitionSchemaProperty] = []
required: list[str] = []
class ApiBrainDefinitionSecret(BaseModel, extra=Extra.forbid):
name: str
type: str
description: Optional[str] = None
class ApiBrainAllowedMethods(str, Enum):
GET = "GET"
POST = "POST"
PUT = "PUT"
DELETE = "DELETE"
class ApiBrainDefinitionEntity(BaseModel, extra=Extra.forbid):
brain_id: UUID
method: ApiBrainAllowedMethods
url: str
params: ApiBrainDefinitionSchema
search_params: ApiBrainDefinitionSchema
secrets: list[ApiBrainDefinitionSecret]
raw: bool = False
jq_instructions: Optional[str] = None