53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, List, Dict
|
|
|
|
|
|
# ---------------------
|
|
# Base
|
|
# ---------------------
|
|
class NotaBase(BaseModel):
|
|
titulo: str = Field(..., description="Título de la nota")
|
|
contenido: str = Field(..., description="Contenido de la nota")
|
|
tags: Optional[Dict] = Field(None, description="Tags de la nota")
|
|
relaciones: Optional[Dict] = Field(None, description="Relaciones")
|
|
propiedades: Optional[Dict] = Field(None, description="Propiedades adicionales")
|
|
|
|
|
|
# ---------------------
|
|
# Create & Update
|
|
# ---------------------
|
|
class NotaCreate(NotaBase):
|
|
pass
|
|
|
|
|
|
class NotaUpdate(BaseModel):
|
|
contenido: Optional[str]
|
|
tags: Optional[Dict]
|
|
relaciones: Optional[Dict]
|
|
propiedades: Optional[Dict]
|
|
|
|
|
|
# ---------------------
|
|
# Response
|
|
# ---------------------
|
|
class NotaOut(NotaBase):
|
|
id: str
|
|
embedder: List[float] = Field(..., description="Vector embedding de la nota")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# ---------------------
|
|
# Search Inputs
|
|
# ---------------------
|
|
class SearchQuery(BaseModel):
|
|
texto: str
|
|
top_k: int = 5
|
|
|
|
|
|
class HybridSearchQuery(BaseModel):
|
|
texto: str
|
|
tags: Optional[Dict] = None
|
|
top_k: int = 5
|