add routers

This commit is contained in:
Robin COuret
2026-02-12 18:42:20 +01:00
parent 46539909dc
commit 74bb8a672c
16 changed files with 84 additions and 5 deletions

View File

@@ -0,0 +1,6 @@
from fastapi import APIRouter
from ..api.v1 import router as v1_router
router = APIRouter(prefix="/api")
router.include_router(v1_router)

View File

@@ -0,0 +1,8 @@
from fastapi import APIRouter
from .knowledges import router as knowledge_router
from .metrics import router as metric_router
router = APIRouter(prefix="/v1")
router.include_router(knowledge_router)
router.include_router(metric_router)

View File

@@ -0,0 +1,51 @@
from fastapi import APIRouter
from src.app.models.knowledge import Knowledge
from src.app.crud.crud_knowledges import create_knowledge, read_knowledges, read_knowledge, update_knowledge, delete_knowledge
from src.app.crud.crud_questions import read_questions as read_questions_crud
#Added in __ini__
router = APIRouter(tags=["knowledges"])
@router.post("/knowledges/")
def create(knowledge: Knowledge):
created_knowledge = create_knowledge(knowledge)
# if created_knowledge is None:
# raise NotFoundException("Failed to create knowledge")
return created_knowledge
@router.get("/knowledges/")
def read():
knowledges = read_knowledges()
return knowledges
@router.get("/knowledges/{id}")
def read(id: int):
knowledge = read_knowledge(id)
return knowledge
#TODO: adapt with correct pattern
@router.post("/knowledges/{id}")
def update(id: int, content: str, uri: str):
knowledge = update_knowledge(id, content, uri)
return knowledge
@router.delete("/knowledges/{id}")
def delete(id: int):
knowledge = delete_knowledge(id)
return knowledge
#TODO: find pattern
@router.post("/knowledges/{id}/questions")
def create_questions(id: int):
#SLM Generation
#create_question()
return True
@router.get("/knowledges/{id}/questions")
def read_questions(id: int):
knowledge: Knowledge = read_knowledge(id)
#questions = knowledge.questions
#TODO : refacto ?
questions = read_questions_crud(knowledge)
return questions

View File

@@ -0,0 +1,12 @@
from fastapi import APIRouter
from src.app.models.metric import Metric
from src.app.models.question import Question
from src.app.crud.crud_metrics import create_metric
router = APIRouter(tags=["metrics"])
@router.post("/metrics/")
def create(question: Question):
created_metric: Metric = create_metric(question)
return created_metric

View File

@@ -1,3 +1,4 @@
from fastapi import Depends
from sqlmodel import Session, select from sqlmodel import Session, select
from src.app.models.knowledge import Knowledge from src.app.models.knowledge import Knowledge
@@ -7,6 +8,7 @@ def create_knowledge(knowledge: Knowledge):
with Session(engine) as session: with Session(engine) as session:
session.add(knowledge) session.add(knowledge)
session.commit() session.commit()
session.refresh(knowledge)
return knowledge return knowledge
def read_knowledges(): def read_knowledges():

View File

@@ -8,6 +8,7 @@ def create_metric(metric: Metric):
with Session(engine) as session: with Session(engine) as session:
session.add(metric) session.add(metric)
session.commit() session.commit()
session.refresh(metric)
return metric return metric
def read_metrics(question): def read_metrics(question):

View File

@@ -8,6 +8,7 @@ def create_question(question: Question):
with Session(engine) as session: with Session(engine) as session:
session.add(question) session.add(question)
session.commit() session.commit()
session.refresh(question)
return question return question
def read_questions(knowledge): def read_questions(knowledge):

View File

@@ -7,6 +7,8 @@ from src.app.models.question import Question
from src.app.models.knowledge import Knowledge from src.app.models.knowledge import Knowledge
from src.app.models.metric import Metric from src.app.models.metric import Metric
from .api import router
#Test #Test
from src.app.faker_seed import faker from src.app.faker_seed import faker
@@ -15,12 +17,8 @@ from src.app.faker_seed import faker
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
#startup #startup
create_db_and_tables() create_db_and_tables()
faker()
yield yield
#shutdown #shutdown
app = FastAPI(lifespan=lifespan) app = FastAPI(lifespan=lifespan)
app.include_router(router)
@app.get("/")
async def root():
return {"message": "Hello World"}