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"}