mirror of
https://github.com/StanGirard/quivr.git
synced 2025-01-06 03:04:42 +03:00
db5a6e4b9b
You can now create a brain which can fetch data from external APIs with or without authentification - POST query example with authentification https://github.com/StanGirard/quivr/assets/63923024/15013ba9-dedb-4f24-9e06-49daad9de7f3 - Get query example with authentification and search params https://github.com/StanGirard/quivr/assets/63923024/1763875d-a8e9-4478-b07c-e99ca7337942 - Get query without authentification and search params https://github.com/StanGirard/quivr/assets/63923024/f2742963-790d-4cb2-864a-8173979b650a
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from uuid import UUID
|
|
|
|
from fastapi import HTTPException
|
|
from models import BrainEntity, get_supabase_db
|
|
from models.brain_entity import BrainType
|
|
from models.databases.supabase.brains import CreateBrainProperties
|
|
|
|
from repository.api_brain_definition.add_api_brain_definition import (
|
|
add_api_brain_definition,
|
|
)
|
|
from repository.external_api_secret.create_secret import create_secret
|
|
|
|
|
|
def create_brain(brain: CreateBrainProperties, user_id: UUID) -> BrainEntity:
|
|
if brain.brain_type == BrainType.API:
|
|
if brain.brain_definition is None:
|
|
raise HTTPException(status_code=404, detail="Brain definition not found")
|
|
|
|
if brain.brain_definition.url is None:
|
|
raise HTTPException(status_code=404, detail="Brain url not found")
|
|
|
|
if brain.brain_definition.method is None:
|
|
raise HTTPException(status_code=404, detail="Brain method not found")
|
|
|
|
supabase_db = get_supabase_db()
|
|
|
|
created_brain = supabase_db.create_brain(brain)
|
|
|
|
if brain.brain_type == BrainType.API and brain.brain_definition is not None:
|
|
add_api_brain_definition(
|
|
brain_id=created_brain.brain_id,
|
|
api_brain_definition=brain.brain_definition,
|
|
)
|
|
|
|
secrets_values = brain.brain_secrets_values
|
|
|
|
for secret_name in secrets_values:
|
|
create_secret(
|
|
user_id=user_id,
|
|
brain_id=created_brain.brain_id,
|
|
secret_name=secret_name,
|
|
secret_value=secrets_values[secret_name],
|
|
)
|
|
|
|
return created_brain
|