massive frontend refactoring (works good)
This commit is contained in:
+123
@@ -0,0 +1,123 @@
|
||||
-- ============================================================
|
||||
-- Проверочные запросы v2
|
||||
-- ============================================================
|
||||
|
||||
-- 1. Все тренировки клиента с типом тренировки
|
||||
SELECT
|
||||
c.full_name,
|
||||
w.start_time,
|
||||
wt.name AS workout_type,
|
||||
w.notes,
|
||||
CASE WHEN w.end_time IS NULL THEN '🔥 Активная' ELSE '✅ Завершена' END AS status
|
||||
FROM workouts w
|
||||
JOIN clients c ON c.id = w.client_id
|
||||
LEFT JOIN workout_types wt ON wt.id = w.workout_type_id
|
||||
ORDER BY w.start_time DESC;
|
||||
|
||||
-- 2. Полная тренировка с дроп-сетами
|
||||
SELECT
|
||||
w.start_time,
|
||||
wt.name AS workout_type,
|
||||
we.exercise_name,
|
||||
CASE
|
||||
WHEN s.is_dropset = 0 THEN printf('%s кг × %s', s.weight, s.reps)
|
||||
ELSE '🔥 DROPSET'
|
||||
END AS set_info,
|
||||
s.rating
|
||||
FROM workouts w
|
||||
LEFT JOIN workout_types wt ON wt.id = w.workout_type_id
|
||||
JOIN workout_exercises we ON we.workout_id = w.id
|
||||
JOIN sets s ON s.workout_exercise_id = we.id
|
||||
WHERE w.id = 1
|
||||
ORDER BY we.sort_order, s.sort_order;
|
||||
|
||||
-- 3. Элементы дроп-сета
|
||||
SELECT
|
||||
s.id AS set_id,
|
||||
di.sort_order,
|
||||
di.weight,
|
||||
di.reps
|
||||
FROM sets s
|
||||
JOIN dropset_items di ON di.set_id = s.id
|
||||
WHERE s.is_dropset = 1
|
||||
ORDER BY s.id, di.sort_order;
|
||||
|
||||
-- 4. История упражнения (для подсказок)
|
||||
SELECT
|
||||
w.start_time,
|
||||
s.weight,
|
||||
s.reps,
|
||||
s.is_dropset
|
||||
FROM workout_exercises we
|
||||
JOIN sets s ON s.workout_exercise_id = we.id
|
||||
JOIN workouts w ON w.id = we.workout_id
|
||||
WHERE we.exercise_name = 'Горизонтальная тяга'
|
||||
AND w.end_time IS NOT NULL
|
||||
ORDER BY w.start_time DESC
|
||||
LIMIT 10;
|
||||
|
||||
-- 5. Динамика замеров клиента (для дашборда)
|
||||
SELECT
|
||||
bm.metric_date,
|
||||
mt.name AS metric_name,
|
||||
mt.unit,
|
||||
bmv.value
|
||||
FROM body_metrics bm
|
||||
JOIN body_metric_values bmv ON bmv.body_metric_id = bm.id
|
||||
JOIN metric_types mt ON mt.id = bmv.metric_type_id
|
||||
WHERE bm.client_id = 1
|
||||
ORDER BY bm.metric_date DESC, mt.sort_order;
|
||||
|
||||
-- 6. Динамика конкретного замера (например, бицепс)
|
||||
SELECT
|
||||
date(bm.metric_date) AS day,
|
||||
bmv.value
|
||||
FROM body_metrics bm
|
||||
JOIN body_metric_values bmv ON bmv.body_metric_id = bm.id
|
||||
JOIN metric_types mt ON mt.id = bmv.metric_type_id
|
||||
WHERE bm.client_id = 1
|
||||
AND mt.name = 'Бицепс'
|
||||
ORDER BY bm.metric_date DESC;
|
||||
|
||||
-- 7. Статистика по клиентам (для тренера)
|
||||
SELECT
|
||||
c.full_name,
|
||||
c.goal,
|
||||
COUNT(DISTINCT w.id) AS total_workouts,
|
||||
SUM(CASE WHEN w.end_time IS NOT NULL THEN 1 ELSE 0 END) AS completed,
|
||||
MAX(w.start_time) AS last_workout
|
||||
FROM clients c
|
||||
LEFT JOIN workouts w ON w.client_id = c.id
|
||||
GROUP BY c.id
|
||||
ORDER BY last_workout DESC;
|
||||
|
||||
-- 8. Тренировки клиента за последнюю неделю
|
||||
SELECT
|
||||
w.start_time,
|
||||
wt.name AS workout_type,
|
||||
COUNT(DISTINCT we.id) AS exercises_count,
|
||||
SUM(CASE WHEN s.is_dropset = 0 THEN 1 ELSE (SELECT COUNT(*) FROM dropset_items WHERE set_id = s.id) END) AS total_sets
|
||||
FROM workouts w
|
||||
LEFT JOIN workout_types wt ON wt.id = w.workout_type_id
|
||||
LEFT JOIN workout_exercises we ON we.workout_id = w.id
|
||||
LEFT JOIN sets s ON s.workout_exercise_id = we.id
|
||||
WHERE w.client_id = 1
|
||||
AND w.start_time >= date('now', '-7 days')
|
||||
GROUP BY w.id
|
||||
ORDER BY w.start_time DESC;
|
||||
|
||||
-- 9. Все упражнения с их типами тренировок
|
||||
SELECT
|
||||
e.name,
|
||||
wt.name AS workout_type
|
||||
FROM exercises e
|
||||
LEFT JOIN workout_types wt ON wt.id = e.workout_type_id
|
||||
ORDER BY wt.sort_order, e.name;
|
||||
|
||||
-- 10. Все доступные типы замеров
|
||||
SELECT
|
||||
name,
|
||||
unit,
|
||||
category
|
||||
FROM metric_types
|
||||
ORDER BY sort_order;
|
||||
Reference in New Issue
Block a user