f1tness_parser/app/api/v1/endpoints/trainings.py

62 lines
2.1 KiB
Python

from datetime import datetime
import logging
from fastapi import APIRouter
from app.core.database.connection import SQLiteExecutor
from app.core.database.models.approach import ApproachOps
from app.core.database.models.training import TrainingOps
from app.core.database.models.exercise import ExerciseOps
from app.core.dto.training import TrainingDTO
from app.core.parsers.obsidian import parse_training_data
sqllite_executor = SQLiteExecutor()
router = APIRouter()
@router.get("/obsidian/")
async def obsidian_trainings_list():
return {"data": parse_training_data()}
@router.get("/test/create/")
async def create_sample_training():
test_training = TrainingDTO(date=datetime.now().date(), trainer="Stepka")
training_executor = TrainingOps(sqllite_executor)
result_id = await training_executor.create(test_training)
return {"status": "ok", "create_id": result_id}
@router.get("/test/get/list/")
async def get_trainings_list():
training_executor = TrainingOps(sqllite_executor)
results = await training_executor.list()
return {"status": "ok", "create_id": results}
@router.delete("/test/delete/")
async def delete_by_ids():
training_executor = TrainingOps(sqllite_executor)
await training_executor.delete(list_of_ids=[4,5,6])
return {"status": "ok"}
@router.post("/test/create/")
async def create_full_training():
training_executor = TrainingOps(sqllite_executor)
exercise_executor = ExerciseOps(sqllite_executor)
approach_executor = ApproachOps(sqllite_executor)
sample_training_data: TrainingDTO = parse_training_data()[-1]
logging.info(sample_training_data)
training_id: int = await training_executor.create(sample_training_data)
if sample_training_data.exercises:
for exercise in sample_training_data.exercises:
exercise.training_id = training_id
exercise_id: int = await exercise_executor.create(exercise)
if exercise.approaches:
for approach in exercise.approaches:
approach.exercise_id = exercise_id
await approach_executor.create(approach)
return {"status": "ok"}