From de22d624327402b323498ea5a23b718a58122ead Mon Sep 17 00:00:00 2001 From: Joshua Burman Date: Tue, 15 Apr 2025 15:29:55 -0400 Subject: [PATCH] migrating... --- assets/exercises.json | 3516 ++++++++-------- lib/daos/action_sets_dao.dart | 24 + lib/daos/action_sets_dao.g.dart | 10 + lib/daos/actions_dao.dart | 2 +- lib/database/database.dart | 40 +- lib/database/database.g.dart | 1484 ++++++- lib/database/database.steps.dart | 925 +++++ .../sendtrain/drift_schema_v36.json | 1 + .../sendtrain/drift_schema_v37.json | 1 + .../sendtrain/drift_schema_v39.json | 1 + .../sendtrain/drift_schema_v40.json | 1 + lib/database/seed.dart | 163 +- lib/helpers/media_helpers.dart | 18 +- lib/main.dart | 10 +- lib/widgets/media/media_card.dart | 40 +- lib/widgets/sessions/session_view.dart | 12 +- .../sessions/session_view_actions.dart | 42 + test/drift/sendtrain/generated/schema.dart | 48 +- .../drift/sendtrain/generated/schema_v36.dart | 2733 +++++++++++++ .../drift/sendtrain/generated/schema_v37.dart | 3535 ++++++++++++++++ .../drift/sendtrain/generated/schema_v39.dart | 3536 +++++++++++++++++ .../drift/sendtrain/generated/schema_v40.dart | 3341 ++++++++++++++++ 22 files changed, 17610 insertions(+), 1873 deletions(-) create mode 100644 lib/daos/action_sets_dao.dart create mode 100644 lib/daos/action_sets_dao.g.dart create mode 100644 lib/database/drift_schemas/sendtrain/drift_schema_v36.json create mode 100644 lib/database/drift_schemas/sendtrain/drift_schema_v37.json create mode 100644 lib/database/drift_schemas/sendtrain/drift_schema_v39.json create mode 100644 lib/database/drift_schemas/sendtrain/drift_schema_v40.json create mode 100644 lib/widgets/sessions/session_view_actions.dart create mode 100644 test/drift/sendtrain/generated/schema_v36.dart create mode 100644 test/drift/sendtrain/generated/schema_v37.dart create mode 100644 test/drift/sendtrain/generated/schema_v39.dart create mode 100644 test/drift/sendtrain/generated/schema_v40.dart diff --git a/assets/exercises.json b/assets/exercises.json index 2a20b35..770816a 100644 --- a/assets/exercises.json +++ b/assets/exercises.json @@ -1,4 +1,28 @@ [ + { + "name": "Block Pulls (No-Hangs)", + "force": "pull", + "level": "intermediate", + "mechanic": "isolation", + "equipment": "crimpBlock", + "category": "strength", + "id": "Farmer_Crimps", + "primaryMuscles": ["forearms"], + "secondaryMuscles": [], + "instructions": [ + "Select a edge size appropriate for your desired training stimulus (20mm is common)", + "Attach the training implement to weights or something that can measure pull force (a tindeq, for example)", + "Line up the training implement between your legs, where it feels comfortable to load and pull effectively", + "Keeping your core and shoulders engaged, and arm locked, push with your legs to create tension between your loaded arm and the training implement" + ], + "images": [ + "https://trailandcrag.com/sites/default/files/styles/double_frame_wide_extra_large_2x/public/inline-images/4A-min.jpg?itok=_qb690PB", + "https://trailandcrag.com/sites/default/files/styles/double_frame_wide_extra_large_2x/public/inline-images/4B-min.jpg?itok=Ci2AaB1H", + "https://trailandcrag.com/sites/default/files/styles/full_width_extra_large_2x/public/inline-images/05-min_3.jpg?itok=Y8H5K7h1", + "https://trailandcrag.com/sites/default/files/styles/full_width_extra_large_2x/public/inline-images/10-min_3.jpg?itok=zOR0mo3m", + "https://trailandcrag.com/sites/default/files/inline-images/06-min_7.jpg" + ] + }, { "name": "3/4 Sit-Up", "force": "pull", @@ -18,8 +42,8 @@ ], "category": "strength", "images": [ - "3_4_Sit-Up/0.jpg", - "3_4_Sit-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/3_4_Sit-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/3_4_Sit-Up/1.jpg" ], "id": "3_4_Sit-Up" }, @@ -43,8 +67,8 @@ ], "category": "stretching", "images": [ - "90_90_Hamstring/0.jpg", - "90_90_Hamstring/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/90_90_Hamstring/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/90_90_Hamstring/1.jpg" ], "id": "90_90_Hamstring" }, @@ -66,8 +90,8 @@ ], "category": "strength", "images": [ - "Ab_Crunch_Machine/0.jpg", - "Ab_Crunch_Machine/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ab_Crunch_Machine/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ab_Crunch_Machine/1.jpg" ], "id": "Ab_Crunch_Machine" }, @@ -91,8 +115,8 @@ ], "category": "strength", "images": [ - "Ab_Roller/0.jpg", - "Ab_Roller/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ab_Roller/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ab_Roller/1.jpg" ], "id": "Ab_Roller" }, @@ -113,8 +137,8 @@ ], "category": "stretching", "images": [ - "Adductor/0.jpg", - "Adductor/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Adductor/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Adductor/1.jpg" ], "id": "Adductor" }, @@ -136,8 +160,8 @@ ], "category": "stretching", "images": [ - "Adductor_Groin/0.jpg", - "Adductor_Groin/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Adductor_Groin/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Adductor_Groin/1.jpg" ], "id": "Adductor_Groin" }, @@ -163,8 +187,8 @@ ], "category": "strength", "images": [ - "Advanced_Kettlebell_Windmill/0.jpg", - "Advanced_Kettlebell_Windmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Advanced_Kettlebell_Windmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Advanced_Kettlebell_Windmill/1.jpg" ], "id": "Advanced_Kettlebell_Windmill" }, @@ -188,8 +212,8 @@ ], "category": "strength", "images": [ - "Air_Bike/0.jpg", - "Air_Bike/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Air_Bike/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Air_Bike/1.jpg" ], "id": "Air_Bike" }, @@ -212,8 +236,8 @@ ], "category": "stretching", "images": [ - "All_Fours_Quad_Stretch/0.jpg", - "All_Fours_Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/All_Fours_Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/All_Fours_Quad_Stretch/1.jpg" ], "id": "All_Fours_Quad_Stretch" }, @@ -239,8 +263,8 @@ ], "category": "strength", "images": [ - "Alternate_Hammer_Curl/0.jpg", - "Alternate_Hammer_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Hammer_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Hammer_Curl/1.jpg" ], "id": "Alternate_Hammer_Curl" }, @@ -263,8 +287,8 @@ ], "category": "strength", "images": [ - "Alternate_Heel_Touchers/0.jpg", - "Alternate_Heel_Touchers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Heel_Touchers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Heel_Touchers/1.jpg" ], "id": "Alternate_Heel_Touchers" }, @@ -289,8 +313,8 @@ ], "category": "strength", "images": [ - "Alternate_Incline_Dumbbell_Curl/0.jpg", - "Alternate_Incline_Dumbbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Incline_Dumbbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Incline_Dumbbell_Curl/1.jpg" ], "id": "Alternate_Incline_Dumbbell_Curl" }, @@ -318,8 +342,8 @@ ], "category": "plyometrics", "images": [ - "Alternate_Leg_Diagonal_Bound/0.jpg", - "Alternate_Leg_Diagonal_Bound/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Leg_Diagonal_Bound/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternate_Leg_Diagonal_Bound/1.jpg" ], "id": "Alternate_Leg_Diagonal_Bound" }, @@ -343,8 +367,8 @@ ], "category": "strength", "images": [ - "Alternating_Cable_Shoulder_Press/0.jpg", - "Alternating_Cable_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Cable_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Cable_Shoulder_Press/1.jpg" ], "id": "Alternating_Cable_Shoulder_Press" }, @@ -367,8 +391,8 @@ ], "category": "strength", "images": [ - "Alternating_Deltoid_Raise/0.jpg", - "Alternating_Deltoid_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Deltoid_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Deltoid_Raise/1.jpg" ], "id": "Alternating_Deltoid_Raise" }, @@ -394,8 +418,8 @@ ], "category": "strength", "images": [ - "Alternating_Floor_Press/0.jpg", - "Alternating_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Floor_Press/1.jpg" ], "id": "Alternating_Floor_Press" }, @@ -423,8 +447,8 @@ ], "category": "strength", "images": [ - "Alternating_Hang_Clean/0.jpg", - "Alternating_Hang_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Hang_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Hang_Clean/1.jpg" ], "id": "Alternating_Hang_Clean" }, @@ -447,8 +471,8 @@ ], "category": "strength", "images": [ - "Alternating_Kettlebell_Press/0.jpg", - "Alternating_Kettlebell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Kettlebell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Kettlebell_Press/1.jpg" ], "id": "Alternating_Kettlebell_Press" }, @@ -472,8 +496,8 @@ ], "category": "strength", "images": [ - "Alternating_Kettlebell_Row/0.jpg", - "Alternating_Kettlebell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Kettlebell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Kettlebell_Row/1.jpg" ], "id": "Alternating_Kettlebell_Row" }, @@ -500,8 +524,8 @@ ], "category": "strength", "images": [ - "Alternating_Renegade_Row/0.jpg", - "Alternating_Renegade_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Renegade_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Alternating_Renegade_Row/1.jpg" ], "id": "Alternating_Renegade_Row" }, @@ -522,8 +546,8 @@ ], "category": "stretching", "images": [ - "Ankle_Circles/0.jpg", - "Ankle_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ankle_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ankle_Circles/1.jpg" ], "id": "Ankle_Circles" }, @@ -544,8 +568,8 @@ ], "category": "stretching", "images": [ - "Ankle_On_The_Knee/0.jpg", - "Ankle_On_The_Knee/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ankle_On_The_Knee/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ankle_On_The_Knee/1.jpg" ], "id": "Ankle_On_The_Knee" }, @@ -565,8 +589,8 @@ ], "category": "stretching", "images": [ - "Anterior_Tibialis-SMR/0.jpg", - "Anterior_Tibialis-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Anterior_Tibialis-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Anterior_Tibialis-SMR/1.jpg" ], "id": "Anterior_Tibialis-SMR" }, @@ -592,8 +616,8 @@ ], "category": "strength", "images": [ - "Anti-Gravity_Press/0.jpg", - "Anti-Gravity_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Anti-Gravity_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Anti-Gravity_Press/1.jpg" ], "id": "Anti-Gravity_Press" }, @@ -616,8 +640,8 @@ ], "category": "stretching", "images": [ - "Arm_Circles/0.jpg", - "Arm_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Arm_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Arm_Circles/1.jpg" ], "id": "Arm_Circles" }, @@ -642,8 +666,8 @@ ], "category": "strength", "images": [ - "Arnold_Dumbbell_Press/0.jpg", - "Arnold_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Arnold_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Arnold_Dumbbell_Press/1.jpg" ], "id": "Arnold_Dumbbell_Press" }, @@ -666,8 +690,8 @@ ], "category": "strength", "images": [ - "Around_The_Worlds/0.jpg", - "Around_The_Worlds/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Around_The_Worlds/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Around_The_Worlds/1.jpg" ], "id": "Around_The_Worlds" }, @@ -695,8 +719,8 @@ ], "category": "strongman", "images": [ - "Atlas_Stone_Trainer/0.jpg", - "Atlas_Stone_Trainer/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Atlas_Stone_Trainer/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Atlas_Stone_Trainer/1.jpg" ], "id": "Atlas_Stone_Trainer" }, @@ -729,8 +753,8 @@ ], "category": "strongman", "images": [ - "Atlas_Stones/0.jpg", - "Atlas_Stones/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Atlas_Stones/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Atlas_Stones/1.jpg" ], "id": "Atlas_Stones" }, @@ -759,8 +783,8 @@ ], "category": "strongman", "images": [ - "Axle_Deadlift/0.jpg", - "Axle_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Axle_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Axle_Deadlift/1.jpg" ], "id": "Axle_Deadlift" }, @@ -787,8 +811,8 @@ ], "category": "strength", "images": [ - "Back_Flyes_-_With_Bands/0.jpg", - "Back_Flyes_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Back_Flyes_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Back_Flyes_-_With_Bands/1.jpg" ], "id": "Back_Flyes_-_With_Bands" }, @@ -814,8 +838,8 @@ ], "category": "strongman", "images": [ - "Backward_Drag/0.jpg", - "Backward_Drag/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Backward_Drag/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Backward_Drag/1.jpg" ], "id": "Backward_Drag" }, @@ -837,8 +861,8 @@ ], "category": "plyometrics", "images": [ - "Backward_Medicine_Ball_Throw/0.jpg", - "Backward_Medicine_Ball_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Backward_Medicine_Ball_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Backward_Medicine_Ball_Throw/1.jpg" ], "id": "Backward_Medicine_Ball_Throw" }, @@ -862,8 +886,8 @@ ], "category": "strength", "images": [ - "Balance_Board/0.jpg", - "Balance_Board/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Balance_Board/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Balance_Board/1.jpg" ], "id": "Balance_Board" }, @@ -889,8 +913,8 @@ ], "category": "strength", "images": [ - "Ball_Leg_Curl/0.jpg", - "Ball_Leg_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ball_Leg_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ball_Leg_Curl/1.jpg" ], "id": "Ball_Leg_Curl" }, @@ -916,8 +940,8 @@ ], "category": "strength", "images": [ - "Band_Assisted_Pull-Up/0.jpg", - "Band_Assisted_Pull-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Assisted_Pull-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Assisted_Pull-Up/1.jpg" ], "id": "Band_Assisted_Pull-Up" }, @@ -941,8 +965,8 @@ ], "category": "powerlifting", "images": [ - "Band_Good_Morning/0.jpg", - "Band_Good_Morning/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Good_Morning/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Good_Morning/1.jpg" ], "id": "Band_Good_Morning" }, @@ -966,8 +990,8 @@ ], "category": "powerlifting", "images": [ - "Band_Good_Morning_Pull_Through/0.jpg", - "Band_Good_Morning_Pull_Through/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Good_Morning_Pull_Through/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Good_Morning_Pull_Through/1.jpg" ], "id": "Band_Good_Morning_Pull_Through" }, @@ -991,8 +1015,8 @@ ], "category": "strength", "images": [ - "Band_Hip_Adductions/0.jpg", - "Band_Hip_Adductions/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Hip_Adductions/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Hip_Adductions/1.jpg" ], "id": "Band_Hip_Adductions" }, @@ -1017,8 +1041,8 @@ ], "category": "strength", "images": [ - "Band_Pull_Apart/0.jpg", - "Band_Pull_Apart/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Pull_Apart/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Pull_Apart/1.jpg" ], "id": "Band_Pull_Apart" }, @@ -1039,8 +1063,8 @@ ], "category": "strength", "images": [ - "Band_Skull_Crusher/0.jpg", - "Band_Skull_Crusher/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Skull_Crusher/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Band_Skull_Crusher/1.jpg" ], "id": "Band_Skull_Crusher" }, @@ -1065,8 +1089,8 @@ ], "category": "strength", "images": [ - "Barbell_Ab_Rollout/0.jpg", - "Barbell_Ab_Rollout/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Ab_Rollout/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Ab_Rollout/1.jpg" ], "id": "Barbell_Ab_Rollout" }, @@ -1091,8 +1115,8 @@ ], "category": "strength", "images": [ - "Barbell_Ab_Rollout_-_On_Knees/0.jpg", - "Barbell_Ab_Rollout_-_On_Knees/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Ab_Rollout_-_On_Knees/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Ab_Rollout_-_On_Knees/1.jpg" ], "id": "Barbell_Ab_Rollout_-_On_Knees" }, @@ -1118,8 +1142,8 @@ ], "category": "strength", "images": [ - "Barbell_Bench_Press_-_Medium_Grip/0.jpg", - "Barbell_Bench_Press_-_Medium_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Bench_Press_-_Medium_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Bench_Press_-_Medium_Grip/1.jpg" ], "id": "Barbell_Bench_Press_-_Medium_Grip" }, @@ -1144,8 +1168,8 @@ ], "category": "strength", "images": [ - "Barbell_Curl/0.jpg", - "Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Curl/1.jpg" ], "id": "Barbell_Curl" }, @@ -1167,8 +1191,8 @@ ], "category": "strength", "images": [ - "Barbell_Curls_Lying_Against_An_Incline/0.jpg", - "Barbell_Curls_Lying_Against_An_Incline/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Curls_Lying_Against_An_Incline/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Curls_Lying_Against_An_Incline/1.jpg" ], "id": "Barbell_Curls_Lying_Against_An_Incline" }, @@ -1200,8 +1224,8 @@ ], "category": "strength", "images": [ - "Barbell_Deadlift/0.jpg", - "Barbell_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Deadlift/1.jpg" ], "id": "Barbell_Deadlift" }, @@ -1230,8 +1254,8 @@ ], "category": "strength", "images": [ - "Barbell_Full_Squat/0.jpg", - "Barbell_Full_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Full_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Full_Squat/1.jpg" ], "id": "Barbell_Full_Squat" }, @@ -1255,8 +1279,8 @@ ], "category": "powerlifting", "images": [ - "Barbell_Glute_Bridge/0.jpg", - "Barbell_Glute_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Glute_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Glute_Bridge/1.jpg" ], "id": "Barbell_Glute_Bridge" }, @@ -1282,8 +1306,8 @@ ], "category": "strength", "images": [ - "Barbell_Guillotine_Bench_Press/0.jpg", - "Barbell_Guillotine_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Guillotine_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Guillotine_Bench_Press/1.jpg" ], "id": "Barbell_Guillotine_Bench_Press" }, @@ -1309,8 +1333,8 @@ ], "category": "strength", "images": [ - "Barbell_Hack_Squat/0.jpg", - "Barbell_Hack_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Hack_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Hack_Squat/1.jpg" ], "id": "Barbell_Hack_Squat" }, @@ -1334,8 +1358,8 @@ ], "category": "powerlifting", "images": [ - "Barbell_Hip_Thrust/0.jpg", - "Barbell_Hip_Thrust/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Hip_Thrust/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Hip_Thrust/1.jpg" ], "id": "Barbell_Hip_Thrust" }, @@ -1361,8 +1385,8 @@ ], "category": "strength", "images": [ - "Barbell_Incline_Bench_Press_-_Medium_Grip/0.jpg", - "Barbell_Incline_Bench_Press_-_Medium_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Incline_Bench_Press_-_Medium_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Incline_Bench_Press_-_Medium_Grip/1.jpg" ], "id": "Barbell_Incline_Bench_Press_-_Medium_Grip" }, @@ -1386,8 +1410,8 @@ ], "category": "strength", "images": [ - "Barbell_Incline_Shoulder_Raise/0.jpg", - "Barbell_Incline_Shoulder_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Incline_Shoulder_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Incline_Shoulder_Raise/1.jpg" ], "id": "Barbell_Incline_Shoulder_Raise" }, @@ -1414,8 +1438,8 @@ ], "category": "strength", "images": [ - "Barbell_Lunge/0.jpg", - "Barbell_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Lunge/1.jpg" ], "id": "Barbell_Lunge" }, @@ -1442,8 +1466,8 @@ ], "category": "strength", "images": [ - "Barbell_Rear_Delt_Row/0.jpg", - "Barbell_Rear_Delt_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Rear_Delt_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Rear_Delt_Row/1.jpg" ], "id": "Barbell_Rear_Delt_Row" }, @@ -1469,8 +1493,8 @@ ], "category": "strength", "images": [ - "Barbell_Rollout_from_Bench/0.jpg", - "Barbell_Rollout_from_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Rollout_from_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Rollout_from_Bench/1.jpg" ], "id": "Barbell_Rollout_from_Bench" }, @@ -1494,8 +1518,8 @@ ], "category": "strength", "images": [ - "Barbell_Seated_Calf_Raise/0.jpg", - "Barbell_Seated_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Seated_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Seated_Calf_Raise/1.jpg" ], "id": "Barbell_Seated_Calf_Raise" }, @@ -1521,8 +1545,8 @@ ], "category": "strength", "images": [ - "Barbell_Shoulder_Press/0.jpg", - "Barbell_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shoulder_Press/1.jpg" ], "id": "Barbell_Shoulder_Press" }, @@ -1544,8 +1568,8 @@ ], "category": "strength", "images": [ - "Barbell_Shrug/0.jpg", - "Barbell_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shrug/1.jpg" ], "id": "Barbell_Shrug" }, @@ -1570,8 +1594,8 @@ ], "category": "strength", "images": [ - "Barbell_Shrug_Behind_The_Back/0.jpg", - "Barbell_Shrug_Behind_The_Back/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shrug_Behind_The_Back/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Shrug_Behind_The_Back/1.jpg" ], "id": "Barbell_Shrug_Behind_The_Back" }, @@ -1595,8 +1619,8 @@ ], "category": "strength", "images": [ - "Barbell_Side_Bend/0.jpg", - "Barbell_Side_Bend/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Side_Bend/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Side_Bend/1.jpg" ], "id": "Barbell_Side_Bend" }, @@ -1622,8 +1646,8 @@ ], "category": "strength", "images": [ - "Barbell_Side_Split_Squat/0.jpg", - "Barbell_Side_Split_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Side_Split_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Side_Split_Squat/1.jpg" ], "id": "Barbell_Side_Split_Squat" }, @@ -1652,8 +1676,8 @@ ], "category": "strength", "images": [ - "Barbell_Squat/0.jpg", - "Barbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Squat/1.jpg" ], "id": "Barbell_Squat" }, @@ -1684,8 +1708,8 @@ ], "category": "strength", "images": [ - "Barbell_Squat_To_A_Bench/0.jpg", - "Barbell_Squat_To_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Squat_To_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Squat_To_A_Bench/1.jpg" ], "id": "Barbell_Squat_To_A_Bench" }, @@ -1712,8 +1736,8 @@ ], "category": "strength", "images": [ - "Barbell_Step_Ups/0.jpg", - "Barbell_Step_Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Step_Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Step_Ups/1.jpg" ], "id": "Barbell_Step_Ups" }, @@ -1739,8 +1763,8 @@ ], "category": "strength", "images": [ - "Barbell_Walking_Lunge/0.jpg", - "Barbell_Walking_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Walking_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Barbell_Walking_Lunge/1.jpg" ], "id": "Barbell_Walking_Lunge" }, @@ -1765,8 +1789,8 @@ ], "category": "strength", "images": [ - "Battling_Ropes/0.jpg", - "Battling_Ropes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Battling_Ropes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Battling_Ropes/1.jpg" ], "id": "Battling_Ropes" }, @@ -1790,8 +1814,8 @@ ], "category": "strongman", "images": [ - "Bear_Crawl_Sled_Drags/0.jpg", - "Bear_Crawl_Sled_Drags/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bear_Crawl_Sled_Drags/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bear_Crawl_Sled_Drags/1.jpg" ], "id": "Bear_Crawl_Sled_Drags" }, @@ -1815,8 +1839,8 @@ ], "category": "stretching", "images": [ - "Behind_Head_Chest_Stretch/0.jpg", - "Behind_Head_Chest_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Behind_Head_Chest_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Behind_Head_Chest_Stretch/1.jpg" ], "id": "Behind_Head_Chest_Stretch" }, @@ -1841,8 +1865,8 @@ ], "category": "strength", "images": [ - "Bench_Dips/0.jpg", - "Bench_Dips/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Dips/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Dips/1.jpg" ], "id": "Bench_Dips" }, @@ -1869,8 +1893,8 @@ ], "category": "plyometrics", "images": [ - "Bench_Jump/0.jpg", - "Bench_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Jump/1.jpg" ], "id": "Bench_Jump" }, @@ -1897,8 +1921,8 @@ ], "category": "powerlifting", "images": [ - "Bench_Press_-_Powerlifting/0.jpg", - "Bench_Press_-_Powerlifting/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_-_Powerlifting/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_-_Powerlifting/1.jpg" ], "id": "Bench_Press_-_Powerlifting" }, @@ -1926,8 +1950,8 @@ ], "category": "strength", "images": [ - "Bench_Press_-_With_Bands/0.jpg", - "Bench_Press_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_-_With_Bands/1.jpg" ], "id": "Bench_Press_-_With_Bands" }, @@ -1953,8 +1977,8 @@ ], "category": "powerlifting", "images": [ - "Bench_Press_with_Chains/0.jpg", - "Bench_Press_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Press_with_Chains/1.jpg" ], "id": "Bench_Press_with_Chains" }, @@ -1980,8 +2004,8 @@ ], "category": "plyometrics", "images": [ - "Bench_Sprint/0.jpg", - "Bench_Sprint/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Sprint/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bench_Sprint/1.jpg" ], "id": "Bench_Sprint" }, @@ -2009,8 +2033,8 @@ ], "category": "strength", "images": [ - "Bent-Arm_Barbell_Pullover/0.jpg", - "Bent-Arm_Barbell_Pullover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Arm_Barbell_Pullover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Arm_Barbell_Pullover/1.jpg" ], "id": "Bent-Arm_Barbell_Pullover" }, @@ -2038,8 +2062,8 @@ ], "category": "strength", "images": [ - "Bent-Arm_Dumbbell_Pullover/0.jpg", - "Bent-Arm_Dumbbell_Pullover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Arm_Dumbbell_Pullover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Arm_Dumbbell_Pullover/1.jpg" ], "id": "Bent-Arm_Dumbbell_Pullover" }, @@ -2062,8 +2086,8 @@ ], "category": "strength", "images": [ - "Bent-Knee_Hip_Raise/0.jpg", - "Bent-Knee_Hip_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Knee_Hip_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent-Knee_Hip_Raise/1.jpg" ], "id": "Bent-Knee_Hip_Raise" }, @@ -2089,8 +2113,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Barbell_Row/0.jpg", - "Bent_Over_Barbell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Barbell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Barbell_Row/1.jpg" ], "id": "Bent_Over_Barbell_Row" }, @@ -2113,8 +2137,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Dumbbell_Rear_Delt_Raise_With_Head_On_Bench/0.jpg", - "Bent_Over_Dumbbell_Rear_Delt_Raise_With_Head_On_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Dumbbell_Rear_Delt_Raise_With_Head_On_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Dumbbell_Rear_Delt_Raise_With_Head_On_Bench/1.jpg" ], "id": "Bent_Over_Dumbbell_Rear_Delt_Raise_With_Head_On_Bench" }, @@ -2141,8 +2165,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Low-Pulley_Side_Lateral/0.jpg", - "Bent_Over_Low-Pulley_Side_Lateral/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Low-Pulley_Side_Lateral/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Low-Pulley_Side_Lateral/1.jpg" ], "id": "Bent_Over_Low-Pulley_Side_Lateral" }, @@ -2171,8 +2195,8 @@ ], "category": "strength", "images": [ - "Bent_Over_One-Arm_Long_Bar_Row/0.jpg", - "Bent_Over_One-Arm_Long_Bar_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_One-Arm_Long_Bar_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_One-Arm_Long_Bar_Row/1.jpg" ], "id": "Bent_Over_One-Arm_Long_Bar_Row" }, @@ -2199,8 +2223,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Two-Arm_Long_Bar_Row/0.jpg", - "Bent_Over_Two-Arm_Long_Bar_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Arm_Long_Bar_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Arm_Long_Bar_Row/1.jpg" ], "id": "Bent_Over_Two-Arm_Long_Bar_Row" }, @@ -2226,8 +2250,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Two-Dumbbell_Row/0.jpg", - "Bent_Over_Two-Dumbbell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Dumbbell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Dumbbell_Row/1.jpg" ], "id": "Bent_Over_Two-Dumbbell_Row" }, @@ -2252,8 +2276,8 @@ ], "category": "strength", "images": [ - "Bent_Over_Two-Dumbbell_Row_With_Palms_In/0.jpg", - "Bent_Over_Two-Dumbbell_Row_With_Palms_In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Dumbbell_Row_With_Palms_In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Over_Two-Dumbbell_Row_With_Palms_In/1.jpg" ], "id": "Bent_Over_Two-Dumbbell_Row_With_Palms_In" }, @@ -2281,8 +2305,8 @@ ], "category": "strength", "images": [ - "Bent_Press/0.jpg", - "Bent_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bent_Press/1.jpg" ], "id": "Bent_Press" }, @@ -2305,8 +2329,8 @@ ], "category": "cardio", "images": [ - "Bicycling/0.jpg", - "Bicycling/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bicycling/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bicycling/1.jpg" ], "id": "Bicycling" }, @@ -2330,8 +2354,8 @@ ], "category": "cardio", "images": [ - "Bicycling_Stationary/0.jpg", - "Bicycling_Stationary/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bicycling_Stationary/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bicycling_Stationary/1.jpg" ], "id": "Bicycling_Stationary" }, @@ -2358,8 +2382,8 @@ ], "category": "powerlifting", "images": [ - "Board_Press/0.jpg", - "Board_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Board_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Board_Press/1.jpg" ], "id": "Board_Press" }, @@ -2384,8 +2408,8 @@ ], "category": "strength", "images": [ - "Body-Up/0.jpg", - "Body-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Body-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Body-Up/1.jpg" ], "id": "Body-Up" }, @@ -2408,8 +2432,8 @@ ], "category": "strength", "images": [ - "Body_Tricep_Press/0.jpg", - "Body_Tricep_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Body_Tricep_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Body_Tricep_Press/1.jpg" ], "id": "Body_Tricep_Press" }, @@ -2436,8 +2460,8 @@ ], "category": "strength", "images": [ - "Bodyweight_Flyes/0.jpg", - "Bodyweight_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Flyes/1.jpg" ], "id": "Bodyweight_Flyes" }, @@ -2461,8 +2485,8 @@ ], "category": "strength", "images": [ - "Bodyweight_Mid_Row/0.jpg", - "Bodyweight_Mid_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Mid_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Mid_Row/1.jpg" ], "id": "Bodyweight_Mid_Row" }, @@ -2486,8 +2510,8 @@ ], "category": "strength", "images": [ - "Bodyweight_Squat/0.jpg", - "Bodyweight_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Squat/1.jpg" ], "id": "Bodyweight_Squat" }, @@ -2513,8 +2537,8 @@ ], "category": "strength", "images": [ - "Bodyweight_Walking_Lunge/0.jpg", - "Bodyweight_Walking_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Walking_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bodyweight_Walking_Lunge/1.jpg" ], "id": "Bodyweight_Walking_Lunge" }, @@ -2542,8 +2566,8 @@ ], "category": "strength", "images": [ - "Bosu_Ball_Cable_Crunch_With_Side_Bends/0.jpg", - "Bosu_Ball_Cable_Crunch_With_Side_Bends/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bosu_Ball_Cable_Crunch_With_Side_Bends/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bosu_Ball_Cable_Crunch_With_Side_Bends/1.jpg" ], "id": "Bosu_Ball_Cable_Crunch_With_Side_Bends" }, @@ -2566,8 +2590,8 @@ ], "category": "strength", "images": [ - "Bottoms-Up_Clean_From_The_Hang_Position/0.jpg", - "Bottoms-Up_Clean_From_The_Hang_Position/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bottoms-Up_Clean_From_The_Hang_Position/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bottoms-Up_Clean_From_The_Hang_Position/1.jpg" ], "id": "Bottoms-Up_Clean_From_The_Hang_Position" }, @@ -2588,8 +2612,8 @@ ], "category": "strength", "images": [ - "Bottoms_Up/0.jpg", - "Bottoms_Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bottoms_Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bottoms_Up/1.jpg" ], "id": "Bottoms_Up" }, @@ -2616,8 +2640,8 @@ ], "category": "plyometrics", "images": [ - "Box_Jump_Multiple_Response/0.jpg", - "Box_Jump_Multiple_Response/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Jump_Multiple_Response/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Jump_Multiple_Response/1.jpg" ], "id": "Box_Jump_Multiple_Response" }, @@ -2646,8 +2670,8 @@ ], "category": "plyometrics", "images": [ - "Box_Skip/0.jpg", - "Box_Skip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Skip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Skip/1.jpg" ], "id": "Box_Skip" }, @@ -2675,8 +2699,8 @@ ], "category": "powerlifting", "images": [ - "Box_Squat/0.jpg", - "Box_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat/1.jpg" ], "id": "Box_Squat" }, @@ -2705,8 +2729,8 @@ ], "category": "powerlifting", "images": [ - "Box_Squat_with_Bands/0.jpg", - "Box_Squat_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat_with_Bands/1.jpg" ], "id": "Box_Squat_with_Bands" }, @@ -2736,8 +2760,8 @@ ], "category": "strength", "images": [ - "Box_Squat_with_Chains/0.jpg", - "Box_Squat_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Box_Squat_with_Chains/1.jpg" ], "id": "Box_Squat_with_Chains" }, @@ -2757,8 +2781,8 @@ ], "category": "stretching", "images": [ - "Brachialis-SMR/0.jpg", - "Brachialis-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Brachialis-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Brachialis-SMR/1.jpg" ], "id": "Brachialis-SMR" }, @@ -2784,8 +2808,8 @@ ], "category": "strength", "images": [ - "Bradford_Rocky_Presses/0.jpg", - "Bradford_Rocky_Presses/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bradford_Rocky_Presses/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Bradford_Rocky_Presses/1.jpg" ], "id": "Bradford_Rocky_Presses" }, @@ -2808,8 +2832,8 @@ ], "category": "strength", "images": [ - "Butt-Ups/0.jpg", - "Butt-Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butt-Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butt-Ups/1.jpg" ], "id": "Butt-Ups" }, @@ -2832,8 +2856,8 @@ ], "category": "strength", "images": [ - "Butt_Lift_Bridge/0.jpg", - "Butt_Lift_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butt_Lift_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butt_Lift_Bridge/1.jpg" ], "id": "Butt_Lift_Bridge" }, @@ -2856,8 +2880,8 @@ ], "category": "strength", "images": [ - "Butterfly/0.jpg", - "Butterfly/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butterfly/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Butterfly/1.jpg" ], "id": "Butterfly" }, @@ -2882,8 +2906,8 @@ ], "category": "strength", "images": [ - "Cable_Chest_Press/0.jpg", - "Cable_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Chest_Press/1.jpg" ], "id": "Cable_Chest_Press" }, @@ -2908,8 +2932,8 @@ ], "category": "strength", "images": [ - "Cable_Crossover/0.jpg", - "Cable_Crossover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Crossover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Crossover/1.jpg" ], "id": "Cable_Crossover" }, @@ -2933,8 +2957,8 @@ ], "category": "strength", "images": [ - "Cable_Crunch/0.jpg", - "Cable_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Crunch/1.jpg" ], "id": "Cable_Crunch" }, @@ -2961,8 +2985,8 @@ ], "category": "strength", "images": [ - "Cable_Deadlifts/0.jpg", - "Cable_Deadlifts/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Deadlifts/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Deadlifts/1.jpg" ], "id": "Cable_Deadlifts" }, @@ -2986,8 +3010,8 @@ ], "category": "strength", "images": [ - "Cable_Hammer_Curls_-_Rope_Attachment/0.jpg", - "Cable_Hammer_Curls_-_Rope_Attachment/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Hammer_Curls_-_Rope_Attachment/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Hammer_Curls_-_Rope_Attachment/1.jpg" ], "id": "Cable_Hammer_Curls_-_Rope_Attachment" }, @@ -3012,8 +3036,8 @@ ], "category": "strength", "images": [ - "Cable_Hip_Adduction/0.jpg", - "Cable_Hip_Adduction/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Hip_Adduction/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Hip_Adduction/1.jpg" ], "id": "Cable_Hip_Adduction" }, @@ -3036,8 +3060,8 @@ ], "category": "strength", "images": [ - "Cable_Incline_Pushdown/0.jpg", - "Cable_Incline_Pushdown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Incline_Pushdown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Incline_Pushdown/1.jpg" ], "id": "Cable_Incline_Pushdown" }, @@ -3060,8 +3084,8 @@ ], "category": "strength", "images": [ - "Cable_Incline_Triceps_Extension/0.jpg", - "Cable_Incline_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Incline_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Incline_Triceps_Extension/1.jpg" ], "id": "Cable_Incline_Triceps_Extension" }, @@ -3084,8 +3108,8 @@ ], "category": "strength", "images": [ - "Cable_Internal_Rotation/0.jpg", - "Cable_Internal_Rotation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Internal_Rotation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Internal_Rotation/1.jpg" ], "id": "Cable_Internal_Rotation" }, @@ -3108,8 +3132,8 @@ ], "category": "strength", "images": [ - "Cable_Iron_Cross/0.jpg", - "Cable_Iron_Cross/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Iron_Cross/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Iron_Cross/1.jpg" ], "id": "Cable_Iron_Cross" }, @@ -3132,8 +3156,8 @@ ], "category": "strength", "images": [ - "Cable_Judo_Flip/0.jpg", - "Cable_Judo_Flip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Judo_Flip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Judo_Flip/1.jpg" ], "id": "Cable_Judo_Flip" }, @@ -3156,8 +3180,8 @@ ], "category": "strength", "images": [ - "Cable_Lying_Triceps_Extension/0.jpg", - "Cable_Lying_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Lying_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Lying_Triceps_Extension/1.jpg" ], "id": "Cable_Lying_Triceps_Extension" }, @@ -3181,8 +3205,8 @@ ], "category": "strength", "images": [ - "Cable_One_Arm_Tricep_Extension/0.jpg", - "Cable_One_Arm_Tricep_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_One_Arm_Tricep_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_One_Arm_Tricep_Extension/1.jpg" ], "id": "Cable_One_Arm_Tricep_Extension" }, @@ -3209,8 +3233,8 @@ ], "category": "strength", "images": [ - "Cable_Preacher_Curl/0.jpg", - "Cable_Preacher_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Preacher_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Preacher_Curl/1.jpg" ], "id": "Cable_Preacher_Curl" }, @@ -3232,8 +3256,8 @@ ], "category": "strength", "images": [ - "Cable_Rear_Delt_Fly/0.jpg", - "Cable_Rear_Delt_Fly/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rear_Delt_Fly/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rear_Delt_Fly/1.jpg" ], "id": "Cable_Rear_Delt_Fly" }, @@ -3257,8 +3281,8 @@ ], "category": "strength", "images": [ - "Cable_Reverse_Crunch/0.jpg", - "Cable_Reverse_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Reverse_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Reverse_Crunch/1.jpg" ], "id": "Cable_Reverse_Crunch" }, @@ -3281,8 +3305,8 @@ ], "category": "strength", "images": [ - "Cable_Rope_Overhead_Triceps_Extension/0.jpg", - "Cable_Rope_Overhead_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rope_Overhead_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rope_Overhead_Triceps_Extension/1.jpg" ], "id": "Cable_Rope_Overhead_Triceps_Extension" }, @@ -3309,8 +3333,8 @@ ], "category": "strength", "images": [ - "Cable_Rope_Rear-Delt_Rows/0.jpg", - "Cable_Rope_Rear-Delt_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rope_Rear-Delt_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Rope_Rear-Delt_Rows/1.jpg" ], "id": "Cable_Rope_Rear-Delt_Rows" }, @@ -3335,8 +3359,8 @@ ], "category": "strength", "images": [ - "Cable_Russian_Twists/0.jpg", - "Cable_Russian_Twists/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Russian_Twists/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Russian_Twists/1.jpg" ], "id": "Cable_Russian_Twists" }, @@ -3359,8 +3383,8 @@ ], "category": "strength", "images": [ - "Cable_Seated_Crunch/0.jpg", - "Cable_Seated_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Seated_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Seated_Crunch/1.jpg" ], "id": "Cable_Seated_Crunch" }, @@ -3388,8 +3412,8 @@ ], "category": "strength", "images": [ - "Cable_Seated_Lateral_Raise/0.jpg", - "Cable_Seated_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Seated_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Seated_Lateral_Raise/1.jpg" ], "id": "Cable_Seated_Lateral_Raise" }, @@ -3413,8 +3437,8 @@ ], "category": "strength", "images": [ - "Cable_Shoulder_Press/0.jpg", - "Cable_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Shoulder_Press/1.jpg" ], "id": "Cable_Shoulder_Press" }, @@ -3437,8 +3461,8 @@ ], "category": "strength", "images": [ - "Cable_Shrugs/0.jpg", - "Cable_Shrugs/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Shrugs/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Shrugs/1.jpg" ], "id": "Cable_Shrugs" }, @@ -3462,8 +3486,8 @@ ], "category": "strength", "images": [ - "Cable_Wrist_Curl/0.jpg", - "Cable_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cable_Wrist_Curl/1.jpg" ], "id": "Cable_Wrist_Curl" }, @@ -3485,8 +3509,8 @@ ], "category": "strength", "images": [ - "Calf-Machine_Shoulder_Shrug/0.jpg", - "Calf-Machine_Shoulder_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf-Machine_Shoulder_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf-Machine_Shoulder_Shrug/1.jpg" ], "id": "Calf-Machine_Shoulder_Shrug" }, @@ -3508,8 +3532,8 @@ ], "category": "strength", "images": [ - "Calf_Press/0.jpg", - "Calf_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Press/1.jpg" ], "id": "Calf_Press" }, @@ -3532,8 +3556,8 @@ ], "category": "strength", "images": [ - "Calf_Press_On_The_Leg_Press_Machine/0.jpg", - "Calf_Press_On_The_Leg_Press_Machine/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Press_On_The_Leg_Press_Machine/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Press_On_The_Leg_Press_Machine/1.jpg" ], "id": "Calf_Press_On_The_Leg_Press_Machine" }, @@ -3556,8 +3580,8 @@ ], "category": "strength", "images": [ - "Calf_Raise_On_A_Dumbbell/0.jpg", - "Calf_Raise_On_A_Dumbbell/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Raise_On_A_Dumbbell/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Raise_On_A_Dumbbell/1.jpg" ], "id": "Calf_Raise_On_A_Dumbbell" }, @@ -3580,8 +3604,8 @@ ], "category": "strength", "images": [ - "Calf_Raises_-_With_Bands/0.jpg", - "Calf_Raises_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Raises_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Raises_-_With_Bands/1.jpg" ], "id": "Calf_Raises_-_With_Bands" }, @@ -3602,8 +3626,8 @@ ], "category": "stretching", "images": [ - "Calf_Stretch_Elbows_Against_Wall/0.jpg", - "Calf_Stretch_Elbows_Against_Wall/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Stretch_Elbows_Against_Wall/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Stretch_Elbows_Against_Wall/1.jpg" ], "id": "Calf_Stretch_Elbows_Against_Wall" }, @@ -3624,8 +3648,8 @@ ], "category": "stretching", "images": [ - "Calf_Stretch_Hands_Against_Wall/0.jpg", - "Calf_Stretch_Hands_Against_Wall/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Stretch_Hands_Against_Wall/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calf_Stretch_Hands_Against_Wall/1.jpg" ], "id": "Calf_Stretch_Hands_Against_Wall" }, @@ -3645,8 +3669,8 @@ ], "category": "stretching", "images": [ - "Calves-SMR/0.jpg", - "Calves-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calves-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Calves-SMR/1.jpg" ], "id": "Calves-SMR" }, @@ -3674,8 +3698,8 @@ ], "category": "strongman", "images": [ - "Car_Deadlift/0.jpg", - "Car_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Car_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Car_Deadlift/1.jpg" ], "id": "Car_Deadlift" }, @@ -3699,8 +3723,8 @@ ], "category": "strength", "images": [ - "Car_Drivers/0.jpg", - "Car_Drivers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Car_Drivers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Car_Drivers/1.jpg" ], "id": "Car_Drivers" }, @@ -3728,8 +3752,8 @@ ], "category": "plyometrics", "images": [ - "Carioca_Quick_Step/0.jpg", - "Carioca_Quick_Step/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Carioca_Quick_Step/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Carioca_Quick_Step/1.jpg" ], "id": "Carioca_Quick_Step" }, @@ -3753,8 +3777,8 @@ ], "category": "stretching", "images": [ - "Cat_Stretch/0.jpg", - "Cat_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cat_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cat_Stretch/1.jpg" ], "id": "Cat_Stretch" }, @@ -3779,8 +3803,8 @@ ], "category": "plyometrics", "images": [ - "Catch_and_Overhead_Throw/0.jpg", - "Catch_and_Overhead_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Catch_and_Overhead_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Catch_and_Overhead_Throw/1.jpg" ], "id": "Catch_and_Overhead_Throw" }, @@ -3801,8 +3825,8 @@ ], "category": "powerlifting", "images": [ - "Chain_Handle_Extension/0.jpg", - "Chain_Handle_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chain_Handle_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chain_Handle_Extension/1.jpg" ], "id": "Chain_Handle_Extension" }, @@ -3826,8 +3850,8 @@ ], "category": "powerlifting", "images": [ - "Chain_Press/0.jpg", - "Chain_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chain_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chain_Press/1.jpg" ], "id": "Chain_Press" }, @@ -3851,8 +3875,8 @@ ], "category": "stretching", "images": [ - "Chair_Leg_Extended_Stretch/0.jpg", - "Chair_Leg_Extended_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Leg_Extended_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Leg_Extended_Stretch/1.jpg" ], "id": "Chair_Leg_Extended_Stretch" }, @@ -3875,8 +3899,8 @@ ], "category": "stretching", "images": [ - "Chair_Lower_Back_Stretch/0.jpg", - "Chair_Lower_Back_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Lower_Back_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Lower_Back_Stretch/1.jpg" ], "id": "Chair_Lower_Back_Stretch" }, @@ -3904,8 +3928,8 @@ ], "category": "strength", "images": [ - "Chair_Squat/0.jpg", - "Chair_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Squat/1.jpg" ], "id": "Chair_Squat" }, @@ -3928,8 +3952,8 @@ ], "category": "stretching", "images": [ - "Chair_Upper_Body_Stretch/0.jpg", - "Chair_Upper_Body_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Upper_Body_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chair_Upper_Body_Stretch/1.jpg" ], "id": "Chair_Upper_Body_Stretch" }, @@ -3952,8 +3976,8 @@ ], "category": "stretching", "images": [ - "Chest_And_Front_Of_Shoulder_Stretch/0.jpg", - "Chest_And_Front_Of_Shoulder_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_And_Front_Of_Shoulder_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_And_Front_Of_Shoulder_Stretch/1.jpg" ], "id": "Chest_And_Front_Of_Shoulder_Stretch" }, @@ -3978,8 +4002,8 @@ ], "category": "plyometrics", "images": [ - "Chest_Push_from_3_point_stance/0.jpg", - "Chest_Push_from_3_point_stance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_from_3_point_stance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_from_3_point_stance/1.jpg" ], "id": "Chest_Push_from_3_point_stance" }, @@ -4005,8 +4029,8 @@ ], "category": "plyometrics", "images": [ - "Chest_Push_multiple_response/0.jpg", - "Chest_Push_multiple_response/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_multiple_response/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_multiple_response/1.jpg" ], "id": "Chest_Push_multiple_response" }, @@ -4031,8 +4055,8 @@ ], "category": "plyometrics", "images": [ - "Chest_Push_single_response/0.jpg", - "Chest_Push_single_response/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_single_response/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_single_response/1.jpg" ], "id": "Chest_Push_single_response" }, @@ -4057,8 +4081,8 @@ ], "category": "plyometrics", "images": [ - "Chest_Push_with_Run_Release/0.jpg", - "Chest_Push_with_Run_Release/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_with_Run_Release/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Push_with_Run_Release/1.jpg" ], "id": "Chest_Push_with_Run_Release" }, @@ -4079,8 +4103,8 @@ ], "category": "stretching", "images": [ - "Chest_Stretch_on_Stability_Ball/0.jpg", - "Chest_Stretch_on_Stability_Ball/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Stretch_on_Stability_Ball/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chest_Stretch_on_Stability_Ball/1.jpg" ], "id": "Chest_Stretch_on_Stability_Ball" }, @@ -4104,8 +4128,8 @@ ], "category": "stretching", "images": [ - "Childs_Pose/0.jpg", - "Childs_Pose/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Childs_Pose/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Childs_Pose/1.jpg" ], "id": "Childs_Pose" }, @@ -4132,8 +4156,8 @@ ], "category": "strength", "images": [ - "Chin-Up/0.jpg", - "Chin-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chin-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chin-Up/1.jpg" ], "id": "Chin-Up" }, @@ -4155,8 +4179,8 @@ ], "category": "stretching", "images": [ - "Chin_To_Chest_Stretch/0.jpg", - "Chin_To_Chest_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chin_To_Chest_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Chin_To_Chest_Stretch/1.jpg" ], "id": "Chin_To_Chest_Stretch" }, @@ -4185,8 +4209,8 @@ ], "category": "strongman", "images": [ - "Circus_Bell/0.jpg", - "Circus_Bell/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Circus_Bell/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Circus_Bell/1.jpg" ], "id": "Circus_Bell" }, @@ -4218,8 +4242,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean/0.jpg", - "Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean/1.jpg" ], "id": "Clean" }, @@ -4247,8 +4271,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean_Deadlift/0.jpg", - "Clean_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Deadlift/1.jpg" ], "id": "Clean_Deadlift" }, @@ -4275,8 +4299,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean_Pull/0.jpg", - "Clean_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Pull/1.jpg" ], "id": "Clean_Pull" }, @@ -4299,8 +4323,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean_Shrug/0.jpg", - "Clean_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_Shrug/1.jpg" ], "id": "Clean_Shrug" }, @@ -4334,8 +4358,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean_and_Jerk/0.jpg", - "Clean_and_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_and_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_and_Jerk/1.jpg" ], "id": "Clean_and_Jerk" }, @@ -4371,8 +4395,8 @@ ], "category": "strength", "images": [ - "Clean_and_Press/0.jpg", - "Clean_and_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_and_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_and_Press/1.jpg" ], "id": "Clean_and_Press" }, @@ -4400,8 +4424,8 @@ ], "category": "olympic weightlifting", "images": [ - "Clean_from_Blocks/0.jpg", - "Clean_from_Blocks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_from_Blocks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clean_from_Blocks/1.jpg" ], "id": "Clean_from_Blocks" }, @@ -4428,8 +4452,8 @@ ], "category": "strength", "images": [ - "Clock_Push-Up/0.jpg", - "Clock_Push-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clock_Push-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Clock_Push-Up/1.jpg" ], "id": "Clock_Push-Up" }, @@ -4455,8 +4479,8 @@ ], "category": "strength", "images": [ - "Close-Grip_Barbell_Bench_Press/0.jpg", - "Close-Grip_Barbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Barbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Barbell_Bench_Press/1.jpg" ], "id": "Close-Grip_Barbell_Bench_Press" }, @@ -4482,8 +4506,8 @@ ], "category": "strength", "images": [ - "Close-Grip_Dumbbell_Press/0.jpg", - "Close-Grip_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Dumbbell_Press/1.jpg" ], "id": "Close-Grip_Dumbbell_Press" }, @@ -4508,8 +4532,8 @@ ], "category": "strength", "images": [ - "Close-Grip_EZ-Bar_Curl_with_Band/0.jpg", - "Close-Grip_EZ-Bar_Curl_with_Band/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ-Bar_Curl_with_Band/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ-Bar_Curl_with_Band/1.jpg" ], "id": "Close-Grip_EZ-Bar_Curl_with_Band" }, @@ -4535,8 +4559,8 @@ ], "category": "strength", "images": [ - "Close-Grip_EZ-Bar_Press/0.jpg", - "Close-Grip_EZ-Bar_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ-Bar_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ-Bar_Press/1.jpg" ], "id": "Close-Grip_EZ-Bar_Press" }, @@ -4561,8 +4585,8 @@ ], "category": "strength", "images": [ - "Close-Grip_EZ_Bar_Curl/0.jpg", - "Close-Grip_EZ_Bar_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ_Bar_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_EZ_Bar_Curl/1.jpg" ], "id": "Close-Grip_EZ_Bar_Curl" }, @@ -4590,8 +4614,8 @@ ], "category": "strength", "images": [ - "Close-Grip_Front_Lat_Pulldown/0.jpg", - "Close-Grip_Front_Lat_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Front_Lat_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Front_Lat_Pulldown/1.jpg" ], "id": "Close-Grip_Front_Lat_Pulldown" }, @@ -4617,8 +4641,8 @@ ], "category": "strength", "images": [ - "Close-Grip_Push-Up_off_of_a_Dumbbell/0.jpg", - "Close-Grip_Push-Up_off_of_a_Dumbbell/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Push-Up_off_of_a_Dumbbell/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Push-Up_off_of_a_Dumbbell/1.jpg" ], "id": "Close-Grip_Push-Up_off_of_a_Dumbbell" }, @@ -4643,8 +4667,8 @@ ], "category": "strength", "images": [ - "Close-Grip_Standing_Barbell_Curl/0.jpg", - "Close-Grip_Standing_Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Standing_Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Close-Grip_Standing_Barbell_Curl/1.jpg" ], "id": "Close-Grip_Standing_Barbell_Curl" }, @@ -4665,8 +4689,8 @@ ], "category": "strength", "images": [ - "Cocoons/0.jpg", - "Cocoons/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cocoons/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cocoons/1.jpg" ], "id": "Cocoons" }, @@ -4694,8 +4718,8 @@ ], "category": "strongman", "images": [ - "Conans_Wheel/0.jpg", - "Conans_Wheel/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Conans_Wheel/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Conans_Wheel/1.jpg" ], "id": "Conans_Wheel" }, @@ -4720,8 +4744,8 @@ ], "category": "strength", "images": [ - "Concentration_Curls/0.jpg", - "Concentration_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Concentration_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Concentration_Curls/1.jpg" ], "id": "Concentration_Curls" }, @@ -4744,8 +4768,8 @@ ], "category": "strength", "images": [ - "Cross-Body_Crunch/0.jpg", - "Cross-Body_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross-Body_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross-Body_Crunch/1.jpg" ], "id": "Cross-Body_Crunch" }, @@ -4769,8 +4793,8 @@ ], "category": "strength", "images": [ - "Cross_Body_Hammer_Curl/0.jpg", - "Cross_Body_Hammer_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross_Body_Hammer_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross_Body_Hammer_Curl/1.jpg" ], "id": "Cross_Body_Hammer_Curl" }, @@ -4797,8 +4821,8 @@ ], "category": "strength", "images": [ - "Cross_Over_-_With_Bands/0.jpg", - "Cross_Over_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross_Over_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cross_Over_-_With_Bands/1.jpg" ], "id": "Cross_Over_-_With_Bands" }, @@ -4825,8 +4849,8 @@ ], "category": "stretching", "images": [ - "Crossover_Reverse_Lunge/0.jpg", - "Crossover_Reverse_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crossover_Reverse_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crossover_Reverse_Lunge/1.jpg" ], "id": "Crossover_Reverse_Lunge" }, @@ -4848,8 +4872,8 @@ ], "category": "strongman", "images": [ - "Crucifix/0.jpg", - "Crucifix/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crucifix/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crucifix/1.jpg" ], "id": "Crucifix" }, @@ -4872,8 +4896,8 @@ ], "category": "strength", "images": [ - "Crunch_-_Hands_Overhead/0.jpg", - "Crunch_-_Hands_Overhead/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunch_-_Hands_Overhead/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunch_-_Hands_Overhead/1.jpg" ], "id": "Crunch_-_Hands_Overhead" }, @@ -4898,8 +4922,8 @@ ], "category": "strength", "images": [ - "Crunch_-_Legs_On_Exercise_Ball/0.jpg", - "Crunch_-_Legs_On_Exercise_Ball/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunch_-_Legs_On_Exercise_Ball/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunch_-_Legs_On_Exercise_Ball/1.jpg" ], "id": "Crunch_-_Legs_On_Exercise_Ball" }, @@ -4923,8 +4947,8 @@ ], "category": "strength", "images": [ - "Crunches/0.jpg", - "Crunches/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunches/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Crunches/1.jpg" ], "id": "Crunches" }, @@ -4949,8 +4973,8 @@ ], "category": "strength", "images": [ - "Cuban_Press/0.jpg", - "Cuban_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cuban_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Cuban_Press/1.jpg" ], "id": "Cuban_Press" }, @@ -4975,8 +4999,8 @@ ], "category": "stretching", "images": [ - "Dancers_Stretch/0.jpg", - "Dancers_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dancers_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dancers_Stretch/1.jpg" ], "id": "Dancers_Stretch" }, @@ -5001,8 +5025,8 @@ ], "category": "strength", "images": [ - "Dead_Bug/0.jpg", - "Dead_Bug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dead_Bug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dead_Bug/1.jpg" ], "id": "Dead_Bug" }, @@ -5030,8 +5054,8 @@ ], "category": "powerlifting", "images": [ - "Deadlift_with_Bands/0.jpg", - "Deadlift_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deadlift_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deadlift_with_Bands/1.jpg" ], "id": "Deadlift_with_Bands" }, @@ -5060,8 +5084,8 @@ ], "category": "powerlifting", "images": [ - "Deadlift_with_Chains/0.jpg", - "Deadlift_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deadlift_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deadlift_with_Chains/1.jpg" ], "id": "Deadlift_with_Chains" }, @@ -5088,8 +5112,8 @@ ], "category": "strength", "images": [ - "Decline_Barbell_Bench_Press/0.jpg", - "Decline_Barbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Barbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Barbell_Bench_Press/1.jpg" ], "id": "Decline_Barbell_Bench_Press" }, @@ -5117,8 +5141,8 @@ ], "category": "strength", "images": [ - "Decline_Close-Grip_Bench_To_Skull_Crusher/0.jpg", - "Decline_Close-Grip_Bench_To_Skull_Crusher/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Close-Grip_Bench_To_Skull_Crusher/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Close-Grip_Bench_To_Skull_Crusher/1.jpg" ], "id": "Decline_Close-Grip_Bench_To_Skull_Crusher" }, @@ -5142,8 +5166,8 @@ ], "category": "strength", "images": [ - "Decline_Crunch/0.jpg", - "Decline_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Crunch/1.jpg" ], "id": "Decline_Crunch" }, @@ -5170,8 +5194,8 @@ ], "category": "strength", "images": [ - "Decline_Dumbbell_Bench_Press/0.jpg", - "Decline_Dumbbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Bench_Press/1.jpg" ], "id": "Decline_Dumbbell_Bench_Press" }, @@ -5194,8 +5218,8 @@ ], "category": "strength", "images": [ - "Decline_Dumbbell_Flyes/0.jpg", - "Decline_Dumbbell_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Flyes/1.jpg" ], "id": "Decline_Dumbbell_Flyes" }, @@ -5218,8 +5242,8 @@ ], "category": "strength", "images": [ - "Decline_Dumbbell_Triceps_Extension/0.jpg", - "Decline_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Decline_Dumbbell_Triceps_Extension" }, @@ -5242,8 +5266,8 @@ ], "category": "strength", "images": [ - "Decline_EZ_Bar_Triceps_Extension/0.jpg", - "Decline_EZ_Bar_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_EZ_Bar_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_EZ_Bar_Triceps_Extension/1.jpg" ], "id": "Decline_EZ_Bar_Triceps_Extension" }, @@ -5267,8 +5291,8 @@ ], "category": "strength", "images": [ - "Decline_Oblique_Crunch/0.jpg", - "Decline_Oblique_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Oblique_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Oblique_Crunch/1.jpg" ], "id": "Decline_Oblique_Crunch" }, @@ -5293,8 +5317,8 @@ ], "category": "strength", "images": [ - "Decline_Push-Up/0.jpg", - "Decline_Push-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Push-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Push-Up/1.jpg" ], "id": "Decline_Push-Up" }, @@ -5317,8 +5341,8 @@ ], "category": "strength", "images": [ - "Decline_Reverse_Crunch/0.jpg", - "Decline_Reverse_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Reverse_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Reverse_Crunch/1.jpg" ], "id": "Decline_Reverse_Crunch" }, @@ -5344,8 +5368,8 @@ ], "category": "strength", "images": [ - "Decline_Smith_Press/0.jpg", - "Decline_Smith_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Smith_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Decline_Smith_Press/1.jpg" ], "id": "Decline_Smith_Press" }, @@ -5373,8 +5397,8 @@ ], "category": "powerlifting", "images": [ - "Deficit_Deadlift/0.jpg", - "Deficit_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deficit_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Deficit_Deadlift/1.jpg" ], "id": "Deficit_Deadlift" }, @@ -5402,8 +5426,8 @@ ], "category": "plyometrics", "images": [ - "Depth_Jump_Leap/0.jpg", - "Depth_Jump_Leap/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Depth_Jump_Leap/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Depth_Jump_Leap/1.jpg" ], "id": "Depth_Jump_Leap" }, @@ -5429,8 +5453,8 @@ ], "category": "strength", "images": [ - "Dip_Machine/0.jpg", - "Dip_Machine/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dip_Machine/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dip_Machine/1.jpg" ], "id": "Dip_Machine" }, @@ -5455,8 +5479,8 @@ ], "category": "strength", "images": [ - "Dips_-_Chest_Version/0.jpg", - "Dips_-_Chest_Version/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dips_-_Chest_Version/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dips_-_Chest_Version/1.jpg" ], "id": "Dips_-_Chest_Version" }, @@ -5481,8 +5505,8 @@ ], "category": "strength", "images": [ - "Dips_-_Triceps_Version/0.jpg", - "Dips_-_Triceps_Version/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dips_-_Triceps_Version/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dips_-_Triceps_Version/1.jpg" ], "id": "Dips_-_Triceps_Version" }, @@ -5505,8 +5529,8 @@ ], "category": "strength", "images": [ - "Donkey_Calf_Raises/0.jpg", - "Donkey_Calf_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Donkey_Calf_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Donkey_Calf_Raises/1.jpg" ], "id": "Donkey_Calf_Raises" }, @@ -5535,8 +5559,8 @@ ], "category": "strength", "images": [ - "Double_Kettlebell_Alternating_Hang_Clean/0.jpg", - "Double_Kettlebell_Alternating_Hang_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Alternating_Hang_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Alternating_Hang_Clean/1.jpg" ], "id": "Double_Kettlebell_Alternating_Hang_Clean" }, @@ -5565,8 +5589,8 @@ ], "category": "strength", "images": [ - "Double_Kettlebell_Jerk/0.jpg", - "Double_Kettlebell_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Jerk/1.jpg" ], "id": "Double_Kettlebell_Jerk" }, @@ -5591,8 +5615,8 @@ ], "category": "strength", "images": [ - "Double_Kettlebell_Push_Press/0.jpg", - "Double_Kettlebell_Push_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Push_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Push_Press/1.jpg" ], "id": "Double_Kettlebell_Push_Press" }, @@ -5617,8 +5641,8 @@ ], "category": "strength", "images": [ - "Double_Kettlebell_Snatch/0.jpg", - "Double_Kettlebell_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Snatch/1.jpg" ], "id": "Double_Kettlebell_Snatch" }, @@ -5645,8 +5669,8 @@ ], "category": "strength", "images": [ - "Double_Kettlebell_Windmill/0.jpg", - "Double_Kettlebell_Windmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Windmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Kettlebell_Windmill/1.jpg" ], "id": "Double_Kettlebell_Windmill" }, @@ -5674,8 +5698,8 @@ ], "category": "plyometrics", "images": [ - "Double_Leg_Butt_Kick/0.jpg", - "Double_Leg_Butt_Kick/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Leg_Butt_Kick/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Double_Leg_Butt_Kick/1.jpg" ], "id": "Double_Leg_Butt_Kick" }, @@ -5698,8 +5722,8 @@ ], "category": "strength", "images": [ - "Downward_Facing_Balance/0.jpg", - "Downward_Facing_Balance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Downward_Facing_Balance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Downward_Facing_Balance/1.jpg" ], "id": "Downward_Facing_Balance" }, @@ -5723,8 +5747,8 @@ ], "category": "strength", "images": [ - "Drag_Curl/0.jpg", - "Drag_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Drag_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Drag_Curl/1.jpg" ], "id": "Drag_Curl" }, @@ -5748,8 +5772,8 @@ ], "category": "plyometrics", "images": [ - "Drop_Push/0.jpg", - "Drop_Push/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Drop_Push/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Drop_Push/1.jpg" ], "id": "Drop_Push" }, @@ -5774,8 +5798,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Alternate_Bicep_Curl/0.jpg", - "Dumbbell_Alternate_Bicep_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Alternate_Bicep_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Alternate_Bicep_Curl/1.jpg" ], "id": "Dumbbell_Alternate_Bicep_Curl" }, @@ -5801,8 +5825,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Bench_Press/0.jpg", - "Dumbbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bench_Press/1.jpg" ], "id": "Dumbbell_Bench_Press" }, @@ -5827,8 +5851,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Bench_Press_with_Neutral_Grip/0.jpg", - "Dumbbell_Bench_Press_with_Neutral_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bench_Press_with_Neutral_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bench_Press_with_Neutral_Grip/1.jpg" ], "id": "Dumbbell_Bench_Press_with_Neutral_Grip" }, @@ -5852,8 +5876,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Bicep_Curl/0.jpg", - "Dumbbell_Bicep_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bicep_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Bicep_Curl/1.jpg" ], "id": "Dumbbell_Bicep_Curl" }, @@ -5884,8 +5908,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Clean/0.jpg", - "Dumbbell_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Clean/1.jpg" ], "id": "Dumbbell_Clean" }, @@ -5909,8 +5933,8 @@ ], "category": "powerlifting", "images": [ - "Dumbbell_Floor_Press/0.jpg", - "Dumbbell_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Floor_Press/1.jpg" ], "id": "Dumbbell_Floor_Press" }, @@ -5933,8 +5957,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Flyes/0.jpg", - "Dumbbell_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Flyes/1.jpg" ], "id": "Dumbbell_Flyes" }, @@ -5961,8 +5985,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Incline_Row/0.jpg", - "Dumbbell_Incline_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Incline_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Incline_Row/1.jpg" ], "id": "Dumbbell_Incline_Row" }, @@ -5987,8 +6011,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Incline_Shoulder_Raise/0.jpg", - "Dumbbell_Incline_Shoulder_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Incline_Shoulder_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Incline_Shoulder_Raise/1.jpg" ], "id": "Dumbbell_Incline_Shoulder_Raise" }, @@ -6014,8 +6038,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Lunges/0.jpg", - "Dumbbell_Lunges/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lunges/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lunges/1.jpg" ], "id": "Dumbbell_Lunges" }, @@ -6040,8 +6064,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Lying_One-Arm_Rear_Lateral_Raise/0.jpg", - "Dumbbell_Lying_One-Arm_Rear_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_One-Arm_Rear_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_One-Arm_Rear_Lateral_Raise/1.jpg" ], "id": "Dumbbell_Lying_One-Arm_Rear_Lateral_Raise" }, @@ -6065,8 +6089,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Lying_Pronation/0.jpg", - "Dumbbell_Lying_Pronation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Pronation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Pronation/1.jpg" ], "id": "Dumbbell_Lying_Pronation" }, @@ -6089,8 +6113,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Lying_Rear_Lateral_Raise/0.jpg", - "Dumbbell_Lying_Rear_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Rear_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Rear_Lateral_Raise/1.jpg" ], "id": "Dumbbell_Lying_Rear_Lateral_Raise" }, @@ -6114,8 +6138,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Lying_Supination/0.jpg", - "Dumbbell_Lying_Supination/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Supination/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Lying_Supination/1.jpg" ], "id": "Dumbbell_Lying_Supination" }, @@ -6141,8 +6165,8 @@ ], "category": "strength", "images": [ - "Dumbbell_One-Arm_Shoulder_Press/0.jpg", - "Dumbbell_One-Arm_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Shoulder_Press/1.jpg" ], "id": "Dumbbell_One-Arm_Shoulder_Press" }, @@ -6166,8 +6190,8 @@ ], "category": "strength", "images": [ - "Dumbbell_One-Arm_Triceps_Extension/0.jpg", - "Dumbbell_One-Arm_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Triceps_Extension/1.jpg" ], "id": "Dumbbell_One-Arm_Triceps_Extension" }, @@ -6193,8 +6217,8 @@ ], "category": "strength", "images": [ - "Dumbbell_One-Arm_Upright_Row/0.jpg", - "Dumbbell_One-Arm_Upright_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Upright_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_One-Arm_Upright_Row/1.jpg" ], "id": "Dumbbell_One-Arm_Upright_Row" }, @@ -6218,8 +6242,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Prone_Incline_Curl/0.jpg", - "Dumbbell_Prone_Incline_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Prone_Incline_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Prone_Incline_Curl/1.jpg" ], "id": "Dumbbell_Prone_Incline_Curl" }, @@ -6243,8 +6267,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Raise/0.jpg", - "Dumbbell_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Raise/1.jpg" ], "id": "Dumbbell_Raise" }, @@ -6270,8 +6294,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Rear_Lunge/0.jpg", - "Dumbbell_Rear_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Rear_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Rear_Lunge/1.jpg" ], "id": "Dumbbell_Rear_Lunge" }, @@ -6294,8 +6318,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Scaption/0.jpg", - "Dumbbell_Scaption/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Scaption/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Scaption/1.jpg" ], "id": "Dumbbell_Scaption" }, @@ -6321,8 +6345,8 @@ ], "category": "plyometrics", "images": [ - "Dumbbell_Seated_Box_Jump/0.jpg", - "Dumbbell_Seated_Box_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Seated_Box_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Seated_Box_Jump/1.jpg" ], "id": "Dumbbell_Seated_Box_Jump" }, @@ -6346,8 +6370,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Seated_One-Leg_Calf_Raise/0.jpg", - "Dumbbell_Seated_One-Leg_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Seated_One-Leg_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Seated_One-Leg_Calf_Raise/1.jpg" ], "id": "Dumbbell_Seated_One-Leg_Calf_Raise" }, @@ -6373,8 +6397,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Shoulder_Press/0.jpg", - "Dumbbell_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Shoulder_Press/1.jpg" ], "id": "Dumbbell_Shoulder_Press" }, @@ -6396,8 +6420,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Shrug/0.jpg", - "Dumbbell_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Shrug/1.jpg" ], "id": "Dumbbell_Shrug" }, @@ -6419,8 +6443,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Side_Bend/0.jpg", - "Dumbbell_Side_Bend/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Side_Bend/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Side_Bend/1.jpg" ], "id": "Dumbbell_Side_Bend" }, @@ -6448,8 +6472,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Squat/0.jpg", - "Dumbbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Squat/1.jpg" ], "id": "Dumbbell_Squat" }, @@ -6477,8 +6501,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Squat_To_A_Bench/0.jpg", - "Dumbbell_Squat_To_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Squat_To_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Squat_To_A_Bench/1.jpg" ], "id": "Dumbbell_Squat_To_A_Bench" }, @@ -6504,8 +6528,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Step_Ups/0.jpg", - "Dumbbell_Step_Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Step_Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Step_Ups/1.jpg" ], "id": "Dumbbell_Step_Ups" }, @@ -6527,8 +6551,8 @@ ], "category": "strength", "images": [ - "Dumbbell_Tricep_Extension_-Pronated_Grip/0.jpg", - "Dumbbell_Tricep_Extension_-Pronated_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Tricep_Extension_-Pronated_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dumbbell_Tricep_Extension_-Pronated_Grip/1.jpg" ], "id": "Dumbbell_Tricep_Extension_-Pronated_Grip" }, @@ -6548,8 +6572,8 @@ ], "category": "stretching", "images": [ - "Dynamic_Back_Stretch/0.jpg", - "Dynamic_Back_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dynamic_Back_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dynamic_Back_Stretch/1.jpg" ], "id": "Dynamic_Back_Stretch" }, @@ -6571,8 +6595,8 @@ ], "category": "stretching", "images": [ - "Dynamic_Chest_Stretch/0.jpg", - "Dynamic_Chest_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dynamic_Chest_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Dynamic_Chest_Stretch/1.jpg" ], "id": "Dynamic_Chest_Stretch" }, @@ -6595,8 +6619,8 @@ ], "category": "strength", "images": [ - "EZ-Bar_Curl/0.jpg", - "EZ-Bar_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/EZ-Bar_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/EZ-Bar_Curl/1.jpg" ], "id": "EZ-Bar_Curl" }, @@ -6620,8 +6644,8 @@ ], "category": "strength", "images": [ - "EZ-Bar_Skullcrusher/0.jpg", - "EZ-Bar_Skullcrusher/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/EZ-Bar_Skullcrusher/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/EZ-Bar_Skullcrusher/1.jpg" ], "id": "EZ-Bar_Skullcrusher" }, @@ -6644,8 +6668,8 @@ ], "category": "stretching", "images": [ - "Elbow_Circles/0.jpg", - "Elbow_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbow_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbow_Circles/1.jpg" ], "id": "Elbow_Circles" }, @@ -6666,8 +6690,8 @@ ], "category": "strength", "images": [ - "Elbow_to_Knee/0.jpg", - "Elbow_to_Knee/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbow_to_Knee/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbow_to_Knee/1.jpg" ], "id": "Elbow_to_Knee" }, @@ -6690,8 +6714,8 @@ ], "category": "stretching", "images": [ - "Elbows_Back/0.jpg", - "Elbows_Back/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbows_Back/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elbows_Back/1.jpg" ], "id": "Elbows_Back" }, @@ -6716,8 +6740,8 @@ ], "category": "strength", "images": [ - "Elevated_Back_Lunge/0.jpg", - "Elevated_Back_Lunge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elevated_Back_Lunge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elevated_Back_Lunge/1.jpg" ], "id": "Elevated_Back_Lunge" }, @@ -6745,8 +6769,8 @@ ], "category": "strength", "images": [ - "Elevated_Cable_Rows/0.jpg", - "Elevated_Cable_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elevated_Cable_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elevated_Cable_Rows/1.jpg" ], "id": "Elevated_Cable_Rows" }, @@ -6770,8 +6794,8 @@ ], "category": "cardio", "images": [ - "Elliptical_Trainer/0.jpg", - "Elliptical_Trainer/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elliptical_Trainer/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Elliptical_Trainer/1.jpg" ], "id": "Elliptical_Trainer" }, @@ -6794,8 +6818,8 @@ ], "category": "strength", "images": [ - "Exercise_Ball_Crunch/0.jpg", - "Exercise_Ball_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Exercise_Ball_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Exercise_Ball_Crunch/1.jpg" ], "id": "Exercise_Ball_Crunch" }, @@ -6818,8 +6842,8 @@ ], "category": "strength", "images": [ - "Exercise_Ball_Pull-In/0.jpg", - "Exercise_Ball_Pull-In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Exercise_Ball_Pull-In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Exercise_Ball_Pull-In/1.jpg" ], "id": "Exercise_Ball_Pull-In" }, @@ -6842,8 +6866,8 @@ ], "category": "strength", "images": [ - "Extended_Range_One-Arm_Kettlebell_Floor_Press/0.jpg", - "Extended_Range_One-Arm_Kettlebell_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Extended_Range_One-Arm_Kettlebell_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Extended_Range_One-Arm_Kettlebell_Floor_Press/1.jpg" ], "id": "Extended_Range_One-Arm_Kettlebell_Floor_Press" }, @@ -6867,8 +6891,8 @@ ], "category": "strength", "images": [ - "External_Rotation/0.jpg", - "External_Rotation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation/1.jpg" ], "id": "External_Rotation" }, @@ -6891,8 +6915,8 @@ ], "category": "strength", "images": [ - "External_Rotation_with_Band/0.jpg", - "External_Rotation_with_Band/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation_with_Band/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation_with_Band/1.jpg" ], "id": "External_Rotation_with_Band" }, @@ -6914,8 +6938,8 @@ ], "category": "strength", "images": [ - "External_Rotation_with_Cable/0.jpg", - "External_Rotation_with_Cable/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation_with_Cable/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/External_Rotation_with_Cable/1.jpg" ], "id": "External_Rotation_with_Cable" }, @@ -6936,8 +6960,8 @@ ], "category": "strength", "images": [ - "Face_Pull/0.jpg", - "Face_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Face_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Face_Pull/1.jpg" ], "id": "Face_Pull" }, @@ -6965,8 +6989,8 @@ ], "category": "strongman", "images": [ - "Farmers_Walk/0.jpg", - "Farmers_Walk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Farmers_Walk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Farmers_Walk/1.jpg" ], "id": "Farmers_Walk" }, @@ -6993,8 +7017,8 @@ ], "category": "plyometrics", "images": [ - "Fast_Skipping/0.jpg", - "Fast_Skipping/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Fast_Skipping/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Fast_Skipping/1.jpg" ], "id": "Fast_Skipping" }, @@ -7016,8 +7040,8 @@ ], "category": "strength", "images": [ - "Finger_Curls/0.jpg", - "Finger_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Finger_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Finger_Curls/1.jpg" ], "id": "Finger_Curls" }, @@ -7042,8 +7066,8 @@ ], "category": "strength", "images": [ - "Flat_Bench_Cable_Flyes/0.jpg", - "Flat_Bench_Cable_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Cable_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Cable_Flyes/1.jpg" ], "id": "Flat_Bench_Cable_Flyes" }, @@ -7066,8 +7090,8 @@ ], "category": "strength", "images": [ - "Flat_Bench_Leg_Pull-In/0.jpg", - "Flat_Bench_Leg_Pull-In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Leg_Pull-In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Leg_Pull-In/1.jpg" ], "id": "Flat_Bench_Leg_Pull-In" }, @@ -7089,8 +7113,8 @@ ], "category": "strength", "images": [ - "Flat_Bench_Lying_Leg_Raise/0.jpg", - "Flat_Bench_Lying_Leg_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Lying_Leg_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flat_Bench_Lying_Leg_Raise/1.jpg" ], "id": "Flat_Bench_Lying_Leg_Raise" }, @@ -7114,8 +7138,8 @@ ], "category": "strength", "images": [ - "Flexor_Incline_Dumbbell_Curls/0.jpg", - "Flexor_Incline_Dumbbell_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flexor_Incline_Dumbbell_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flexor_Incline_Dumbbell_Curls/1.jpg" ], "id": "Flexor_Incline_Dumbbell_Curls" }, @@ -7140,8 +7164,8 @@ ], "category": "strength", "images": [ - "Floor_Glute-Ham_Raise/0.jpg", - "Floor_Glute-Ham_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Glute-Ham_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Glute-Ham_Raise/1.jpg" ], "id": "Floor_Glute-Ham_Raise" }, @@ -7165,8 +7189,8 @@ ], "category": "powerlifting", "images": [ - "Floor_Press/0.jpg", - "Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Press/1.jpg" ], "id": "Floor_Press" }, @@ -7191,8 +7215,8 @@ ], "category": "powerlifting", "images": [ - "Floor_Press_with_Chains/0.jpg", - "Floor_Press_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Press_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Floor_Press_with_Chains/1.jpg" ], "id": "Floor_Press_with_Chains" }, @@ -7217,8 +7241,8 @@ ], "category": "strength", "images": [ - "Flutter_Kicks/0.jpg", - "Flutter_Kicks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flutter_Kicks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Flutter_Kicks/1.jpg" ], "id": "Flutter_Kicks" }, @@ -7238,8 +7262,8 @@ ], "category": "stretching", "images": [ - "Foot-SMR/0.jpg", - "Foot-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Foot-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Foot-SMR/1.jpg" ], "id": "Foot-SMR" }, @@ -7266,8 +7290,8 @@ ], "category": "strongman", "images": [ - "Forward_Drag_with_Press/0.jpg", - "Forward_Drag_with_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Forward_Drag_with_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Forward_Drag_with_Press/1.jpg" ], "id": "Forward_Drag_with_Press" }, @@ -7294,8 +7318,8 @@ ], "category": "olympic weightlifting", "images": [ - "Frankenstein_Squat/0.jpg", - "Frankenstein_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frankenstein_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frankenstein_Squat/1.jpg" ], "id": "Frankenstein_Squat" }, @@ -7323,8 +7347,8 @@ ], "category": "strength", "images": [ - "Freehand_Jump_Squat/0.jpg", - "Freehand_Jump_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Freehand_Jump_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Freehand_Jump_Squat/1.jpg" ], "id": "Freehand_Jump_Squat" }, @@ -7348,8 +7372,8 @@ ], "category": "stretching", "images": [ - "Frog_Hops/0.jpg", - "Frog_Hops/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frog_Hops/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frog_Hops/1.jpg" ], "id": "Frog_Hops" }, @@ -7374,8 +7398,8 @@ ], "category": "strength", "images": [ - "Frog_Sit-Ups/0.jpg", - "Frog_Sit-Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frog_Sit-Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Frog_Sit-Ups/1.jpg" ], "id": "Frog_Sit-Ups" }, @@ -7403,8 +7427,8 @@ ], "category": "strength", "images": [ - "Front_Barbell_Squat/0.jpg", - "Front_Barbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Barbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Barbell_Squat/1.jpg" ], "id": "Front_Barbell_Squat" }, @@ -7432,8 +7456,8 @@ ], "category": "strength", "images": [ - "Front_Barbell_Squat_To_A_Bench/0.jpg", - "Front_Barbell_Squat_To_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Barbell_Squat_To_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Barbell_Squat_To_A_Bench/1.jpg" ], "id": "Front_Barbell_Squat_To_A_Bench" }, @@ -7461,8 +7485,8 @@ ], "category": "plyometrics", "images": [ - "Front_Box_Jump/0.jpg", - "Front_Box_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Box_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Box_Jump/1.jpg" ], "id": "Front_Box_Jump" }, @@ -7485,8 +7509,8 @@ ], "category": "strength", "images": [ - "Front_Cable_Raise/0.jpg", - "Front_Cable_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Cable_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Cable_Raise/1.jpg" ], "id": "Front_Cable_Raise" }, @@ -7515,8 +7539,8 @@ ], "category": "plyometrics", "images": [ - "Front_Cone_Hops_or_hurdle_hops/0.jpg", - "Front_Cone_Hops_or_hurdle_hops/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Cone_Hops_or_hurdle_hops/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Cone_Hops_or_hurdle_hops/1.jpg" ], "id": "Front_Cone_Hops_or_hurdle_hops" }, @@ -7538,8 +7562,8 @@ ], "category": "strength", "images": [ - "Front_Dumbbell_Raise/0.jpg", - "Front_Dumbbell_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Dumbbell_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Dumbbell_Raise/1.jpg" ], "id": "Front_Dumbbell_Raise" }, @@ -7562,8 +7586,8 @@ ], "category": "strength", "images": [ - "Front_Incline_Dumbbell_Raise/0.jpg", - "Front_Incline_Dumbbell_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Incline_Dumbbell_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Incline_Dumbbell_Raise/1.jpg" ], "id": "Front_Incline_Dumbbell_Raise" }, @@ -7583,8 +7607,8 @@ ], "category": "stretching", "images": [ - "Front_Leg_Raises/0.jpg", - "Front_Leg_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Leg_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Leg_Raises/1.jpg" ], "id": "Front_Leg_Raises" }, @@ -7606,8 +7630,8 @@ ], "category": "strength", "images": [ - "Front_Plate_Raise/0.jpg", - "Front_Plate_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Plate_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Plate_Raise/1.jpg" ], "id": "Front_Plate_Raise" }, @@ -7634,8 +7658,8 @@ ], "category": "strength", "images": [ - "Front_Raise_And_Pullover/0.jpg", - "Front_Raise_And_Pullover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Raise_And_Pullover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Raise_And_Pullover/1.jpg" ], "id": "Front_Raise_And_Pullover" }, @@ -7661,8 +7685,8 @@ ], "category": "strength", "images": [ - "Front_Squat_Clean_Grip/0.jpg", - "Front_Squat_Clean_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Squat_Clean_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Squat_Clean_Grip/1.jpg" ], "id": "Front_Squat_Clean_Grip" }, @@ -7686,8 +7710,8 @@ ], "category": "strength", "images": [ - "Front_Squats_With_Two_Kettlebells/0.jpg", - "Front_Squats_With_Two_Kettlebells/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Squats_With_Two_Kettlebells/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Squats_With_Two_Kettlebells/1.jpg" ], "id": "Front_Squats_With_Two_Kettlebells" }, @@ -7709,8 +7733,8 @@ ], "category": "strength", "images": [ - "Front_Two-Dumbbell_Raise/0.jpg", - "Front_Two-Dumbbell_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Two-Dumbbell_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Front_Two-Dumbbell_Raise/1.jpg" ], "id": "Front_Two-Dumbbell_Raise" }, @@ -7734,8 +7758,8 @@ ], "category": "strength", "images": [ - "Full_Range-Of-Motion_Lat_Pulldown/0.jpg", - "Full_Range-Of-Motion_Lat_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Full_Range-Of-Motion_Lat_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Full_Range-Of-Motion_Lat_Pulldown/1.jpg" ], "id": "Full_Range-Of-Motion_Lat_Pulldown" }, @@ -7762,8 +7786,8 @@ ], "category": "strength", "images": [ - "Gironda_Sternum_Chins/0.jpg", - "Gironda_Sternum_Chins/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Gironda_Sternum_Chins/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Gironda_Sternum_Chins/1.jpg" ], "id": "Gironda_Sternum_Chins" }, @@ -7787,8 +7811,8 @@ ], "category": "powerlifting", "images": [ - "Glute_Ham_Raise/0.jpg", - "Glute_Ham_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Glute_Ham_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Glute_Ham_Raise/1.jpg" ], "id": "Glute_Ham_Raise" }, @@ -7812,8 +7836,8 @@ ], "category": "strength", "images": [ - "Glute_Kickback/0.jpg", - "Glute_Kickback/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Glute_Kickback/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Glute_Kickback/1.jpg" ], "id": "Glute_Kickback" }, @@ -7839,8 +7863,8 @@ ], "category": "strength", "images": [ - "Goblet_Squat/0.jpg", - "Goblet_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Goblet_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Goblet_Squat/1.jpg" ], "id": "Goblet_Squat" }, @@ -7865,8 +7889,8 @@ ], "category": "powerlifting", "images": [ - "Good_Morning/0.jpg", - "Good_Morning/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Good_Morning/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Good_Morning/1.jpg" ], "id": "Good_Morning" }, @@ -7890,8 +7914,8 @@ ], "category": "powerlifting", "images": [ - "Good_Morning_off_Pins/0.jpg", - "Good_Morning_off_Pins/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Good_Morning_off_Pins/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Good_Morning_off_Pins/1.jpg" ], "id": "Good_Morning_off_Pins" }, @@ -7917,8 +7941,8 @@ ], "category": "strength", "images": [ - "Gorilla_Chin_Crunch/0.jpg", - "Gorilla_Chin_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Gorilla_Chin_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Gorilla_Chin_Crunch/1.jpg" ], "id": "Gorilla_Chin_Crunch" }, @@ -7939,8 +7963,8 @@ ], "category": "stretching", "images": [ - "Groin_and_Back_Stretch/0.jpg", - "Groin_and_Back_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Groin_and_Back_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Groin_and_Back_Stretch/1.jpg" ], "id": "Groin_and_Back_Stretch" }, @@ -7961,8 +7985,8 @@ ], "category": "stretching", "images": [ - "Groiners/0.jpg", - "Groiners/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Groiners/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Groiners/1.jpg" ], "id": "Groiners" }, @@ -7991,8 +8015,8 @@ ], "category": "strength", "images": [ - "Hack_Squat/0.jpg", - "Hack_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hack_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hack_Squat/1.jpg" ], "id": "Hack_Squat" }, @@ -8015,8 +8039,8 @@ ], "category": "strength", "images": [ - "Hammer_Curls/0.jpg", - "Hammer_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hammer_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hammer_Curls/1.jpg" ], "id": "Hammer_Curls" }, @@ -8044,8 +8068,8 @@ ], "category": "strength", "images": [ - "Hammer_Grip_Incline_DB_Bench_Press/0.jpg", - "Hammer_Grip_Incline_DB_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hammer_Grip_Incline_DB_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hammer_Grip_Incline_DB_Bench_Press/1.jpg" ], "id": "Hammer_Grip_Incline_DB_Bench_Press" }, @@ -8066,8 +8090,8 @@ ], "category": "stretching", "images": [ - "Hamstring-SMR/0.jpg", - "Hamstring-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hamstring-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hamstring-SMR/1.jpg" ], "id": "Hamstring-SMR" }, @@ -8088,8 +8112,8 @@ ], "category": "stretching", "images": [ - "Hamstring_Stretch/0.jpg", - "Hamstring_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hamstring_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hamstring_Stretch/1.jpg" ], "id": "Hamstring_Stretch" }, @@ -8114,8 +8138,8 @@ ], "category": "strength", "images": [ - "Handstand_Push-Ups/0.jpg", - "Handstand_Push-Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Handstand_Push-Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Handstand_Push-Ups/1.jpg" ], "id": "Handstand_Push-Ups" }, @@ -8144,8 +8168,8 @@ ], "category": "olympic weightlifting", "images": [ - "Hang_Clean/0.jpg", - "Hang_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Clean/1.jpg" ], "id": "Hang_Clean" }, @@ -8175,8 +8199,8 @@ ], "category": "olympic weightlifting", "images": [ - "Hang_Clean_-_Below_the_Knees/0.jpg", - "Hang_Clean_-_Below_the_Knees/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Clean_-_Below_the_Knees/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Clean_-_Below_the_Knees/1.jpg" ], "id": "Hang_Clean_-_Below_the_Knees" }, @@ -8207,8 +8231,8 @@ ], "category": "olympic weightlifting", "images": [ - "Hang_Snatch/0.jpg", - "Hang_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Snatch/1.jpg" ], "id": "Hang_Snatch" }, @@ -8239,8 +8263,8 @@ ], "category": "olympic weightlifting", "images": [ - "Hang_Snatch_-_Below_Knees/0.jpg", - "Hang_Snatch_-_Below_Knees/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Snatch_-_Below_Knees/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hang_Snatch_-_Below_Knees/1.jpg" ], "id": "Hang_Snatch_-_Below_Knees" }, @@ -8266,8 +8290,8 @@ ], "category": "powerlifting", "images": [ - "Hanging_Bar_Good_Morning/0.jpg", - "Hanging_Bar_Good_Morning/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Bar_Good_Morning/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Bar_Good_Morning/1.jpg" ], "id": "Hanging_Bar_Good_Morning" }, @@ -8289,8 +8313,8 @@ ], "category": "strength", "images": [ - "Hanging_Leg_Raise/0.jpg", - "Hanging_Leg_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Leg_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Leg_Raise/1.jpg" ], "id": "Hanging_Leg_Raise" }, @@ -8313,8 +8337,8 @@ ], "category": "strength", "images": [ - "Hanging_Pike/0.jpg", - "Hanging_Pike/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Pike/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hanging_Pike/1.jpg" ], "id": "Hanging_Pike" }, @@ -8342,8 +8366,8 @@ ], "category": "olympic weightlifting", "images": [ - "Heaving_Snatch_Balance/0.jpg", - "Heaving_Snatch_Balance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Heaving_Snatch_Balance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Heaving_Snatch_Balance/1.jpg" ], "id": "Heaving_Snatch_Balance" }, @@ -8368,8 +8392,8 @@ ], "category": "plyometrics", "images": [ - "Heavy_Bag_Thrust/0.jpg", - "Heavy_Bag_Thrust/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Heavy_Bag_Thrust/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Heavy_Bag_Thrust/1.jpg" ], "id": "Heavy_Bag_Thrust" }, @@ -8391,8 +8415,8 @@ ], "category": "strength", "images": [ - "High_Cable_Curls/0.jpg", - "High_Cable_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/High_Cable_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/High_Cable_Curls/1.jpg" ], "id": "High_Cable_Curls" }, @@ -8415,8 +8439,8 @@ ], "category": "stretching", "images": [ - "Hip_Circles_prone/0.jpg", - "Hip_Circles_prone/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Circles_prone/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Circles_prone/1.jpg" ], "id": "Hip_Circles_prone" }, @@ -8440,8 +8464,8 @@ ], "category": "strength", "images": [ - "Hip_Extension_with_Bands/0.jpg", - "Hip_Extension_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Extension_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Extension_with_Bands/1.jpg" ], "id": "Hip_Extension_with_Bands" }, @@ -8463,8 +8487,8 @@ ], "category": "strength", "images": [ - "Hip_Flexion_with_Band/0.jpg", - "Hip_Flexion_with_Band/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Flexion_with_Band/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Flexion_with_Band/1.jpg" ], "id": "Hip_Flexion_with_Band" }, @@ -8489,8 +8513,8 @@ ], "category": "powerlifting", "images": [ - "Hip_Lift_with_Band/0.jpg", - "Hip_Lift_with_Band/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Lift_with_Band/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hip_Lift_with_Band/1.jpg" ], "id": "Hip_Lift_with_Band" }, @@ -8514,8 +8538,8 @@ ], "category": "stretching", "images": [ - "Hug_A_Ball/0.jpg", - "Hug_A_Ball/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hug_A_Ball/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hug_A_Ball/1.jpg" ], "id": "Hug_A_Ball" }, @@ -8538,8 +8562,8 @@ ], "category": "stretching", "images": [ - "Hug_Knees_To_Chest/0.jpg", - "Hug_Knees_To_Chest/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hug_Knees_To_Chest/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hug_Knees_To_Chest/1.jpg" ], "id": "Hug_Knees_To_Chest" }, @@ -8567,8 +8591,8 @@ ], "category": "plyometrics", "images": [ - "Hurdle_Hops/0.jpg", - "Hurdle_Hops/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hurdle_Hops/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hurdle_Hops/1.jpg" ], "id": "Hurdle_Hops" }, @@ -8595,8 +8619,8 @@ ], "category": "strength", "images": [ - "Hyperextensions_Back_Extensions/0.jpg", - "Hyperextensions_Back_Extensions/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hyperextensions_Back_Extensions/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hyperextensions_Back_Extensions/1.jpg" ], "id": "Hyperextensions_Back_Extensions" }, @@ -8622,8 +8646,8 @@ ], "category": "strength", "images": [ - "Hyperextensions_With_No_Hyperextension_Bench/0.jpg", - "Hyperextensions_With_No_Hyperextension_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hyperextensions_With_No_Hyperextension_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Hyperextensions_With_No_Hyperextension_Bench/1.jpg" ], "id": "Hyperextensions_With_No_Hyperextension_Bench" }, @@ -8643,8 +8667,8 @@ ], "category": "stretching", "images": [ - "IT_Band_and_Glute_Stretch/0.jpg", - "IT_Band_and_Glute_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/IT_Band_and_Glute_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/IT_Band_and_Glute_Stretch/1.jpg" ], "id": "IT_Band_and_Glute_Stretch" }, @@ -8665,8 +8689,8 @@ ], "category": "stretching", "images": [ - "Iliotibial_Tract-SMR/0.jpg", - "Iliotibial_Tract-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iliotibial_Tract-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iliotibial_Tract-SMR/1.jpg" ], "id": "Iliotibial_Tract-SMR" }, @@ -8689,8 +8713,8 @@ ], "category": "stretching", "images": [ - "Inchworm/0.jpg", - "Inchworm/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inchworm/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inchworm/1.jpg" ], "id": "Inchworm" }, @@ -8716,8 +8740,8 @@ ], "category": "strength", "images": [ - "Incline_Barbell_Triceps_Extension/0.jpg", - "Incline_Barbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Barbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Barbell_Triceps_Extension/1.jpg" ], "id": "Incline_Barbell_Triceps_Extension" }, @@ -8745,8 +8769,8 @@ ], "category": "strength", "images": [ - "Incline_Bench_Pull/0.jpg", - "Incline_Bench_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Bench_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Bench_Pull/1.jpg" ], "id": "Incline_Bench_Pull" }, @@ -8770,8 +8794,8 @@ ], "category": "strength", "images": [ - "Incline_Cable_Chest_Press/0.jpg", - "Incline_Cable_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Cable_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Cable_Chest_Press/1.jpg" ], "id": "Incline_Cable_Chest_Press" }, @@ -8797,8 +8821,8 @@ ], "category": "strength", "images": [ - "Incline_Cable_Flye/0.jpg", - "Incline_Cable_Flye/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Cable_Flye/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Cable_Flye/1.jpg" ], "id": "Incline_Cable_Flye" }, @@ -8826,8 +8850,8 @@ ], "category": "strength", "images": [ - "Incline_Dumbbell_Bench_With_Palms_Facing_In/0.jpg", - "Incline_Dumbbell_Bench_With_Palms_Facing_In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Bench_With_Palms_Facing_In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Bench_With_Palms_Facing_In/1.jpg" ], "id": "Incline_Dumbbell_Bench_With_Palms_Facing_In" }, @@ -8849,8 +8873,8 @@ ], "category": "strength", "images": [ - "Incline_Dumbbell_Curl/0.jpg", - "Incline_Dumbbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Curl/1.jpg" ], "id": "Incline_Dumbbell_Curl" }, @@ -8876,8 +8900,8 @@ ], "category": "strength", "images": [ - "Incline_Dumbbell_Flyes/0.jpg", - "Incline_Dumbbell_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Flyes/1.jpg" ], "id": "Incline_Dumbbell_Flyes" }, @@ -8903,8 +8927,8 @@ ], "category": "strength", "images": [ - "Incline_Dumbbell_Flyes_-_With_A_Twist/0.jpg", - "Incline_Dumbbell_Flyes_-_With_A_Twist/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Flyes_-_With_A_Twist/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Flyes_-_With_A_Twist/1.jpg" ], "id": "Incline_Dumbbell_Flyes_-_With_A_Twist" }, @@ -8932,8 +8956,8 @@ ], "category": "strength", "images": [ - "Incline_Dumbbell_Press/0.jpg", - "Incline_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Dumbbell_Press/1.jpg" ], "id": "Incline_Dumbbell_Press" }, @@ -8954,8 +8978,8 @@ ], "category": "strength", "images": [ - "Incline_Hammer_Curls/0.jpg", - "Incline_Hammer_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Hammer_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Hammer_Curls/1.jpg" ], "id": "Incline_Hammer_Curls" }, @@ -8978,8 +9002,8 @@ ], "category": "strength", "images": [ - "Incline_Inner_Biceps_Curl/0.jpg", - "Incline_Inner_Biceps_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Inner_Biceps_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Inner_Biceps_Curl/1.jpg" ], "id": "Incline_Inner_Biceps_Curl" }, @@ -9003,8 +9027,8 @@ ], "category": "strength", "images": [ - "Incline_Push-Up/0.jpg", - "Incline_Push-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up/1.jpg" ], "id": "Incline_Push-Up" }, @@ -9030,8 +9054,8 @@ ], "category": "strength", "images": [ - "Incline_Push-Up_Close-Grip/0.jpg", - "Incline_Push-Up_Close-Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Close-Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Close-Grip/1.jpg" ], "id": "Incline_Push-Up_Close-Grip" }, @@ -9056,8 +9080,8 @@ ], "category": "plyometrics", "images": [ - "Incline_Push-Up_Depth_Jump/0.jpg", - "Incline_Push-Up_Depth_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Depth_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Depth_Jump/1.jpg" ], "id": "Incline_Push-Up_Depth_Jump" }, @@ -9084,8 +9108,8 @@ ], "category": "strength", "images": [ - "Incline_Push-Up_Medium/0.jpg", - "Incline_Push-Up_Medium/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Medium/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Medium/1.jpg" ], "id": "Incline_Push-Up_Medium" }, @@ -9112,8 +9136,8 @@ ], "category": "strength", "images": [ - "Incline_Push-Up_Reverse_Grip/0.jpg", - "Incline_Push-Up_Reverse_Grip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Reverse_Grip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Reverse_Grip/1.jpg" ], "id": "Incline_Push-Up_Reverse_Grip" }, @@ -9140,8 +9164,8 @@ ], "category": "strength", "images": [ - "Incline_Push-Up_Wide/0.jpg", - "Incline_Push-Up_Wide/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Wide/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Incline_Push-Up_Wide/1.jpg" ], "id": "Incline_Push-Up_Wide" }, @@ -9161,8 +9185,8 @@ ], "category": "stretching", "images": [ - "Intermediate_Groin_Stretch/0.jpg", - "Intermediate_Groin_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Intermediate_Groin_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Intermediate_Groin_Stretch/1.jpg" ], "id": "Intermediate_Groin_Stretch" }, @@ -9182,8 +9206,8 @@ ], "category": "stretching", "images": [ - "Intermediate_Hip_Flexor_and_Quad_Stretch/0.jpg", - "Intermediate_Hip_Flexor_and_Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Intermediate_Hip_Flexor_and_Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Intermediate_Hip_Flexor_and_Quad_Stretch/1.jpg" ], "id": "Intermediate_Hip_Flexor_and_Quad_Stretch" }, @@ -9206,8 +9230,8 @@ ], "category": "strength", "images": [ - "Internal_Rotation_with_Band/0.jpg", - "Internal_Rotation_with_Band/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Internal_Rotation_with_Band/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Internal_Rotation_with_Band/1.jpg" ], "id": "Internal_Rotation_with_Band" }, @@ -9232,8 +9256,8 @@ ], "category": "strength", "images": [ - "Inverted_Row/0.jpg", - "Inverted_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inverted_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inverted_Row/1.jpg" ], "id": "Inverted_Row" }, @@ -9258,8 +9282,8 @@ ], "category": "strength", "images": [ - "Inverted_Row_with_Straps/0.jpg", - "Inverted_Row_with_Straps/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inverted_Row_with_Straps/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Inverted_Row_with_Straps/1.jpg" ], "id": "Inverted_Row_with_Straps" }, @@ -9283,8 +9307,8 @@ "instructions": [], "category": "strength", "images": [ - "Iron_Cross/0.jpg", - "Iron_Cross/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iron_Cross/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iron_Cross/1.jpg" ], "id": "Iron_Cross" }, @@ -9305,8 +9329,8 @@ ], "category": "stretching", "images": [ - "Iron_Crosses_stretch/0.jpg", - "Iron_Crosses_stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iron_Crosses_stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Iron_Crosses_stretch/1.jpg" ], "id": "Iron_Crosses_stretch" }, @@ -9332,8 +9356,8 @@ ], "category": "plyometrics", "images": [ - "Isometric_Chest_Squeezes/0.jpg", - "Isometric_Chest_Squeezes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Chest_Squeezes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Chest_Squeezes/1.jpg" ], "id": "Isometric_Chest_Squeezes" }, @@ -9356,8 +9380,8 @@ ], "category": "strength", "images": [ - "Isometric_Neck_Exercise_-_Front_And_Back/0.jpg", - "Isometric_Neck_Exercise_-_Front_And_Back/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Neck_Exercise_-_Front_And_Back/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Neck_Exercise_-_Front_And_Back/1.jpg" ], "id": "Isometric_Neck_Exercise_-_Front_And_Back" }, @@ -9380,8 +9404,8 @@ ], "category": "strength", "images": [ - "Isometric_Neck_Exercise_-_Sides/0.jpg", - "Isometric_Neck_Exercise_-_Sides/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Neck_Exercise_-_Sides/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Neck_Exercise_-_Sides/1.jpg" ], "id": "Isometric_Neck_Exercise_-_Sides" }, @@ -9407,8 +9431,8 @@ ], "category": "strength", "images": [ - "Isometric_Wipers/0.jpg", - "Isometric_Wipers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Wipers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Isometric_Wipers/1.jpg" ], "id": "Isometric_Wipers" }, @@ -9434,8 +9458,8 @@ ], "category": "strength", "images": [ - "JM_Press/0.jpg", - "JM_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/JM_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/JM_Press/1.jpg" ], "id": "JM_Press" }, @@ -9457,8 +9481,8 @@ ], "category": "strength", "images": [ - "Jackknife_Sit-Up/0.jpg", - "Jackknife_Sit-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jackknife_Sit-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jackknife_Sit-Up/1.jpg" ], "id": "Jackknife_Sit-Up" }, @@ -9480,8 +9504,8 @@ ], "category": "strength", "images": [ - "Janda_Sit-Up/0.jpg", - "Janda_Sit-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Janda_Sit-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Janda_Sit-Up/1.jpg" ], "id": "Janda_Sit-Up" }, @@ -9512,8 +9536,8 @@ ], "category": "strength", "images": [ - "Jefferson_Squats/0.jpg", - "Jefferson_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jefferson_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jefferson_Squats/1.jpg" ], "id": "Jefferson_Squats" }, @@ -9539,8 +9563,8 @@ ], "category": "olympic weightlifting", "images": [ - "Jerk_Balance/0.jpg", - "Jerk_Balance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jerk_Balance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jerk_Balance/1.jpg" ], "id": "Jerk_Balance" }, @@ -9563,8 +9587,8 @@ ], "category": "olympic weightlifting", "images": [ - "Jerk_Dip_Squat/0.jpg", - "Jerk_Dip_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jerk_Dip_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jerk_Dip_Squat/1.jpg" ], "id": "Jerk_Dip_Squat" }, @@ -9587,8 +9611,8 @@ ], "category": "cardio", "images": [ - "Jogging_Treadmill/0.jpg", - "Jogging_Treadmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jogging_Treadmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Jogging_Treadmill/1.jpg" ], "id": "Jogging_Treadmill" }, @@ -9621,8 +9645,8 @@ ], "category": "strongman", "images": [ - "Keg_Load/0.jpg", - "Keg_Load/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Keg_Load/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Keg_Load/1.jpg" ], "id": "Keg_Load" }, @@ -9645,8 +9669,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Arnold_Press/0.jpg", - "Kettlebell_Arnold_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Arnold_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Arnold_Press/1.jpg" ], "id": "Kettlebell_Arnold_Press" }, @@ -9673,8 +9697,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Dead_Clean/0.jpg", - "Kettlebell_Dead_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Dead_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Dead_Clean/1.jpg" ], "id": "Kettlebell_Dead_Clean" }, @@ -9697,8 +9721,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Figure_8/0.jpg", - "Kettlebell_Figure_8/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Figure_8/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Figure_8/1.jpg" ], "id": "Kettlebell_Figure_8" }, @@ -9725,8 +9749,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Hang_Clean/0.jpg", - "Kettlebell_Hang_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Hang_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Hang_Clean/1.jpg" ], "id": "Kettlebell_Hang_Clean" }, @@ -9750,8 +9774,8 @@ ], "category": "strength", "images": [ - "Kettlebell_One-Legged_Deadlift/0.jpg", - "Kettlebell_One-Legged_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_One-Legged_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_One-Legged_Deadlift/1.jpg" ], "id": "Kettlebell_One-Legged_Deadlift" }, @@ -9775,8 +9799,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Pass_Between_The_Legs/0.jpg", - "Kettlebell_Pass_Between_The_Legs/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pass_Between_The_Legs/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pass_Between_The_Legs/1.jpg" ], "id": "Kettlebell_Pass_Between_The_Legs" }, @@ -9800,8 +9824,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Pirate_Ships/0.jpg", - "Kettlebell_Pirate_Ships/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pirate_Ships/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pirate_Ships/1.jpg" ], "id": "Kettlebell_Pirate_Ships" }, @@ -9828,8 +9852,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Pistol_Squat/0.jpg", - "Kettlebell_Pistol_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pistol_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Pistol_Squat/1.jpg" ], "id": "Kettlebell_Pistol_Squat" }, @@ -9852,8 +9876,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Seated_Press/0.jpg", - "Kettlebell_Seated_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Seated_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Seated_Press/1.jpg" ], "id": "Kettlebell_Seated_Press" }, @@ -9876,8 +9900,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Seesaw_Press/0.jpg", - "Kettlebell_Seesaw_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Seesaw_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Seesaw_Press/1.jpg" ], "id": "Kettlebell_Seesaw_Press" }, @@ -9903,8 +9927,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Sumo_High_Pull/0.jpg", - "Kettlebell_Sumo_High_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Sumo_High_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Sumo_High_Pull/1.jpg" ], "id": "Kettlebell_Sumo_High_Pull" }, @@ -9929,8 +9953,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Thruster/0.jpg", - "Kettlebell_Thruster/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Thruster/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Thruster/1.jpg" ], "id": "Kettlebell_Thruster" }, @@ -9956,8 +9980,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Turkish_Get-Up_Lunge_style/0.jpg", - "Kettlebell_Turkish_Get-Up_Lunge_style/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Turkish_Get-Up_Lunge_style/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Turkish_Get-Up_Lunge_style/1.jpg" ], "id": "Kettlebell_Turkish_Get-Up_Lunge_style" }, @@ -9984,8 +10008,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Turkish_Get-Up_Squat_style/0.jpg", - "Kettlebell_Turkish_Get-Up_Squat_style/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Turkish_Get-Up_Squat_style/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Turkish_Get-Up_Squat_style/1.jpg" ], "id": "Kettlebell_Turkish_Get-Up_Squat_style" }, @@ -10011,8 +10035,8 @@ ], "category": "strength", "images": [ - "Kettlebell_Windmill/0.jpg", - "Kettlebell_Windmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Windmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kettlebell_Windmill/1.jpg" ], "id": "Kettlebell_Windmill" }, @@ -10043,8 +10067,8 @@ ], "category": "strength", "images": [ - "Kipping_Muscle_Up/0.jpg", - "Kipping_Muscle_Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kipping_Muscle_Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kipping_Muscle_Up/1.jpg" ], "id": "Kipping_Muscle_Up" }, @@ -10067,8 +10091,8 @@ ], "category": "stretching", "images": [ - "Knee_Across_The_Body/0.jpg", - "Knee_Across_The_Body/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Across_The_Body/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Across_The_Body/1.jpg" ], "id": "Knee_Across_The_Body" }, @@ -10092,8 +10116,8 @@ ], "category": "stretching", "images": [ - "Knee_Circles/0.jpg", - "Knee_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Circles/1.jpg" ], "id": "Knee_Circles" }, @@ -10116,8 +10140,8 @@ ], "category": "strength", "images": [ - "Knee_Hip_Raise_On_Parallel_Bars/0.jpg", - "Knee_Hip_Raise_On_Parallel_Bars/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Hip_Raise_On_Parallel_Bars/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Hip_Raise_On_Parallel_Bars/1.jpg" ], "id": "Knee_Hip_Raise_On_Parallel_Bars" }, @@ -10144,8 +10168,8 @@ ], "category": "plyometrics", "images": [ - "Knee_Tuck_Jump/0.jpg", - "Knee_Tuck_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Tuck_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Knee_Tuck_Jump/1.jpg" ], "id": "Knee_Tuck_Jump" }, @@ -10169,8 +10193,8 @@ ], "category": "plyometrics", "images": [ - "Kneeling_Arm_Drill/0.jpg", - "Kneeling_Arm_Drill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Arm_Drill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Arm_Drill/1.jpg" ], "id": "Kneeling_Arm_Drill" }, @@ -10197,8 +10221,8 @@ ], "category": "strength", "images": [ - "Kneeling_Cable_Crunch_With_Alternating_Oblique_Twists/0.jpg", - "Kneeling_Cable_Crunch_With_Alternating_Oblique_Twists/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Cable_Crunch_With_Alternating_Oblique_Twists/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Cable_Crunch_With_Alternating_Oblique_Twists/1.jpg" ], "id": "Kneeling_Cable_Crunch_With_Alternating_Oblique_Twists" }, @@ -10223,8 +10247,8 @@ ], "category": "strength", "images": [ - "Kneeling_Cable_Triceps_Extension/0.jpg", - "Kneeling_Cable_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Cable_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Cable_Triceps_Extension/1.jpg" ], "id": "Kneeling_Cable_Triceps_Extension" }, @@ -10244,8 +10268,8 @@ ], "category": "stretching", "images": [ - "Kneeling_Forearm_Stretch/0.jpg", - "Kneeling_Forearm_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Forearm_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Forearm_Stretch/1.jpg" ], "id": "Kneeling_Forearm_Stretch" }, @@ -10269,8 +10293,8 @@ ], "category": "strength", "images": [ - "Kneeling_High_Pulley_Row/0.jpg", - "Kneeling_High_Pulley_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_High_Pulley_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_High_Pulley_Row/1.jpg" ], "id": "Kneeling_High_Pulley_Row" }, @@ -10292,8 +10316,8 @@ ], "category": "stretching", "images": [ - "Kneeling_Hip_Flexor/0.jpg", - "Kneeling_Hip_Flexor/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Hip_Flexor/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Hip_Flexor/1.jpg" ], "id": "Kneeling_Hip_Flexor" }, @@ -10319,8 +10343,8 @@ ], "category": "olympic weightlifting", "images": [ - "Kneeling_Jump_Squat/0.jpg", - "Kneeling_Jump_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Jump_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Jump_Squat/1.jpg" ], "id": "Kneeling_Jump_Squat" }, @@ -10345,8 +10369,8 @@ ], "category": "strength", "images": [ - "Kneeling_Single-Arm_High_Pulley_Row/0.jpg", - "Kneeling_Single-Arm_High_Pulley_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Single-Arm_High_Pulley_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Single-Arm_High_Pulley_Row/1.jpg" ], "id": "Kneeling_Single-Arm_High_Pulley_Row" }, @@ -10371,8 +10395,8 @@ ], "category": "powerlifting", "images": [ - "Kneeling_Squat/0.jpg", - "Kneeling_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Kneeling_Squat/1.jpg" ], "id": "Kneeling_Squat" }, @@ -10399,8 +10423,8 @@ ], "category": "strength", "images": [ - "Landmine_180s/0.jpg", - "Landmine_180s/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Landmine_180s/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Landmine_180s/1.jpg" ], "id": "Landmine_180s" }, @@ -10430,8 +10454,8 @@ ], "category": "strength", "images": [ - "Landmine_Linear_Jammer/0.jpg", - "Landmine_Linear_Jammer/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Landmine_Linear_Jammer/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Landmine_Linear_Jammer/1.jpg" ], "id": "Landmine_Linear_Jammer" }, @@ -10460,8 +10484,8 @@ ], "category": "plyometrics", "images": [ - "Lateral_Bound/0.jpg", - "Lateral_Bound/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Bound/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Bound/1.jpg" ], "id": "Lateral_Bound" }, @@ -10490,8 +10514,8 @@ ], "category": "plyometrics", "images": [ - "Lateral_Box_Jump/0.jpg", - "Lateral_Box_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Box_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Box_Jump/1.jpg" ], "id": "Lateral_Box_Jump" }, @@ -10519,8 +10543,8 @@ ], "category": "plyometrics", "images": [ - "Lateral_Cone_Hops/0.jpg", - "Lateral_Cone_Hops/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Cone_Hops/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Cone_Hops/1.jpg" ], "id": "Lateral_Cone_Hops" }, @@ -10542,8 +10566,8 @@ ], "category": "strength", "images": [ - "Lateral_Raise_-_With_Bands/0.jpg", - "Lateral_Raise_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Raise_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lateral_Raise_-_With_Bands/1.jpg" ], "id": "Lateral_Raise_-_With_Bands" }, @@ -10563,8 +10587,8 @@ ], "category": "stretching", "images": [ - "Latissimus_Dorsi-SMR/0.jpg", - "Latissimus_Dorsi-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Latissimus_Dorsi-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Latissimus_Dorsi-SMR/1.jpg" ], "id": "Latissimus_Dorsi-SMR" }, @@ -10588,8 +10612,8 @@ ], "category": "strength", "images": [ - "Leg-Over_Floor_Press/0.jpg", - "Leg-Over_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg-Over_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg-Over_Floor_Press/1.jpg" ], "id": "Leg-Over_Floor_Press" }, @@ -10610,8 +10634,8 @@ ], "category": "stretching", "images": [ - "Leg-Up_Hamstring_Stretch/0.jpg", - "Leg-Up_Hamstring_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg-Up_Hamstring_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg-Up_Hamstring_Stretch/1.jpg" ], "id": "Leg-Up_Hamstring_Stretch" }, @@ -10633,8 +10657,8 @@ ], "category": "strength", "images": [ - "Leg_Extensions/0.jpg", - "Leg_Extensions/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Extensions/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Extensions/1.jpg" ], "id": "Leg_Extensions" }, @@ -10659,8 +10683,8 @@ ], "category": "strength", "images": [ - "Leg_Lift/0.jpg", - "Leg_Lift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Lift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Lift/1.jpg" ], "id": "Leg_Lift" }, @@ -10687,8 +10711,8 @@ ], "category": "strength", "images": [ - "Leg_Press/0.jpg", - "Leg_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Press/1.jpg" ], "id": "Leg_Press" }, @@ -10710,8 +10734,8 @@ ], "category": "strength", "images": [ - "Leg_Pull-In/0.jpg", - "Leg_Pull-In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Pull-In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leg_Pull-In/1.jpg" ], "id": "Leg_Pull-In" }, @@ -10736,8 +10760,8 @@ ], "category": "strength", "images": [ - "Leverage_Chest_Press/0.jpg", - "Leverage_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Chest_Press/1.jpg" ], "id": "Leverage_Chest_Press" }, @@ -10760,8 +10784,8 @@ ], "category": "strength", "images": [ - "Leverage_Deadlift/0.jpg", - "Leverage_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Deadlift/1.jpg" ], "id": "Leverage_Deadlift" }, @@ -10785,8 +10809,8 @@ ], "category": "strength", "images": [ - "Leverage_Decline_Chest_Press/0.jpg", - "Leverage_Decline_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Decline_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Decline_Chest_Press/1.jpg" ], "id": "Leverage_Decline_Chest_Press" }, @@ -10810,8 +10834,8 @@ ], "category": "strength", "images": [ - "Leverage_High_Row/0.jpg", - "Leverage_High_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_High_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_High_Row/1.jpg" ], "id": "Leverage_High_Row" }, @@ -10835,8 +10859,8 @@ ], "category": "strength", "images": [ - "Leverage_Incline_Chest_Press/0.jpg", - "Leverage_Incline_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Incline_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Incline_Chest_Press/1.jpg" ], "id": "Leverage_Incline_Chest_Press" }, @@ -10860,8 +10884,8 @@ ], "category": "strength", "images": [ - "Leverage_Iso_Row/0.jpg", - "Leverage_Iso_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Iso_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Iso_Row/1.jpg" ], "id": "Leverage_Iso_Row" }, @@ -10884,8 +10908,8 @@ ], "category": "strength", "images": [ - "Leverage_Shoulder_Press/0.jpg", - "Leverage_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Shoulder_Press/1.jpg" ], "id": "Leverage_Shoulder_Press" }, @@ -10910,8 +10934,8 @@ ], "category": "strength", "images": [ - "Leverage_Shrug/0.jpg", - "Leverage_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Leverage_Shrug/1.jpg" ], "id": "Leverage_Shrug" }, @@ -10936,8 +10960,8 @@ ], "category": "plyometrics", "images": [ - "Linear_3-Part_Start_Technique/0.jpg", - "Linear_3-Part_Start_Technique/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_3-Part_Start_Technique/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_3-Part_Start_Technique/1.jpg" ], "id": "Linear_3-Part_Start_Technique" }, @@ -10963,8 +10987,8 @@ ], "category": "plyometrics", "images": [ - "Linear_Acceleration_Wall_Drill/0.jpg", - "Linear_Acceleration_Wall_Drill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_Acceleration_Wall_Drill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_Acceleration_Wall_Drill/1.jpg" ], "id": "Linear_Acceleration_Wall_Drill" }, @@ -10990,8 +11014,8 @@ ], "category": "plyometrics", "images": [ - "Linear_Depth_Jump/0.jpg", - "Linear_Depth_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_Depth_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Linear_Depth_Jump/1.jpg" ], "id": "Linear_Depth_Jump" }, @@ -11022,8 +11046,8 @@ ], "category": "strongman", "images": [ - "Log_Lift/0.jpg", - "Log_Lift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Log_Lift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Log_Lift/1.jpg" ], "id": "Log_Lift" }, @@ -11049,8 +11073,8 @@ ], "category": "strength", "images": [ - "London_Bridges/0.jpg", - "London_Bridges/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/London_Bridges/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/London_Bridges/1.jpg" ], "id": "London_Bridges" }, @@ -11070,8 +11094,8 @@ ], "category": "stretching", "images": [ - "Looking_At_Ceiling/0.jpg", - "Looking_At_Ceiling/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Looking_At_Ceiling/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Looking_At_Ceiling/1.jpg" ], "id": "Looking_At_Ceiling" }, @@ -11095,8 +11119,8 @@ ], "category": "strength", "images": [ - "Low_Cable_Crossover/0.jpg", - "Low_Cable_Crossover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Cable_Crossover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Cable_Crossover/1.jpg" ], "id": "Low_Cable_Crossover" }, @@ -11120,8 +11144,8 @@ ], "category": "strength", "images": [ - "Low_Cable_Triceps_Extension/0.jpg", - "Low_Cable_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Cable_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Cable_Triceps_Extension/1.jpg" ], "id": "Low_Cable_Triceps_Extension" }, @@ -11148,8 +11172,8 @@ ], "category": "strength", "images": [ - "Low_Pulley_Row_To_Neck/0.jpg", - "Low_Pulley_Row_To_Neck/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Pulley_Row_To_Neck/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Low_Pulley_Row_To_Neck/1.jpg" ], "id": "Low_Pulley_Row_To_Neck" }, @@ -11169,8 +11193,8 @@ ], "category": "stretching", "images": [ - "Lower_Back-SMR/0.jpg", - "Lower_Back-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lower_Back-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lower_Back-SMR/1.jpg" ], "id": "Lower_Back-SMR" }, @@ -11190,8 +11214,8 @@ ], "category": "stretching", "images": [ - "Lower_Back_Curl/0.jpg", - "Lower_Back_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lower_Back_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lower_Back_Curl/1.jpg" ], "id": "Lower_Back_Curl" }, @@ -11218,8 +11242,8 @@ ], "category": "strength", "images": [ - "Lunge_Pass_Through/0.jpg", - "Lunge_Pass_Through/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lunge_Pass_Through/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lunge_Pass_Through/1.jpg" ], "id": "Lunge_Pass_Through" }, @@ -11245,8 +11269,8 @@ ], "category": "strength", "images": [ - "Lunge_Sprint/0.jpg", - "Lunge_Sprint/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lunge_Sprint/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lunge_Sprint/1.jpg" ], "id": "Lunge_Sprint" }, @@ -11267,8 +11291,8 @@ ], "category": "stretching", "images": [ - "Lying_Bent_Leg_Groin/0.jpg", - "Lying_Bent_Leg_Groin/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Bent_Leg_Groin/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Bent_Leg_Groin/1.jpg" ], "id": "Lying_Bent_Leg_Groin" }, @@ -11292,8 +11316,8 @@ ], "category": "strength", "images": [ - "Lying_Cable_Curl/0.jpg", - "Lying_Cable_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Cable_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Cable_Curl/1.jpg" ], "id": "Lying_Cable_Curl" }, @@ -11319,8 +11343,8 @@ ], "category": "strength", "images": [ - "Lying_Cambered_Barbell_Row/0.jpg", - "Lying_Cambered_Barbell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Cambered_Barbell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Cambered_Barbell_Row/1.jpg" ], "id": "Lying_Cambered_Barbell_Row" }, @@ -11345,8 +11369,8 @@ ], "category": "strength", "images": [ - "Lying_Close-Grip_Bar_Curl_On_High_Pulley/0.jpg", - "Lying_Close-Grip_Bar_Curl_On_High_Pulley/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Bar_Curl_On_High_Pulley/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Bar_Curl_On_High_Pulley/1.jpg" ], "id": "Lying_Close-Grip_Bar_Curl_On_High_Pulley" }, @@ -11369,8 +11393,8 @@ ], "category": "strength", "images": [ - "Lying_Close-Grip_Barbell_Triceps_Extension_Behind_The_Head/0.jpg", - "Lying_Close-Grip_Barbell_Triceps_Extension_Behind_The_Head/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Barbell_Triceps_Extension_Behind_The_Head/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Barbell_Triceps_Extension_Behind_The_Head/1.jpg" ], "id": "Lying_Close-Grip_Barbell_Triceps_Extension_Behind_The_Head" }, @@ -11393,8 +11417,8 @@ ], "category": "strength", "images": [ - "Lying_Close-Grip_Barbell_Triceps_Press_To_Chin/0.jpg", - "Lying_Close-Grip_Barbell_Triceps_Press_To_Chin/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Barbell_Triceps_Press_To_Chin/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Close-Grip_Barbell_Triceps_Press_To_Chin/1.jpg" ], "id": "Lying_Close-Grip_Barbell_Triceps_Press_To_Chin" }, @@ -11416,8 +11440,8 @@ ], "category": "stretching", "images": [ - "Lying_Crossover/0.jpg", - "Lying_Crossover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Crossover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Crossover/1.jpg" ], "id": "Lying_Crossover" }, @@ -11442,8 +11466,8 @@ ], "category": "strength", "images": [ - "Lying_Dumbbell_Tricep_Extension/0.jpg", - "Lying_Dumbbell_Tricep_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Dumbbell_Tricep_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Dumbbell_Tricep_Extension/1.jpg" ], "id": "Lying_Dumbbell_Tricep_Extension" }, @@ -11465,8 +11489,8 @@ ], "category": "strength", "images": [ - "Lying_Face_Down_Plate_Neck_Resistance/0.jpg", - "Lying_Face_Down_Plate_Neck_Resistance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Face_Down_Plate_Neck_Resistance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Face_Down_Plate_Neck_Resistance/1.jpg" ], "id": "Lying_Face_Down_Plate_Neck_Resistance" }, @@ -11488,8 +11512,8 @@ ], "category": "strength", "images": [ - "Lying_Face_Up_Plate_Neck_Resistance/0.jpg", - "Lying_Face_Up_Plate_Neck_Resistance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Face_Up_Plate_Neck_Resistance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Face_Up_Plate_Neck_Resistance/1.jpg" ], "id": "Lying_Face_Up_Plate_Neck_Resistance" }, @@ -11513,8 +11537,8 @@ ], "category": "stretching", "images": [ - "Lying_Glute/0.jpg", - "Lying_Glute/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Glute/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Glute/1.jpg" ], "id": "Lying_Glute" }, @@ -11537,8 +11561,8 @@ ], "category": "stretching", "images": [ - "Lying_Hamstring/0.jpg", - "Lying_Hamstring/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Hamstring/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Hamstring/1.jpg" ], "id": "Lying_Hamstring" }, @@ -11560,8 +11584,8 @@ ], "category": "strength", "images": [ - "Lying_High_Bench_Barbell_Curl/0.jpg", - "Lying_High_Bench_Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_High_Bench_Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_High_Bench_Barbell_Curl/1.jpg" ], "id": "Lying_High_Bench_Barbell_Curl" }, @@ -11583,8 +11607,8 @@ ], "category": "strength", "images": [ - "Lying_Leg_Curls/0.jpg", - "Lying_Leg_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Leg_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Leg_Curls/1.jpg" ], "id": "Lying_Leg_Curls" }, @@ -11612,8 +11636,8 @@ ], "category": "strength", "images": [ - "Lying_Machine_Squat/0.jpg", - "Lying_Machine_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Machine_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Machine_Squat/1.jpg" ], "id": "Lying_Machine_Squat" }, @@ -11636,8 +11660,8 @@ ], "category": "strength", "images": [ - "Lying_One-Arm_Lateral_Raise/0.jpg", - "Lying_One-Arm_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_One-Arm_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_One-Arm_Lateral_Raise/1.jpg" ], "id": "Lying_One-Arm_Lateral_Raise" }, @@ -11659,8 +11683,8 @@ ], "category": "stretching", "images": [ - "Lying_Prone_Quadriceps/0.jpg", - "Lying_Prone_Quadriceps/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Prone_Quadriceps/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Prone_Quadriceps/1.jpg" ], "id": "Lying_Prone_Quadriceps" }, @@ -11683,8 +11707,8 @@ ], "category": "strength", "images": [ - "Lying_Rear_Delt_Raise/0.jpg", - "Lying_Rear_Delt_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Rear_Delt_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Rear_Delt_Raise/1.jpg" ], "id": "Lying_Rear_Delt_Raise" }, @@ -11707,8 +11731,8 @@ ], "category": "strength", "images": [ - "Lying_Supine_Dumbbell_Curl/0.jpg", - "Lying_Supine_Dumbbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Supine_Dumbbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Supine_Dumbbell_Curl/1.jpg" ], "id": "Lying_Supine_Dumbbell_Curl" }, @@ -11735,8 +11759,8 @@ ], "category": "strength", "images": [ - "Lying_T-Bar_Row/0.jpg", - "Lying_T-Bar_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_T-Bar_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_T-Bar_Row/1.jpg" ], "id": "Lying_T-Bar_Row" }, @@ -11759,8 +11783,8 @@ ], "category": "strength", "images": [ - "Lying_Triceps_Press/0.jpg", - "Lying_Triceps_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Triceps_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Lying_Triceps_Press/1.jpg" ], "id": "Lying_Triceps_Press" }, @@ -11788,8 +11812,8 @@ ], "category": "strength", "images": [ - "Machine_Bench_Press/0.jpg", - "Machine_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Bench_Press/1.jpg" ], "id": "Machine_Bench_Press" }, @@ -11811,8 +11835,8 @@ ], "category": "strength", "images": [ - "Machine_Bicep_Curl/0.jpg", - "Machine_Bicep_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Bicep_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Bicep_Curl/1.jpg" ], "id": "Machine_Bicep_Curl" }, @@ -11835,8 +11859,8 @@ ], "category": "strength", "images": [ - "Machine_Preacher_Curls/0.jpg", - "Machine_Preacher_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Preacher_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Preacher_Curls/1.jpg" ], "id": "Machine_Preacher_Curls" }, @@ -11861,8 +11885,8 @@ ], "category": "strength", "images": [ - "Machine_Shoulder_Military_Press/0.jpg", - "Machine_Shoulder_Military_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Shoulder_Military_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Shoulder_Military_Press/1.jpg" ], "id": "Machine_Shoulder_Military_Press" }, @@ -11884,8 +11908,8 @@ ], "category": "strength", "images": [ - "Machine_Triceps_Extension/0.jpg", - "Machine_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Machine_Triceps_Extension/1.jpg" ], "id": "Machine_Triceps_Extension" }, @@ -11911,8 +11935,8 @@ ], "category": "plyometrics", "images": [ - "Medicine_Ball_Chest_Pass/0.jpg", - "Medicine_Ball_Chest_Pass/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Chest_Pass/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Chest_Pass/1.jpg" ], "id": "Medicine_Ball_Chest_Pass" }, @@ -11936,8 +11960,8 @@ ], "category": "plyometrics", "images": [ - "Medicine_Ball_Full_Twist/0.jpg", - "Medicine_Ball_Full_Twist/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Full_Twist/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Full_Twist/1.jpg" ], "id": "Medicine_Ball_Full_Twist" }, @@ -11962,8 +11986,8 @@ ], "category": "plyometrics", "images": [ - "Medicine_Ball_Scoop_Throw/0.jpg", - "Medicine_Ball_Scoop_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Scoop_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Medicine_Ball_Scoop_Throw/1.jpg" ], "id": "Medicine_Ball_Scoop_Throw" }, @@ -11985,8 +12009,8 @@ ], "category": "strength", "images": [ - "Middle_Back_Shrug/0.jpg", - "Middle_Back_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Middle_Back_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Middle_Back_Shrug/1.jpg" ], "id": "Middle_Back_Shrug" }, @@ -12010,8 +12034,8 @@ ], "category": "stretching", "images": [ - "Middle_Back_Stretch/0.jpg", - "Middle_Back_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Middle_Back_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Middle_Back_Stretch/1.jpg" ], "id": "Middle_Back_Stretch" }, @@ -12037,8 +12061,8 @@ ], "category": "strength", "images": [ - "Mixed_Grip_Chin/0.jpg", - "Mixed_Grip_Chin/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Mixed_Grip_Chin/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Mixed_Grip_Chin/1.jpg" ], "id": "Mixed_Grip_Chin" }, @@ -12059,8 +12083,8 @@ ], "category": "strength", "images": [ - "Monster_Walk/0.jpg", - "Monster_Walk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Monster_Walk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Monster_Walk/1.jpg" ], "id": "Monster_Walk" }, @@ -12084,8 +12108,8 @@ ], "category": "plyometrics", "images": [ - "Mountain_Climbers/0.jpg", - "Mountain_Climbers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Mountain_Climbers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Mountain_Climbers/1.jpg" ], "id": "Mountain_Climbers" }, @@ -12109,8 +12133,8 @@ ], "category": "plyometrics", "images": [ - "Moving_Claw_Series/0.jpg", - "Moving_Claw_Series/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Moving_Claw_Series/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Moving_Claw_Series/1.jpg" ], "id": "Moving_Claw_Series" }, @@ -12137,8 +12161,8 @@ ], "category": "olympic weightlifting", "images": [ - "Muscle_Snatch/0.jpg", - "Muscle_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Muscle_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Muscle_Snatch/1.jpg" ], "id": "Muscle_Snatch" }, @@ -12168,8 +12192,8 @@ ], "category": "strength", "images": [ - "Muscle_Up/0.jpg", - "Muscle_Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Muscle_Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Muscle_Up/1.jpg" ], "id": "Muscle_Up" }, @@ -12198,8 +12222,8 @@ ], "category": "strength", "images": [ - "Narrow_Stance_Hack_Squats/0.jpg", - "Narrow_Stance_Hack_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Hack_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Hack_Squats/1.jpg" ], "id": "Narrow_Stance_Hack_Squats" }, @@ -12226,8 +12250,8 @@ ], "category": "strength", "images": [ - "Narrow_Stance_Leg_Press/0.jpg", - "Narrow_Stance_Leg_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Leg_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Leg_Press/1.jpg" ], "id": "Narrow_Stance_Leg_Press" }, @@ -12256,8 +12280,8 @@ ], "category": "strength", "images": [ - "Narrow_Stance_Squats/0.jpg", - "Narrow_Stance_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Narrow_Stance_Squats/1.jpg" ], "id": "Narrow_Stance_Squats" }, @@ -12283,8 +12307,8 @@ ], "category": "strength", "images": [ - "Natural_Glute_Ham_Raise/0.jpg", - "Natural_Glute_Ham_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Natural_Glute_Ham_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Natural_Glute_Ham_Raise/1.jpg" ], "id": "Natural_Glute_Ham_Raise" }, @@ -12304,8 +12328,8 @@ ], "category": "stretching", "images": [ - "Neck-SMR/0.jpg", - "Neck-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Neck-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Neck-SMR/1.jpg" ], "id": "Neck-SMR" }, @@ -12331,8 +12355,8 @@ ], "category": "strength", "images": [ - "Neck_Press/0.jpg", - "Neck_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Neck_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Neck_Press/1.jpg" ], "id": "Neck_Press" }, @@ -12357,8 +12381,8 @@ ], "category": "strength", "images": [ - "Oblique_Crunches/0.jpg", - "Oblique_Crunches/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Oblique_Crunches/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Oblique_Crunches/1.jpg" ], "id": "Oblique_Crunches" }, @@ -12381,8 +12405,8 @@ ], "category": "strength", "images": [ - "Oblique_Crunches_-_On_The_Floor/0.jpg", - "Oblique_Crunches_-_On_The_Floor/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Oblique_Crunches_-_On_The_Floor/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Oblique_Crunches_-_On_The_Floor/1.jpg" ], "id": "Oblique_Crunches_-_On_The_Floor" }, @@ -12407,8 +12431,8 @@ ], "category": "olympic weightlifting", "images": [ - "Olympic_Squat/0.jpg", - "Olympic_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Olympic_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Olympic_Squat/1.jpg" ], "id": "Olympic_Squat" }, @@ -12430,8 +12454,8 @@ ], "category": "stretching", "images": [ - "On-Your-Back_Quad_Stretch/0.jpg", - "On-Your-Back_Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/On-Your-Back_Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/On-Your-Back_Quad_Stretch/1.jpg" ], "id": "On-Your-Back_Quad_Stretch" }, @@ -12451,8 +12475,8 @@ ], "category": "stretching", "images": [ - "On_Your_Side_Quad_Stretch/0.jpg", - "On_Your_Side_Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/On_Your_Side_Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/On_Your_Side_Quad_Stretch/1.jpg" ], "id": "On_Your_Side_Quad_Stretch" }, @@ -12481,8 +12505,8 @@ ], "category": "strength", "images": [ - "One-Arm_Dumbbell_Row/0.jpg", - "One-Arm_Dumbbell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Dumbbell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Dumbbell_Row/1.jpg" ], "id": "One-Arm_Dumbbell_Row" }, @@ -12506,8 +12530,8 @@ ], "category": "strength", "images": [ - "One-Arm_Flat_Bench_Dumbbell_Flye/0.jpg", - "One-Arm_Flat_Bench_Dumbbell_Flye/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Flat_Bench_Dumbbell_Flye/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Flat_Bench_Dumbbell_Flye/1.jpg" ], "id": "One-Arm_Flat_Bench_Dumbbell_Flye" }, @@ -12533,8 +12557,8 @@ ], "category": "strength", "images": [ - "One-Arm_High-Pulley_Cable_Side_Bends/0.jpg", - "One-Arm_High-Pulley_Cable_Side_Bends/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_High-Pulley_Cable_Side_Bends/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_High-Pulley_Cable_Side_Bends/1.jpg" ], "id": "One-Arm_High-Pulley_Cable_Side_Bends" }, @@ -12558,8 +12582,8 @@ ], "category": "strength", "images": [ - "One-Arm_Incline_Lateral_Raise/0.jpg", - "One-Arm_Incline_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Incline_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Incline_Lateral_Raise/1.jpg" ], "id": "One-Arm_Incline_Lateral_Raise" }, @@ -12585,8 +12609,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Clean/0.jpg", - "One-Arm_Kettlebell_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Clean/1.jpg" ], "id": "One-Arm_Kettlebell_Clean" }, @@ -12610,8 +12634,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Clean_and_Jerk/0.jpg", - "One-Arm_Kettlebell_Clean_and_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Clean_and_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Clean_and_Jerk/1.jpg" ], "id": "One-Arm_Kettlebell_Clean_and_Jerk" }, @@ -12634,8 +12658,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Floor_Press/0.jpg", - "One-Arm_Kettlebell_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Floor_Press/1.jpg" ], "id": "One-Arm_Kettlebell_Floor_Press" }, @@ -12661,8 +12685,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Jerk/0.jpg", - "One-Arm_Kettlebell_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Jerk/1.jpg" ], "id": "One-Arm_Kettlebell_Jerk" }, @@ -12685,8 +12709,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Military_Press_To_The_Side/0.jpg", - "One-Arm_Kettlebell_Military_Press_To_The_Side/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Military_Press_To_The_Side/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Military_Press_To_The_Side/1.jpg" ], "id": "One-Arm_Kettlebell_Military_Press_To_The_Side" }, @@ -12709,8 +12733,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Para_Press/0.jpg", - "One-Arm_Kettlebell_Para_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Para_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Para_Press/1.jpg" ], "id": "One-Arm_Kettlebell_Para_Press" }, @@ -12735,8 +12759,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Push_Press/0.jpg", - "One-Arm_Kettlebell_Push_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Push_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Push_Press/1.jpg" ], "id": "One-Arm_Kettlebell_Push_Press" }, @@ -12758,8 +12782,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Row/0.jpg", - "One-Arm_Kettlebell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Row/1.jpg" ], "id": "One-Arm_Kettlebell_Row" }, @@ -12787,8 +12811,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Snatch/0.jpg", - "One-Arm_Kettlebell_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Snatch/1.jpg" ], "id": "One-Arm_Kettlebell_Snatch" }, @@ -12816,8 +12840,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Split_Jerk/0.jpg", - "One-Arm_Kettlebell_Split_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Split_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Split_Jerk/1.jpg" ], "id": "One-Arm_Kettlebell_Split_Jerk" }, @@ -12842,8 +12866,8 @@ ], "category": "strength", "images": [ - "One-Arm_Kettlebell_Split_Snatch/0.jpg", - "One-Arm_Kettlebell_Split_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Split_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Split_Snatch/1.jpg" ], "id": "One-Arm_Kettlebell_Split_Snatch" }, @@ -12865,8 +12889,8 @@ "instructions": [], "category": "strength", "images": [ - "One-Arm_Kettlebell_Swings/0.jpg", - "One-Arm_Kettlebell_Swings/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Swings/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Kettlebell_Swings/1.jpg" ], "id": "One-Arm_Kettlebell_Swings" }, @@ -12892,8 +12916,8 @@ ], "category": "strength", "images": [ - "One-Arm_Long_Bar_Row/0.jpg", - "One-Arm_Long_Bar_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Long_Bar_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Long_Bar_Row/1.jpg" ], "id": "One-Arm_Long_Bar_Row" }, @@ -12918,8 +12942,8 @@ ], "category": "strength", "images": [ - "One-Arm_Medicine_Ball_Slam/0.jpg", - "One-Arm_Medicine_Ball_Slam/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Medicine_Ball_Slam/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Medicine_Ball_Slam/1.jpg" ], "id": "One-Arm_Medicine_Ball_Slam" }, @@ -12947,8 +12971,8 @@ ], "category": "strength", "images": [ - "One-Arm_Open_Palm_Kettlebell_Clean/0.jpg", - "One-Arm_Open_Palm_Kettlebell_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Open_Palm_Kettlebell_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Open_Palm_Kettlebell_Clean/1.jpg" ], "id": "One-Arm_Open_Palm_Kettlebell_Clean" }, @@ -12974,8 +12998,8 @@ ], "category": "strength", "images": [ - "One-Arm_Overhead_Kettlebell_Squats/0.jpg", - "One-Arm_Overhead_Kettlebell_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Overhead_Kettlebell_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Overhead_Kettlebell_Squats/1.jpg" ], "id": "One-Arm_Overhead_Kettlebell_Squats" }, @@ -13006,8 +13030,8 @@ ], "category": "strength", "images": [ - "One-Arm_Side_Deadlift/0.jpg", - "One-Arm_Side_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Side_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Side_Deadlift/1.jpg" ], "id": "One-Arm_Side_Deadlift" }, @@ -13031,8 +13055,8 @@ ], "category": "strength", "images": [ - "One-Arm_Side_Laterals/0.jpg", - "One-Arm_Side_Laterals/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Side_Laterals/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Arm_Side_Laterals/1.jpg" ], "id": "One-Arm_Side_Laterals" }, @@ -13058,8 +13082,8 @@ ], "category": "strength", "images": [ - "One-Legged_Cable_Kickback/0.jpg", - "One-Legged_Cable_Kickback/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Legged_Cable_Kickback/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One-Legged_Cable_Kickback/1.jpg" ], "id": "One-Legged_Cable_Kickback" }, @@ -13079,8 +13103,8 @@ ], "category": "stretching", "images": [ - "One_Arm_Against_Wall/0.jpg", - "One_Arm_Against_Wall/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Against_Wall/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Against_Wall/1.jpg" ], "id": "One_Arm_Against_Wall" }, @@ -13109,8 +13133,8 @@ ], "category": "strength", "images": [ - "One_Arm_Chin-Up/0.jpg", - "One_Arm_Chin-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Chin-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Chin-Up/1.jpg" ], "id": "One_Arm_Chin-Up" }, @@ -13138,8 +13162,8 @@ ], "category": "strength", "images": [ - "One_Arm_Dumbbell_Bench_Press/0.jpg", - "One_Arm_Dumbbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Dumbbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Dumbbell_Bench_Press/1.jpg" ], "id": "One_Arm_Dumbbell_Bench_Press" }, @@ -13162,8 +13186,8 @@ ], "category": "strength", "images": [ - "One_Arm_Dumbbell_Preacher_Curl/0.jpg", - "One_Arm_Dumbbell_Preacher_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Dumbbell_Preacher_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Dumbbell_Preacher_Curl/1.jpg" ], "id": "One_Arm_Dumbbell_Preacher_Curl" }, @@ -13191,8 +13215,8 @@ ], "category": "strength", "images": [ - "One_Arm_Floor_Press/0.jpg", - "One_Arm_Floor_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Floor_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Floor_Press/1.jpg" ], "id": "One_Arm_Floor_Press" }, @@ -13217,8 +13241,8 @@ ], "category": "strength", "images": [ - "One_Arm_Lat_Pulldown/0.jpg", - "One_Arm_Lat_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Lat_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Lat_Pulldown/1.jpg" ], "id": "One_Arm_Lat_Pulldown" }, @@ -13242,8 +13266,8 @@ ], "category": "strength", "images": [ - "One_Arm_Pronated_Dumbbell_Triceps_Extension/0.jpg", - "One_Arm_Pronated_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Pronated_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Pronated_Dumbbell_Triceps_Extension/1.jpg" ], "id": "One_Arm_Pronated_Dumbbell_Triceps_Extension" }, @@ -13268,8 +13292,8 @@ ], "category": "strength", "images": [ - "One_Arm_Supinated_Dumbbell_Triceps_Extension/0.jpg", - "One_Arm_Supinated_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Supinated_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Arm_Supinated_Dumbbell_Triceps_Extension/1.jpg" ], "id": "One_Arm_Supinated_Dumbbell_Triceps_Extension" }, @@ -13295,8 +13319,8 @@ ], "category": "stretching", "images": [ - "One_Half_Locust/0.jpg", - "One_Half_Locust/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Half_Locust/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Half_Locust/1.jpg" ], "id": "One_Half_Locust" }, @@ -13317,8 +13341,8 @@ ], "category": "stretching", "images": [ - "One_Handed_Hang/0.jpg", - "One_Handed_Hang/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Handed_Hang/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Handed_Hang/1.jpg" ], "id": "One_Handed_Hang" }, @@ -13343,8 +13367,8 @@ ], "category": "stretching", "images": [ - "One_Knee_To_Chest/0.jpg", - "One_Knee_To_Chest/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Knee_To_Chest/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Knee_To_Chest/1.jpg" ], "id": "One_Knee_To_Chest" }, @@ -13373,8 +13397,8 @@ ], "category": "strength", "images": [ - "One_Leg_Barbell_Squat/0.jpg", - "One_Leg_Barbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Leg_Barbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/One_Leg_Barbell_Squat/1.jpg" ], "id": "One_Leg_Barbell_Squat" }, @@ -13400,8 +13424,8 @@ ], "category": "strength", "images": [ - "Open_Palm_Kettlebell_Clean/0.jpg", - "Open_Palm_Kettlebell_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Open_Palm_Kettlebell_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Open_Palm_Kettlebell_Clean/1.jpg" ], "id": "Open_Palm_Kettlebell_Clean" }, @@ -13427,8 +13451,8 @@ ], "category": "strength", "images": [ - "Otis-Up/0.jpg", - "Otis-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Otis-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Otis-Up/1.jpg" ], "id": "Otis-Up" }, @@ -13452,8 +13476,8 @@ ], "category": "strength", "images": [ - "Overhead_Cable_Curl/0.jpg", - "Overhead_Cable_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Cable_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Cable_Curl/1.jpg" ], "id": "Overhead_Cable_Curl" }, @@ -13476,8 +13500,8 @@ ], "category": "stretching", "images": [ - "Overhead_Lat/0.jpg", - "Overhead_Lat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Lat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Lat/1.jpg" ], "id": "Overhead_Lat" }, @@ -13499,8 +13523,8 @@ ], "category": "plyometrics", "images": [ - "Overhead_Slam/0.jpg", - "Overhead_Slam/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Slam/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Slam/1.jpg" ], "id": "Overhead_Slam" }, @@ -13532,8 +13556,8 @@ ], "category": "olympic weightlifting", "images": [ - "Overhead_Squat/0.jpg", - "Overhead_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Squat/1.jpg" ], "id": "Overhead_Squat" }, @@ -13558,8 +13582,8 @@ ], "category": "stretching", "images": [ - "Overhead_Stretch/0.jpg", - "Overhead_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Stretch/1.jpg" ], "id": "Overhead_Stretch" }, @@ -13582,8 +13606,8 @@ ], "category": "stretching", "images": [ - "Overhead_Triceps/0.jpg", - "Overhead_Triceps/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Triceps/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Overhead_Triceps/1.jpg" ], "id": "Overhead_Triceps" }, @@ -13611,8 +13635,8 @@ ], "category": "strength", "images": [ - "Pallof_Press/0.jpg", - "Pallof_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pallof_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pallof_Press/1.jpg" ], "id": "Pallof_Press" }, @@ -13643,8 +13667,8 @@ ], "category": "strength", "images": [ - "Pallof_Press_With_Rotation/0.jpg", - "Pallof_Press_With_Rotation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pallof_Press_With_Rotation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pallof_Press_With_Rotation/1.jpg" ], "id": "Pallof_Press_With_Rotation" }, @@ -13669,8 +13693,8 @@ ], "category": "strength", "images": [ - "Palms-Down_Dumbbell_Wrist_Curl_Over_A_Bench/0.jpg", - "Palms-Down_Dumbbell_Wrist_Curl_Over_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Down_Dumbbell_Wrist_Curl_Over_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Down_Dumbbell_Wrist_Curl_Over_A_Bench/1.jpg" ], "id": "Palms-Down_Dumbbell_Wrist_Curl_Over_A_Bench" }, @@ -13695,8 +13719,8 @@ ], "category": "strength", "images": [ - "Palms-Down_Wrist_Curl_Over_A_Bench/0.jpg", - "Palms-Down_Wrist_Curl_Over_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Down_Wrist_Curl_Over_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Down_Wrist_Curl_Over_A_Bench/1.jpg" ], "id": "Palms-Down_Wrist_Curl_Over_A_Bench" }, @@ -13721,8 +13745,8 @@ ], "category": "strength", "images": [ - "Palms-Up_Barbell_Wrist_Curl_Over_A_Bench/0.jpg", - "Palms-Up_Barbell_Wrist_Curl_Over_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Up_Barbell_Wrist_Curl_Over_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Up_Barbell_Wrist_Curl_Over_A_Bench/1.jpg" ], "id": "Palms-Up_Barbell_Wrist_Curl_Over_A_Bench" }, @@ -13747,8 +13771,8 @@ ], "category": "strength", "images": [ - "Palms-Up_Dumbbell_Wrist_Curl_Over_A_Bench/0.jpg", - "Palms-Up_Dumbbell_Wrist_Curl_Over_A_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Up_Dumbbell_Wrist_Curl_Over_A_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Palms-Up_Dumbbell_Wrist_Curl_Over_A_Bench/1.jpg" ], "id": "Palms-Up_Dumbbell_Wrist_Curl_Over_A_Bench" }, @@ -13773,8 +13797,8 @@ ], "category": "strength", "images": [ - "Parallel_Bar_Dip/0.jpg", - "Parallel_Bar_Dip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Parallel_Bar_Dip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Parallel_Bar_Dip/1.jpg" ], "id": "Parallel_Bar_Dip" }, @@ -13795,8 +13819,8 @@ ], "category": "stretching", "images": [ - "Pelvic_Tilt_Into_Bridge/0.jpg", - "Pelvic_Tilt_Into_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pelvic_Tilt_Into_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pelvic_Tilt_Into_Bridge/1.jpg" ], "id": "Pelvic_Tilt_Into_Bridge" }, @@ -13816,8 +13840,8 @@ ], "category": "stretching", "images": [ - "Peroneals-SMR/0.jpg", - "Peroneals-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Peroneals-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Peroneals-SMR/1.jpg" ], "id": "Peroneals-SMR" }, @@ -13837,8 +13861,8 @@ ], "category": "stretching", "images": [ - "Peroneals_Stretch/0.jpg", - "Peroneals_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Peroneals_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Peroneals_Stretch/1.jpg" ], "id": "Peroneals_Stretch" }, @@ -13861,8 +13885,8 @@ ], "category": "strength", "images": [ - "Physioball_Hip_Bridge/0.jpg", - "Physioball_Hip_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Physioball_Hip_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Physioball_Hip_Bridge/1.jpg" ], "id": "Physioball_Hip_Bridge" }, @@ -13892,8 +13916,8 @@ ], "category": "powerlifting", "images": [ - "Pin_Presses/0.jpg", - "Pin_Presses/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pin_Presses/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pin_Presses/1.jpg" ], "id": "Pin_Presses" }, @@ -13913,8 +13937,8 @@ ], "category": "stretching", "images": [ - "Piriformis-SMR/0.jpg", - "Piriformis-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Piriformis-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Piriformis-SMR/1.jpg" ], "id": "Piriformis-SMR" }, @@ -13934,8 +13958,8 @@ ], "category": "strength", "images": [ - "Plank/0.jpg", - "Plank/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plank/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plank/1.jpg" ], "id": "Plank" }, @@ -13958,8 +13982,8 @@ ], "category": "strength", "images": [ - "Plate_Pinch/0.jpg", - "Plate_Pinch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plate_Pinch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plate_Pinch/1.jpg" ], "id": "Plate_Pinch" }, @@ -13982,8 +14006,8 @@ ], "category": "strength", "images": [ - "Plate_Twist/0.jpg", - "Plate_Twist/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plate_Twist/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plate_Twist/1.jpg" ], "id": "Plate_Twist" }, @@ -14007,8 +14031,8 @@ ], "category": "strength", "images": [ - "Platform_Hamstring_Slides/0.jpg", - "Platform_Hamstring_Slides/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Platform_Hamstring_Slides/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Platform_Hamstring_Slides/1.jpg" ], "id": "Platform_Hamstring_Slides" }, @@ -14036,8 +14060,8 @@ ], "category": "strength", "images": [ - "Plie_Dumbbell_Squat/0.jpg", - "Plie_Dumbbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plie_Dumbbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plie_Dumbbell_Squat/1.jpg" ], "id": "Plie_Dumbbell_Squat" }, @@ -14061,8 +14085,8 @@ ], "category": "strength", "images": [ - "Plyo_Kettlebell_Pushups/0.jpg", - "Plyo_Kettlebell_Pushups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plyo_Kettlebell_Pushups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plyo_Kettlebell_Pushups/1.jpg" ], "id": "Plyo_Kettlebell_Pushups" }, @@ -14089,8 +14113,8 @@ ], "category": "plyometrics", "images": [ - "Plyo_Push-up/0.jpg", - "Plyo_Push-up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plyo_Push-up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Plyo_Push-up/1.jpg" ], "id": "Plyo_Push-up" }, @@ -14110,8 +14134,8 @@ ], "category": "stretching", "images": [ - "Posterior_Tibialis_Stretch/0.jpg", - "Posterior_Tibialis_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Posterior_Tibialis_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Posterior_Tibialis_Stretch/1.jpg" ], "id": "Posterior_Tibialis_Stretch" }, @@ -14163,8 +14187,8 @@ ], "category": "strength", "images": [ - "Power_Clean/0.jpg", - "Power_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Clean/1.jpg" ], "id": "Power_Clean" }, @@ -14189,8 +14213,8 @@ ], "category": "olympic weightlifting", "images": [ - "Power_Clean_from_Blocks/0.jpg", - "Power_Clean_from_Blocks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Clean_from_Blocks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Clean_from_Blocks/1.jpg" ], "id": "Power_Clean_from_Blocks" }, @@ -14220,8 +14244,8 @@ ], "category": "olympic weightlifting", "images": [ - "Power_Jerk/0.jpg", - "Power_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Jerk/1.jpg" ], "id": "Power_Jerk" }, @@ -14244,8 +14268,8 @@ ], "category": "strength", "images": [ - "Power_Partials/0.jpg", - "Power_Partials/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Partials/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Partials/1.jpg" ], "id": "Power_Partials" }, @@ -14276,8 +14300,8 @@ ], "category": "olympic weightlifting", "images": [ - "Power_Snatch/0.jpg", - "Power_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Snatch/1.jpg" ], "id": "Power_Snatch" }, @@ -14309,8 +14333,8 @@ ], "category": "olympic weightlifting", "images": [ - "Power_Snatch_from_Blocks/0.jpg", - "Power_Snatch_from_Blocks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Snatch_from_Blocks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Snatch_from_Blocks/1.jpg" ], "id": "Power_Snatch_from_Blocks" }, @@ -14340,8 +14364,8 @@ ], "category": "strongman", "images": [ - "Power_Stairs/0.jpg", - "Power_Stairs/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Stairs/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Power_Stairs/1.jpg" ], "id": "Power_Stairs" }, @@ -14364,8 +14388,8 @@ ], "category": "strength", "images": [ - "Preacher_Curl/0.jpg", - "Preacher_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Preacher_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Preacher_Curl/1.jpg" ], "id": "Preacher_Curl" }, @@ -14389,8 +14413,8 @@ ], "category": "strength", "images": [ - "Preacher_Hammer_Dumbbell_Curl/0.jpg", - "Preacher_Hammer_Dumbbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Preacher_Hammer_Dumbbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Preacher_Hammer_Dumbbell_Curl/1.jpg" ], "id": "Preacher_Hammer_Dumbbell_Curl" }, @@ -14416,8 +14440,8 @@ ], "category": "strength", "images": [ - "Press_Sit-Up/0.jpg", - "Press_Sit-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Press_Sit-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Press_Sit-Up/1.jpg" ], "id": "Press_Sit-Up" }, @@ -14438,8 +14462,8 @@ ], "category": "strength", "images": [ - "Prone_Manual_Hamstring/0.jpg", - "Prone_Manual_Hamstring/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Prone_Manual_Hamstring/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Prone_Manual_Hamstring/1.jpg" ], "id": "Prone_Manual_Hamstring" }, @@ -14466,8 +14490,8 @@ ], "category": "cardio", "images": [ - "Prowler_Sprint/0.jpg", - "Prowler_Sprint/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Prowler_Sprint/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Prowler_Sprint/1.jpg" ], "id": "Prowler_Sprint" }, @@ -14490,8 +14514,8 @@ ], "category": "strength", "images": [ - "Pull_Through/0.jpg", - "Pull_Through/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pull_Through/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pull_Through/1.jpg" ], "id": "Pull_Through" }, @@ -14517,8 +14541,8 @@ ], "category": "strength", "images": [ - "Pullups/0.jpg", - "Pullups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pullups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pullups/1.jpg" ], "id": "Pullups" }, @@ -14544,8 +14568,8 @@ ], "category": "strength", "images": [ - "Push-Up_Wide/0.jpg", - "Push-Up_Wide/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Up_Wide/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Up_Wide/1.jpg" ], "id": "Push-Up_Wide" }, @@ -14570,8 +14594,8 @@ ], "category": "strength", "images": [ - "Push-Ups_-_Close_Triceps_Position/0.jpg", - "Push-Ups_-_Close_Triceps_Position/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_-_Close_Triceps_Position/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_-_Close_Triceps_Position/1.jpg" ], "id": "Push-Ups_-_Close_Triceps_Position" }, @@ -14597,8 +14621,8 @@ ], "category": "strength", "images": [ - "Push-Ups_With_Feet_Elevated/0.jpg", - "Push-Ups_With_Feet_Elevated/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_With_Feet_Elevated/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_With_Feet_Elevated/1.jpg" ], "id": "Push-Ups_With_Feet_Elevated" }, @@ -14624,8 +14648,8 @@ ], "category": "strength", "images": [ - "Push-Ups_With_Feet_On_An_Exercise_Ball/0.jpg", - "Push-Ups_With_Feet_On_An_Exercise_Ball/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_With_Feet_On_An_Exercise_Ball/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push-Ups_With_Feet_On_An_Exercise_Ball/1.jpg" ], "id": "Push-Ups_With_Feet_On_An_Exercise_Ball" }, @@ -14645,8 +14669,8 @@ "instructions": [], "category": "olympic weightlifting", "images": [ - "Push_Press/0.jpg", - "Push_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Press/1.jpg" ], "id": "Push_Press" }, @@ -14671,8 +14695,8 @@ ], "category": "olympic weightlifting", "images": [ - "Push_Press_-_Behind_the_Neck/0.jpg", - "Push_Press_-_Behind_the_Neck/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Press_-_Behind_the_Neck/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Press_-_Behind_the_Neck/1.jpg" ], "id": "Push_Press_-_Behind_the_Neck" }, @@ -14699,8 +14723,8 @@ ], "category": "strength", "images": [ - "Push_Up_to_Side_Plank/0.jpg", - "Push_Up_to_Side_Plank/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Up_to_Side_Plank/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Push_Up_to_Side_Plank/1.jpg" ], "id": "Push_Up_to_Side_Plank" }, @@ -14725,8 +14749,8 @@ ], "category": "strength", "images": [ - "Pushups/0.jpg", - "Pushups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pushups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pushups/1.jpg" ], "id": "Pushups" }, @@ -14751,8 +14775,8 @@ ], "category": "strength", "images": [ - "Pushups_Close_and_Wide_Hand_Positions/0.jpg", - "Pushups_Close_and_Wide_Hand_Positions/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pushups_Close_and_Wide_Hand_Positions/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pushups_Close_and_Wide_Hand_Positions/1.jpg" ], "id": "Pushups_Close_and_Wide_Hand_Positions" }, @@ -14774,8 +14798,8 @@ ], "category": "stretching", "images": [ - "Pyramid/0.jpg", - "Pyramid/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pyramid/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Pyramid/1.jpg" ], "id": "Pyramid" }, @@ -14795,8 +14819,8 @@ ], "category": "stretching", "images": [ - "Quad_Stretch/0.jpg", - "Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quad_Stretch/1.jpg" ], "id": "Quad_Stretch" }, @@ -14816,8 +14840,8 @@ ], "category": "stretching", "images": [ - "Quadriceps-SMR/0.jpg", - "Quadriceps-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quadriceps-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quadriceps-SMR/1.jpg" ], "id": "Quadriceps-SMR" }, @@ -14842,8 +14866,8 @@ ], "category": "plyometrics", "images": [ - "Quick_Leap/0.jpg", - "Quick_Leap/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quick_Leap/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Quick_Leap/1.jpg" ], "id": "Quick_Leap" }, @@ -14867,8 +14891,8 @@ ], "category": "olympic weightlifting", "images": [ - "Rack_Delivery/0.jpg", - "Rack_Delivery/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Delivery/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Delivery/1.jpg" ], "id": "Rack_Delivery" }, @@ -14895,8 +14919,8 @@ ], "category": "powerlifting", "images": [ - "Rack_Pull_with_Bands/0.jpg", - "Rack_Pull_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Pull_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Pull_with_Bands/1.jpg" ], "id": "Rack_Pull_with_Bands" }, @@ -14922,8 +14946,8 @@ ], "category": "powerlifting", "images": [ - "Rack_Pulls/0.jpg", - "Rack_Pulls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Pulls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rack_Pulls/1.jpg" ], "id": "Rack_Pulls" }, @@ -14943,8 +14967,8 @@ ], "category": "stretching", "images": [ - "Rear_Leg_Raises/0.jpg", - "Rear_Leg_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rear_Leg_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rear_Leg_Raises/1.jpg" ], "id": "Rear_Leg_Raises" }, @@ -14969,8 +14993,8 @@ ], "category": "cardio", "images": [ - "Recumbent_Bike/0.jpg", - "Recumbent_Bike/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Recumbent_Bike/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Recumbent_Bike/1.jpg" ], "id": "Recumbent_Bike" }, @@ -14996,8 +15020,8 @@ ], "category": "plyometrics", "images": [ - "Return_Push_from_Stance/0.jpg", - "Return_Push_from_Stance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Return_Push_from_Stance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Return_Push_from_Stance/1.jpg" ], "id": "Return_Push_from_Stance" }, @@ -15025,8 +15049,8 @@ ], "category": "powerlifting", "images": [ - "Reverse_Band_Bench_Press/0.jpg", - "Reverse_Band_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Bench_Press/1.jpg" ], "id": "Reverse_Band_Bench_Press" }, @@ -15056,8 +15080,8 @@ ], "category": "powerlifting", "images": [ - "Reverse_Band_Box_Squat/0.jpg", - "Reverse_Band_Box_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Box_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Box_Squat/1.jpg" ], "id": "Reverse_Band_Box_Squat" }, @@ -15087,8 +15111,8 @@ ], "category": "powerlifting", "images": [ - "Reverse_Band_Deadlift/0.jpg", - "Reverse_Band_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Deadlift/1.jpg" ], "id": "Reverse_Band_Deadlift" }, @@ -15116,8 +15140,8 @@ ], "category": "powerlifting", "images": [ - "Reverse_Band_Power_Squat/0.jpg", - "Reverse_Band_Power_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Power_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Power_Squat/1.jpg" ], "id": "Reverse_Band_Power_Squat" }, @@ -15149,8 +15173,8 @@ ], "category": "powerlifting", "images": [ - "Reverse_Band_Sumo_Deadlift/0.jpg", - "Reverse_Band_Sumo_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Sumo_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Band_Sumo_Deadlift/1.jpg" ], "id": "Reverse_Band_Sumo_Deadlift" }, @@ -15174,8 +15198,8 @@ ], "category": "strength", "images": [ - "Reverse_Barbell_Curl/0.jpg", - "Reverse_Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Barbell_Curl/1.jpg" ], "id": "Reverse_Barbell_Curl" }, @@ -15200,8 +15224,8 @@ ], "category": "strength", "images": [ - "Reverse_Barbell_Preacher_Curls/0.jpg", - "Reverse_Barbell_Preacher_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Barbell_Preacher_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Barbell_Preacher_Curls/1.jpg" ], "id": "Reverse_Barbell_Preacher_Curls" }, @@ -15225,8 +15249,8 @@ ], "category": "strength", "images": [ - "Reverse_Cable_Curl/0.jpg", - "Reverse_Cable_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Cable_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Cable_Curl/1.jpg" ], "id": "Reverse_Cable_Curl" }, @@ -15249,8 +15273,8 @@ ], "category": "strength", "images": [ - "Reverse_Crunch/0.jpg", - "Reverse_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Crunch/1.jpg" ], "id": "Reverse_Crunch" }, @@ -15274,8 +15298,8 @@ ], "category": "strength", "images": [ - "Reverse_Flyes/0.jpg", - "Reverse_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Flyes/1.jpg" ], "id": "Reverse_Flyes" }, @@ -15300,8 +15324,8 @@ ], "category": "strength", "images": [ - "Reverse_Flyes_With_External_Rotation/0.jpg", - "Reverse_Flyes_With_External_Rotation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Flyes_With_External_Rotation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Flyes_With_External_Rotation/1.jpg" ], "id": "Reverse_Flyes_With_External_Rotation" }, @@ -15328,8 +15352,8 @@ ], "category": "strength", "images": [ - "Reverse_Grip_Bent-Over_Rows/0.jpg", - "Reverse_Grip_Bent-Over_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Grip_Bent-Over_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Grip_Bent-Over_Rows/1.jpg" ], "id": "Reverse_Grip_Bent-Over_Rows" }, @@ -15352,8 +15376,8 @@ ], "category": "strength", "images": [ - "Reverse_Grip_Triceps_Pushdown/0.jpg", - "Reverse_Grip_Triceps_Pushdown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Grip_Triceps_Pushdown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Grip_Triceps_Pushdown/1.jpg" ], "id": "Reverse_Grip_Triceps_Pushdown" }, @@ -15379,8 +15403,8 @@ ], "category": "strength", "images": [ - "Reverse_Hyperextension/0.jpg", - "Reverse_Hyperextension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Hyperextension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Hyperextension/1.jpg" ], "id": "Reverse_Hyperextension" }, @@ -15402,8 +15426,8 @@ ], "category": "strength", "images": [ - "Reverse_Machine_Flyes/0.jpg", - "Reverse_Machine_Flyes/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Machine_Flyes/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Machine_Flyes/1.jpg" ], "id": "Reverse_Machine_Flyes" }, @@ -15428,8 +15452,8 @@ ], "category": "strength", "images": [ - "Reverse_Plate_Curls/0.jpg", - "Reverse_Plate_Curls/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Plate_Curls/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Plate_Curls/1.jpg" ], "id": "Reverse_Plate_Curls" }, @@ -15455,8 +15479,8 @@ ], "category": "strength", "images": [ - "Reverse_Triceps_Bench_Press/0.jpg", - "Reverse_Triceps_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Triceps_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Reverse_Triceps_Bench_Press/1.jpg" ], "id": "Reverse_Triceps_Bench_Press" }, @@ -15478,8 +15502,8 @@ ], "category": "stretching", "images": [ - "Rhomboids-SMR/0.jpg", - "Rhomboids-SMR/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rhomboids-SMR/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rhomboids-SMR/1.jpg" ], "id": "Rhomboids-SMR" }, @@ -15507,8 +15531,8 @@ ], "category": "strongman", "images": [ - "Rickshaw_Carry/0.jpg", - "Rickshaw_Carry/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rickshaw_Carry/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rickshaw_Carry/1.jpg" ], "id": "Rickshaw_Carry" }, @@ -15535,8 +15559,8 @@ ], "category": "strongman", "images": [ - "Rickshaw_Deadlift/0.jpg", - "Rickshaw_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rickshaw_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rickshaw_Deadlift/1.jpg" ], "id": "Rickshaw_Deadlift" }, @@ -15561,8 +15585,8 @@ ], "category": "strength", "images": [ - "Ring_Dips/0.jpg", - "Ring_Dips/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ring_Dips/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Ring_Dips/1.jpg" ], "id": "Ring_Dips" }, @@ -15586,8 +15610,8 @@ ], "category": "plyometrics", "images": [ - "Rocket_Jump/0.jpg", - "Rocket_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocket_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocket_Jump/1.jpg" ], "id": "Rocket_Jump" }, @@ -15613,8 +15637,8 @@ ], "category": "strength", "images": [ - "Rocking_Standing_Calf_Raise/0.jpg", - "Rocking_Standing_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocking_Standing_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocking_Standing_Calf_Raise/1.jpg" ], "id": "Rocking_Standing_Calf_Raise" }, @@ -15642,8 +15666,8 @@ ], "category": "strength", "images": [ - "Rocky_Pull-Ups_Pulldowns/0.jpg", - "Rocky_Pull-Ups_Pulldowns/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocky_Pull-Ups_Pulldowns/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rocky_Pull-Ups_Pulldowns/1.jpg" ], "id": "Rocky_Pull-Ups_Pulldowns" }, @@ -15670,8 +15694,8 @@ ], "category": "strength", "images": [ - "Romanian_Deadlift/0.jpg", - "Romanian_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Romanian_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Romanian_Deadlift/1.jpg" ], "id": "Romanian_Deadlift" }, @@ -15697,8 +15721,8 @@ ], "category": "olympic weightlifting", "images": [ - "Romanian_Deadlift_from_Deficit/0.jpg", - "Romanian_Deadlift_from_Deficit/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Romanian_Deadlift_from_Deficit/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Romanian_Deadlift_from_Deficit/1.jpg" ], "id": "Romanian_Deadlift_from_Deficit" }, @@ -15726,8 +15750,8 @@ ], "category": "strength", "images": [ - "Rope_Climb/0.jpg", - "Rope_Climb/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Climb/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Climb/1.jpg" ], "id": "Rope_Climb" }, @@ -15750,8 +15774,8 @@ ], "category": "strength", "images": [ - "Rope_Crunch/0.jpg", - "Rope_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Crunch/1.jpg" ], "id": "Rope_Crunch" }, @@ -15774,8 +15798,8 @@ ], "category": "cardio", "images": [ - "Rope_Jumping/0.jpg", - "Rope_Jumping/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Jumping/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Jumping/1.jpg" ], "id": "Rope_Jumping" }, @@ -15797,8 +15821,8 @@ ], "category": "strength", "images": [ - "Rope_Straight-Arm_Pulldown/0.jpg", - "Rope_Straight-Arm_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Straight-Arm_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rope_Straight-Arm_Pulldown/1.jpg" ], "id": "Rope_Straight-Arm_Pulldown" }, @@ -15822,8 +15846,8 @@ ], "category": "stretching", "images": [ - "Round_The_World_Shoulder_Stretch/0.jpg", - "Round_The_World_Shoulder_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Round_The_World_Shoulder_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Round_The_World_Shoulder_Stretch/1.jpg" ], "id": "Round_The_World_Shoulder_Stretch" }, @@ -15851,8 +15875,8 @@ ], "category": "cardio", "images": [ - "Rowing_Stationary/0.jpg", - "Rowing_Stationary/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rowing_Stationary/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Rowing_Stationary/1.jpg" ], "id": "Rowing_Stationary" }, @@ -15875,8 +15899,8 @@ ], "category": "stretching", "images": [ - "Runners_Stretch/0.jpg", - "Runners_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Runners_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Runners_Stretch/1.jpg" ], "id": "Runners_Stretch" }, @@ -15900,8 +15924,8 @@ ], "category": "cardio", "images": [ - "Running_Treadmill/0.jpg", - "Running_Treadmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Running_Treadmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Running_Treadmill/1.jpg" ], "id": "Running_Treadmill" }, @@ -15926,8 +15950,8 @@ ], "category": "strength", "images": [ - "Russian_Twist/0.jpg", - "Russian_Twist/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Russian_Twist/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Russian_Twist/1.jpg" ], "id": "Russian_Twist" }, @@ -15960,8 +15984,8 @@ ], "category": "strongman", "images": [ - "Sandbag_Load/0.jpg", - "Sandbag_Load/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sandbag_Load/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sandbag_Load/1.jpg" ], "id": "Sandbag_Load" }, @@ -15985,8 +16009,8 @@ ], "category": "strength", "images": [ - "Scapular_Pull-Up/0.jpg", - "Scapular_Pull-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scapular_Pull-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scapular_Pull-Up/1.jpg" ], "id": "Scapular_Pull-Up" }, @@ -16009,8 +16033,8 @@ ], "category": "stretching", "images": [ - "Scissor_Kick/0.jpg", - "Scissor_Kick/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scissor_Kick/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scissor_Kick/1.jpg" ], "id": "Scissor_Kick" }, @@ -16035,8 +16059,8 @@ ], "category": "plyometrics", "images": [ - "Scissors_Jump/0.jpg", - "Scissors_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scissors_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Scissors_Jump/1.jpg" ], "id": "Scissors_Jump" }, @@ -16058,8 +16082,8 @@ ], "category": "strength", "images": [ - "Seated_Band_Hamstring_Curl/0.jpg", - "Seated_Band_Hamstring_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Band_Hamstring_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Band_Hamstring_Curl/1.jpg" ], "id": "Seated_Band_Hamstring_Curl" }, @@ -16084,8 +16108,8 @@ ], "category": "strength", "images": [ - "Seated_Barbell_Military_Press/0.jpg", - "Seated_Barbell_Military_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Barbell_Military_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Barbell_Military_Press/1.jpg" ], "id": "Seated_Barbell_Military_Press" }, @@ -16109,8 +16133,8 @@ ], "category": "strength", "images": [ - "Seated_Barbell_Twist/0.jpg", - "Seated_Barbell_Twist/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Barbell_Twist/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Barbell_Twist/1.jpg" ], "id": "Seated_Barbell_Twist" }, @@ -16135,8 +16159,8 @@ ], "category": "strength", "images": [ - "Seated_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/0.jpg", - "Seated_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Seated_Bent-Over_One-Arm_Dumbbell_Triceps_Extension" }, @@ -16160,8 +16184,8 @@ ], "category": "strength", "images": [ - "Seated_Bent-Over_Rear_Delt_Raise/0.jpg", - "Seated_Bent-Over_Rear_Delt_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_Rear_Delt_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_Rear_Delt_Raise/1.jpg" ], "id": "Seated_Bent-Over_Rear_Delt_Raise" }, @@ -16185,8 +16209,8 @@ ], "category": "strength", "images": [ - "Seated_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/0.jpg", - "Seated_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Seated_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension" }, @@ -16210,8 +16234,8 @@ ], "category": "stretching", "images": [ - "Seated_Biceps/0.jpg", - "Seated_Biceps/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Biceps/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Biceps/1.jpg" ], "id": "Seated_Biceps" }, @@ -16238,8 +16262,8 @@ ], "category": "strength", "images": [ - "Seated_Cable_Rows/0.jpg", - "Seated_Cable_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Cable_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Cable_Rows/1.jpg" ], "id": "Seated_Cable_Rows" }, @@ -16263,8 +16287,8 @@ ], "category": "strength", "images": [ - "Seated_Cable_Shoulder_Press/0.jpg", - "Seated_Cable_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Cable_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Cable_Shoulder_Press/1.jpg" ], "id": "Seated_Cable_Shoulder_Press" }, @@ -16288,8 +16312,8 @@ ], "category": "strength", "images": [ - "Seated_Calf_Raise/0.jpg", - "Seated_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Calf_Raise/1.jpg" ], "id": "Seated_Calf_Raise" }, @@ -16314,8 +16338,8 @@ ], "category": "stretching", "images": [ - "Seated_Calf_Stretch/0.jpg", - "Seated_Calf_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Calf_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Calf_Stretch/1.jpg" ], "id": "Seated_Calf_Stretch" }, @@ -16338,8 +16362,8 @@ ], "category": "strength", "images": [ - "Seated_Close-Grip_Concentration_Barbell_Curl/0.jpg", - "Seated_Close-Grip_Concentration_Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Close-Grip_Concentration_Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Close-Grip_Concentration_Barbell_Curl/1.jpg" ], "id": "Seated_Close-Grip_Concentration_Barbell_Curl" }, @@ -16362,8 +16386,8 @@ ], "category": "strength", "images": [ - "Seated_Dumbbell_Curl/0.jpg", - "Seated_Dumbbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Curl/1.jpg" ], "id": "Seated_Dumbbell_Curl" }, @@ -16387,8 +16411,8 @@ ], "category": "strength", "images": [ - "Seated_Dumbbell_Inner_Biceps_Curl/0.jpg", - "Seated_Dumbbell_Inner_Biceps_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Inner_Biceps_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Inner_Biceps_Curl/1.jpg" ], "id": "Seated_Dumbbell_Inner_Biceps_Curl" }, @@ -16413,8 +16437,8 @@ ], "category": "strength", "images": [ - "Seated_Dumbbell_Palms-Down_Wrist_Curl/0.jpg", - "Seated_Dumbbell_Palms-Down_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Palms-Down_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Palms-Down_Wrist_Curl/1.jpg" ], "id": "Seated_Dumbbell_Palms-Down_Wrist_Curl" }, @@ -16439,8 +16463,8 @@ ], "category": "strength", "images": [ - "Seated_Dumbbell_Palms-Up_Wrist_Curl/0.jpg", - "Seated_Dumbbell_Palms-Up_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Palms-Up_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Palms-Up_Wrist_Curl/1.jpg" ], "id": "Seated_Dumbbell_Palms-Up_Wrist_Curl" }, @@ -16466,8 +16490,8 @@ ], "category": "strength", "images": [ - "Seated_Dumbbell_Press/0.jpg", - "Seated_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Dumbbell_Press/1.jpg" ], "id": "Seated_Dumbbell_Press" }, @@ -16489,8 +16513,8 @@ ], "category": "strength", "images": [ - "Seated_Flat_Bench_Leg_Pull-In/0.jpg", - "Seated_Flat_Bench_Leg_Pull-In/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Flat_Bench_Leg_Pull-In/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Flat_Bench_Leg_Pull-In/1.jpg" ], "id": "Seated_Flat_Bench_Leg_Pull-In" }, @@ -16512,8 +16536,8 @@ ], "category": "stretching", "images": [ - "Seated_Floor_Hamstring_Stretch/0.jpg", - "Seated_Floor_Hamstring_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Floor_Hamstring_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Floor_Hamstring_Stretch/1.jpg" ], "id": "Seated_Floor_Hamstring_Stretch" }, @@ -16536,8 +16560,8 @@ ], "category": "stretching", "images": [ - "Seated_Front_Deltoid/0.jpg", - "Seated_Front_Deltoid/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Front_Deltoid/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Front_Deltoid/1.jpg" ], "id": "Seated_Front_Deltoid" }, @@ -16560,8 +16584,8 @@ ], "category": "stretching", "images": [ - "Seated_Glute/0.jpg", - "Seated_Glute/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Glute/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Glute/1.jpg" ], "id": "Seated_Glute" }, @@ -16585,8 +16609,8 @@ ], "category": "powerlifting", "images": [ - "Seated_Good_Mornings/0.jpg", - "Seated_Good_Mornings/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Good_Mornings/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Good_Mornings/1.jpg" ], "id": "Seated_Good_Mornings" }, @@ -16609,8 +16633,8 @@ ], "category": "stretching", "images": [ - "Seated_Hamstring/0.jpg", - "Seated_Hamstring/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Hamstring/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Hamstring/1.jpg" ], "id": "Seated_Hamstring" }, @@ -16632,8 +16656,8 @@ ], "category": "stretching", "images": [ - "Seated_Hamstring_and_Calf_Stretch/0.jpg", - "Seated_Hamstring_and_Calf_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Hamstring_and_Calf_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Hamstring_and_Calf_Stretch/1.jpg" ], "id": "Seated_Hamstring_and_Calf_Stretch" }, @@ -16657,8 +16681,8 @@ ], "category": "strength", "images": [ - "Seated_Head_Harness_Neck_Resistance/0.jpg", - "Seated_Head_Harness_Neck_Resistance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Head_Harness_Neck_Resistance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Head_Harness_Neck_Resistance/1.jpg" ], "id": "Seated_Head_Harness_Neck_Resistance" }, @@ -16681,8 +16705,8 @@ ], "category": "strength", "images": [ - "Seated_Leg_Curl/0.jpg", - "Seated_Leg_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Leg_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Leg_Curl/1.jpg" ], "id": "Seated_Leg_Curl" }, @@ -16704,8 +16728,8 @@ ], "category": "strength", "images": [ - "Seated_Leg_Tucks/0.jpg", - "Seated_Leg_Tucks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Leg_Tucks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Leg_Tucks/1.jpg" ], "id": "Seated_Leg_Tucks" }, @@ -16729,8 +16753,8 @@ ], "category": "strength", "images": [ - "Seated_One-Arm_Dumbbell_Palms-Down_Wrist_Curl/0.jpg", - "Seated_One-Arm_Dumbbell_Palms-Down_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-Arm_Dumbbell_Palms-Down_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-Arm_Dumbbell_Palms-Down_Wrist_Curl/1.jpg" ], "id": "Seated_One-Arm_Dumbbell_Palms-Down_Wrist_Curl" }, @@ -16754,8 +16778,8 @@ ], "category": "strength", "images": [ - "Seated_One-Arm_Dumbbell_Palms-Up_Wrist_Curl/0.jpg", - "Seated_One-Arm_Dumbbell_Palms-Up_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-Arm_Dumbbell_Palms-Up_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-Arm_Dumbbell_Palms-Up_Wrist_Curl/1.jpg" ], "id": "Seated_One-Arm_Dumbbell_Palms-Up_Wrist_Curl" }, @@ -16783,8 +16807,8 @@ ], "category": "strength", "images": [ - "Seated_One-arm_Cable_Pulley_Rows/0.jpg", - "Seated_One-arm_Cable_Pulley_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-arm_Cable_Pulley_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_One-arm_Cable_Pulley_Rows/1.jpg" ], "id": "Seated_One-arm_Cable_Pulley_Rows" }, @@ -16806,8 +16830,8 @@ ], "category": "stretching", "images": [ - "Seated_Overhead_Stretch/0.jpg", - "Seated_Overhead_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Overhead_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Overhead_Stretch/1.jpg" ], "id": "Seated_Overhead_Stretch" }, @@ -16830,8 +16854,8 @@ ], "category": "strength", "images": [ - "Seated_Palm-Up_Barbell_Wrist_Curl/0.jpg", - "Seated_Palm-Up_Barbell_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Palm-Up_Barbell_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Palm-Up_Barbell_Wrist_Curl/1.jpg" ], "id": "Seated_Palm-Up_Barbell_Wrist_Curl" }, @@ -16854,8 +16878,8 @@ ], "category": "strength", "images": [ - "Seated_Palms-Down_Barbell_Wrist_Curl/0.jpg", - "Seated_Palms-Down_Barbell_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Palms-Down_Barbell_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Palms-Down_Barbell_Wrist_Curl/1.jpg" ], "id": "Seated_Palms-Down_Barbell_Wrist_Curl" }, @@ -16877,8 +16901,8 @@ ], "category": "strength", "images": [ - "Seated_Side_Lateral_Raise/0.jpg", - "Seated_Side_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Side_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Side_Lateral_Raise/1.jpg" ], "id": "Seated_Side_Lateral_Raise" }, @@ -16900,8 +16924,8 @@ ], "category": "strength", "images": [ - "Seated_Triceps_Press/0.jpg", - "Seated_Triceps_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Triceps_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Triceps_Press/1.jpg" ], "id": "Seated_Triceps_Press" }, @@ -16928,8 +16952,8 @@ ], "category": "strength", "images": [ - "Seated_Two-Arm_Palms-Up_Low-Pulley_Wrist_Curl/0.jpg", - "Seated_Two-Arm_Palms-Up_Low-Pulley_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Two-Arm_Palms-Up_Low-Pulley_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Seated_Two-Arm_Palms-Up_Low-Pulley_Wrist_Curl/1.jpg" ], "id": "Seated_Two-Arm_Palms-Up_Low-Pulley_Wrist_Curl" }, @@ -16955,8 +16979,8 @@ ], "category": "strength", "images": [ - "See-Saw_Press_Alternating_Side_Press/0.jpg", - "See-Saw_Press_Alternating_Side_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/See-Saw_Press_Alternating_Side_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/See-Saw_Press_Alternating_Side_Press/1.jpg" ], "id": "See-Saw_Press_Alternating_Side_Press" }, @@ -16981,8 +17005,8 @@ ], "category": "strength", "images": [ - "Shotgun_Row/0.jpg", - "Shotgun_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shotgun_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shotgun_Row/1.jpg" ], "id": "Shotgun_Row" }, @@ -17004,8 +17028,8 @@ ], "category": "stretching", "images": [ - "Shoulder_Circles/0.jpg", - "Shoulder_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Circles/1.jpg" ], "id": "Shoulder_Circles" }, @@ -17028,8 +17052,8 @@ ], "category": "strength", "images": [ - "Shoulder_Press_-_With_Bands/0.jpg", - "Shoulder_Press_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Press_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Press_-_With_Bands/1.jpg" ], "id": "Shoulder_Press_-_With_Bands" }, @@ -17050,8 +17074,8 @@ ], "category": "stretching", "images": [ - "Shoulder_Raise/0.jpg", - "Shoulder_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Raise/1.jpg" ], "id": "Shoulder_Raise" }, @@ -17070,8 +17094,8 @@ ], "category": "stretching", "images": [ - "Shoulder_Stretch/0.jpg", - "Shoulder_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Shoulder_Stretch/1.jpg" ], "id": "Shoulder_Stretch" }, @@ -17091,8 +17115,8 @@ ], "category": "stretching", "images": [ - "Side-Lying_Floor_Stretch/0.jpg", - "Side-Lying_Floor_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side-Lying_Floor_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side-Lying_Floor_Stretch/1.jpg" ], "id": "Side-Lying_Floor_Stretch" }, @@ -17111,8 +17135,8 @@ "instructions": [], "category": "strength", "images": [ - "Side_Bridge/0.jpg", - "Side_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Bridge/1.jpg" ], "id": "Side_Bridge" }, @@ -17138,8 +17162,8 @@ ], "category": "plyometrics", "images": [ - "Side_Hop-Sprint/0.jpg", - "Side_Hop-Sprint/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Hop-Sprint/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Hop-Sprint/1.jpg" ], "id": "Side_Hop-Sprint" }, @@ -17156,8 +17180,8 @@ "instructions": [], "category": "strength", "images": [ - "Side_Jackknife/0.jpg", - "Side_Jackknife/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Jackknife/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Jackknife/1.jpg" ], "id": "Side_Jackknife" }, @@ -17179,8 +17203,8 @@ ], "category": "strength", "images": [ - "Side_Lateral_Raise/0.jpg", - "Side_Lateral_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Lateral_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Lateral_Raise/1.jpg" ], "id": "Side_Lateral_Raise" }, @@ -17206,8 +17230,8 @@ ], "category": "strength", "images": [ - "Side_Laterals_to_Front_Raise/0.jpg", - "Side_Laterals_to_Front_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Laterals_to_Front_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Laterals_to_Front_Raise/1.jpg" ], "id": "Side_Laterals_to_Front_Raise" }, @@ -17228,8 +17252,8 @@ ], "category": "stretching", "images": [ - "Side_Leg_Raises/0.jpg", - "Side_Leg_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Leg_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Leg_Raises/1.jpg" ], "id": "Side_Leg_Raises" }, @@ -17252,8 +17276,8 @@ ], "category": "stretching", "images": [ - "Side_Lying_Groin_Stretch/0.jpg", - "Side_Lying_Groin_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Lying_Groin_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Lying_Groin_Stretch/1.jpg" ], "id": "Side_Lying_Groin_Stretch" }, @@ -17273,8 +17297,8 @@ ], "category": "stretching", "images": [ - "Side_Neck_Stretch/0.jpg", - "Side_Neck_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Neck_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Neck_Stretch/1.jpg" ], "id": "Side_Neck_Stretch" }, @@ -17299,8 +17323,8 @@ ], "category": "plyometrics", "images": [ - "Side_Standing_Long_Jump/0.jpg", - "Side_Standing_Long_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Standing_Long_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Standing_Long_Jump/1.jpg" ], "id": "Side_Standing_Long_Jump" }, @@ -17330,8 +17354,8 @@ ], "category": "strength", "images": [ - "Side_To_Side_Chins/0.jpg", - "Side_To_Side_Chins/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_To_Side_Chins/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_To_Side_Chins/1.jpg" ], "id": "Side_To_Side_Chins" }, @@ -17354,8 +17378,8 @@ ], "category": "stretching", "images": [ - "Side_Wrist_Pull/0.jpg", - "Side_Wrist_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Wrist_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_Wrist_Pull/1.jpg" ], "id": "Side_Wrist_Pull" }, @@ -17381,8 +17405,8 @@ ], "category": "plyometrics", "images": [ - "Side_to_Side_Box_Shuffle/0.jpg", - "Side_to_Side_Box_Shuffle/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_to_Side_Box_Shuffle/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Side_to_Side_Box_Shuffle/1.jpg" ], "id": "Side_to_Side_Box_Shuffle" }, @@ -17405,8 +17429,8 @@ ], "category": "strength", "images": [ - "Single-Arm_Cable_Crossover/0.jpg", - "Single-Arm_Cable_Crossover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Cable_Crossover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Cable_Crossover/1.jpg" ], "id": "Single-Arm_Cable_Crossover" }, @@ -17431,8 +17455,8 @@ ], "category": "strength", "images": [ - "Single-Arm_Linear_Jammer/0.jpg", - "Single-Arm_Linear_Jammer/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Linear_Jammer/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Linear_Jammer/1.jpg" ], "id": "Single-Arm_Linear_Jammer" }, @@ -17457,8 +17481,8 @@ ], "category": "strength", "images": [ - "Single-Arm_Push-Up/0.jpg", - "Single-Arm_Push-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Push-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Arm_Push-Up/1.jpg" ], "id": "Single-Arm_Push-Up" }, @@ -17483,8 +17507,8 @@ ], "category": "plyometrics", "images": [ - "Single-Cone_Sprint_Drill/0.jpg", - "Single-Cone_Sprint_Drill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Cone_Sprint_Drill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Cone_Sprint_Drill/1.jpg" ], "id": "Single-Cone_Sprint_Drill" }, @@ -17508,8 +17532,8 @@ ], "category": "strength", "images": [ - "Single-Leg_High_Box_Squat/0.jpg", - "Single-Leg_High_Box_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_High_Box_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_High_Box_Squat/1.jpg" ], "id": "Single-Leg_High_Box_Squat" }, @@ -17536,8 +17560,8 @@ ], "category": "plyometrics", "images": [ - "Single-Leg_Hop_Progression/0.jpg", - "Single-Leg_Hop_Progression/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Hop_Progression/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Hop_Progression/1.jpg" ], "id": "Single-Leg_Hop_Progression" }, @@ -17564,8 +17588,8 @@ ], "category": "plyometrics", "images": [ - "Single-Leg_Lateral_Hop/0.jpg", - "Single-Leg_Lateral_Hop/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Lateral_Hop/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Lateral_Hop/1.jpg" ], "id": "Single-Leg_Lateral_Hop" }, @@ -17587,8 +17611,8 @@ ], "category": "strength", "images": [ - "Single-Leg_Leg_Extension/0.jpg", - "Single-Leg_Leg_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Leg_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Leg_Extension/1.jpg" ], "id": "Single-Leg_Leg_Extension" }, @@ -17614,8 +17638,8 @@ ], "category": "plyometrics", "images": [ - "Single-Leg_Stride_Jump/0.jpg", - "Single-Leg_Stride_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Stride_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single-Leg_Stride_Jump/1.jpg" ], "id": "Single-Leg_Stride_Jump" }, @@ -17639,8 +17663,8 @@ ], "category": "strength", "images": [ - "Single_Dumbbell_Raise/0.jpg", - "Single_Dumbbell_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Dumbbell_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Dumbbell_Raise/1.jpg" ], "id": "Single_Dumbbell_Raise" }, @@ -17665,8 +17689,8 @@ ], "category": "plyometrics", "images": [ - "Single_Leg_Butt_Kick/0.jpg", - "Single_Leg_Butt_Kick/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Butt_Kick/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Butt_Kick/1.jpg" ], "id": "Single_Leg_Butt_Kick" }, @@ -17690,8 +17714,8 @@ ], "category": "strength", "images": [ - "Single_Leg_Glute_Bridge/0.jpg", - "Single_Leg_Glute_Bridge/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Glute_Bridge/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Glute_Bridge/1.jpg" ], "id": "Single_Leg_Glute_Bridge" }, @@ -17715,8 +17739,8 @@ ], "category": "plyometrics", "images": [ - "Single_Leg_Push-off/0.jpg", - "Single_Leg_Push-off/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Push-off/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Single_Leg_Push-off/1.jpg" ], "id": "Single_Leg_Push-off" }, @@ -17739,8 +17763,8 @@ ], "category": "strength", "images": [ - "Sit-Up/0.jpg", - "Sit-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sit-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sit-Up/1.jpg" ], "id": "Sit-Up" }, @@ -17765,8 +17789,8 @@ ], "category": "stretching", "images": [ - "Sit_Squats/0.jpg", - "Sit_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sit_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sit_Squats/1.jpg" ], "id": "Sit_Squats" }, @@ -17792,8 +17816,8 @@ ], "category": "cardio", "images": [ - "Skating/0.jpg", - "Skating/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Skating/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Skating/1.jpg" ], "id": "Skating" }, @@ -17817,8 +17841,8 @@ ], "category": "strongman", "images": [ - "Sled_Drag_-_Harness/0.jpg", - "Sled_Drag_-_Harness/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Drag_-_Harness/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Drag_-_Harness/1.jpg" ], "id": "Sled_Drag_-_Harness" }, @@ -17843,8 +17867,8 @@ ], "category": "strength", "images": [ - "Sled_Overhead_Backward_Walk/0.jpg", - "Sled_Overhead_Backward_Walk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Overhead_Backward_Walk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Overhead_Backward_Walk/1.jpg" ], "id": "Sled_Overhead_Backward_Walk" }, @@ -17866,8 +17890,8 @@ ], "category": "strength", "images": [ - "Sled_Overhead_Triceps_Extension/0.jpg", - "Sled_Overhead_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Overhead_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Overhead_Triceps_Extension/1.jpg" ], "id": "Sled_Overhead_Triceps_Extension" }, @@ -17893,8 +17917,8 @@ ], "category": "strongman", "images": [ - "Sled_Push/0.jpg", - "Sled_Push/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Push/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Push/1.jpg" ], "id": "Sled_Push" }, @@ -17916,8 +17940,8 @@ ], "category": "strength", "images": [ - "Sled_Reverse_Flye/0.jpg", - "Sled_Reverse_Flye/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Reverse_Flye/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Reverse_Flye/1.jpg" ], "id": "Sled_Reverse_Flye" }, @@ -17942,8 +17966,8 @@ ], "category": "strength", "images": [ - "Sled_Row/0.jpg", - "Sled_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sled_Row/1.jpg" ], "id": "Sled_Row" }, @@ -17971,8 +17995,8 @@ ], "category": "plyometrics", "images": [ - "Sledgehammer_Swings/0.jpg", - "Sledgehammer_Swings/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sledgehammer_Swings/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sledgehammer_Swings/1.jpg" ], "id": "Sledgehammer_Swings" }, @@ -17998,8 +18022,8 @@ ], "category": "strength", "images": [ - "Smith_Incline_Shoulder_Raise/0.jpg", - "Smith_Incline_Shoulder_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Incline_Shoulder_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Incline_Shoulder_Raise/1.jpg" ], "id": "Smith_Incline_Shoulder_Raise" }, @@ -18024,8 +18048,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Behind_the_Back_Shrug/0.jpg", - "Smith_Machine_Behind_the_Back_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Behind_the_Back_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Behind_the_Back_Shrug/1.jpg" ], "id": "Smith_Machine_Behind_the_Back_Shrug" }, @@ -18051,8 +18075,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Bench_Press/0.jpg", - "Smith_Machine_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Bench_Press/1.jpg" ], "id": "Smith_Machine_Bench_Press" }, @@ -18080,8 +18104,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Bent_Over_Row/0.jpg", - "Smith_Machine_Bent_Over_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Bent_Over_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Bent_Over_Row/1.jpg" ], "id": "Smith_Machine_Bent_Over_Row" }, @@ -18104,8 +18128,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Calf_Raise/0.jpg", - "Smith_Machine_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Calf_Raise/1.jpg" ], "id": "Smith_Machine_Calf_Raise" }, @@ -18131,8 +18155,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Close-Grip_Bench_Press/0.jpg", - "Smith_Machine_Close-Grip_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Close-Grip_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Close-Grip_Bench_Press/1.jpg" ], "id": "Smith_Machine_Close-Grip_Bench_Press" }, @@ -18158,8 +18182,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Decline_Press/0.jpg", - "Smith_Machine_Decline_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Decline_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Decline_Press/1.jpg" ], "id": "Smith_Machine_Decline_Press" }, @@ -18189,8 +18213,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Hang_Power_Clean/0.jpg", - "Smith_Machine_Hang_Power_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Hang_Power_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Hang_Power_Clean/1.jpg" ], "id": "Smith_Machine_Hang_Power_Clean" }, @@ -18212,8 +18236,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Hip_Raise/0.jpg", - "Smith_Machine_Hip_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Hip_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Hip_Raise/1.jpg" ], "id": "Smith_Machine_Hip_Raise" }, @@ -18239,8 +18263,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Incline_Bench_Press/0.jpg", - "Smith_Machine_Incline_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Incline_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Incline_Bench_Press/1.jpg" ], "id": "Smith_Machine_Incline_Bench_Press" }, @@ -18265,8 +18289,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Leg_Press/0.jpg", - "Smith_Machine_Leg_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Leg_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Leg_Press/1.jpg" ], "id": "Smith_Machine_Leg_Press" }, @@ -18292,8 +18316,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_One-Arm_Upright_Row/0.jpg", - "Smith_Machine_One-Arm_Upright_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_One-Arm_Upright_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_One-Arm_Upright_Row/1.jpg" ], "id": "Smith_Machine_One-Arm_Upright_Row" }, @@ -18318,8 +18342,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Overhead_Shoulder_Press/0.jpg", - "Smith_Machine_Overhead_Shoulder_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Overhead_Shoulder_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Overhead_Shoulder_Press/1.jpg" ], "id": "Smith_Machine_Overhead_Shoulder_Press" }, @@ -18346,8 +18370,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Pistol_Squat/0.jpg", - "Smith_Machine_Pistol_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Pistol_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Pistol_Squat/1.jpg" ], "id": "Smith_Machine_Pistol_Squat" }, @@ -18371,8 +18395,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Reverse_Calf_Raises/0.jpg", - "Smith_Machine_Reverse_Calf_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Reverse_Calf_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Reverse_Calf_Raises/1.jpg" ], "id": "Smith_Machine_Reverse_Calf_Raises" }, @@ -18401,8 +18425,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Squat/0.jpg", - "Smith_Machine_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Squat/1.jpg" ], "id": "Smith_Machine_Squat" }, @@ -18428,8 +18452,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Stiff-Legged_Deadlift/0.jpg", - "Smith_Machine_Stiff-Legged_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Stiff-Legged_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Stiff-Legged_Deadlift/1.jpg" ], "id": "Smith_Machine_Stiff-Legged_Deadlift" }, @@ -18456,8 +18480,8 @@ ], "category": "strength", "images": [ - "Smith_Machine_Upright_Row/0.jpg", - "Smith_Machine_Upright_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Upright_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Machine_Upright_Row/1.jpg" ], "id": "Smith_Machine_Upright_Row" }, @@ -18486,8 +18510,8 @@ ], "category": "strength", "images": [ - "Smith_Single-Leg_Split_Squat/0.jpg", - "Smith_Single-Leg_Split_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Single-Leg_Split_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Smith_Single-Leg_Split_Squat/1.jpg" ], "id": "Smith_Single-Leg_Split_Squat" }, @@ -18520,8 +18544,8 @@ ], "category": "olympic weightlifting", "images": [ - "Snatch/0.jpg", - "Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch/1.jpg" ], "id": "Snatch" }, @@ -18549,8 +18573,8 @@ ], "category": "olympic weightlifting", "images": [ - "Snatch_Balance/0.jpg", - "Snatch_Balance/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Balance/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Balance/1.jpg" ], "id": "Snatch_Balance" }, @@ -18578,8 +18602,8 @@ ], "category": "olympic weightlifting", "images": [ - "Snatch_Deadlift/0.jpg", - "Snatch_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Deadlift/1.jpg" ], "id": "Snatch_Deadlift" }, @@ -18607,8 +18631,8 @@ ], "category": "strength", "images": [ - "Snatch_Pull/0.jpg", - "Snatch_Pull/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Pull/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Pull/1.jpg" ], "id": "Snatch_Pull" }, @@ -18631,8 +18655,8 @@ ], "category": "olympic weightlifting", "images": [ - "Snatch_Shrug/0.jpg", - "Snatch_Shrug/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Shrug/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_Shrug/1.jpg" ], "id": "Snatch_Shrug" }, @@ -18664,8 +18688,8 @@ ], "category": "olympic weightlifting", "images": [ - "Snatch_from_Blocks/0.jpg", - "Snatch_from_Blocks/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_from_Blocks/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Snatch_from_Blocks/1.jpg" ], "id": "Snatch_from_Blocks" }, @@ -18687,8 +18711,8 @@ ], "category": "strength", "images": [ - "Speed_Band_Overhead_Triceps/0.jpg", - "Speed_Band_Overhead_Triceps/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Band_Overhead_Triceps/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Band_Overhead_Triceps/1.jpg" ], "id": "Speed_Band_Overhead_Triceps" }, @@ -18715,8 +18739,8 @@ ], "category": "powerlifting", "images": [ - "Speed_Box_Squat/0.jpg", - "Speed_Box_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Box_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Box_Squat/1.jpg" ], "id": "Speed_Box_Squat" }, @@ -18745,8 +18769,8 @@ ], "category": "strength", "images": [ - "Speed_Squats/0.jpg", - "Speed_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Speed_Squats/1.jpg" ], "id": "Speed_Squats" }, @@ -18771,8 +18795,8 @@ ], "category": "strength", "images": [ - "Spell_Caster/0.jpg", - "Spell_Caster/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spell_Caster/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spell_Caster/1.jpg" ], "id": "Spell_Caster" }, @@ -18797,8 +18821,8 @@ ], "category": "strength", "images": [ - "Spider_Crawl/0.jpg", - "Spider_Crawl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spider_Crawl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spider_Crawl/1.jpg" ], "id": "Spider_Crawl" }, @@ -18823,8 +18847,8 @@ ], "category": "strength", "images": [ - "Spider_Curl/0.jpg", - "Spider_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spider_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spider_Curl/1.jpg" ], "id": "Spider_Curl" }, @@ -18851,8 +18875,8 @@ ], "category": "stretching", "images": [ - "Spinal_Stretch/0.jpg", - "Spinal_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spinal_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Spinal_Stretch/1.jpg" ], "id": "Spinal_Stretch" }, @@ -18884,8 +18908,8 @@ ], "category": "olympic weightlifting", "images": [ - "Split_Clean/0.jpg", - "Split_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Clean/1.jpg" ], "id": "Split_Clean" }, @@ -18912,8 +18936,8 @@ ], "category": "olympic weightlifting", "images": [ - "Split_Jerk/0.jpg", - "Split_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Jerk/1.jpg" ], "id": "Split_Jerk" }, @@ -18940,8 +18964,8 @@ ], "category": "plyometrics", "images": [ - "Split_Jump/0.jpg", - "Split_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Jump/1.jpg" ], "id": "Split_Jump" }, @@ -18975,8 +18999,8 @@ ], "category": "olympic weightlifting", "images": [ - "Split_Snatch/0.jpg", - "Split_Snatch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Snatch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Snatch/1.jpg" ], "id": "Split_Snatch" }, @@ -19001,8 +19025,8 @@ ], "category": "strength", "images": [ - "Split_Squat_with_Dumbbells/0.jpg", - "Split_Squat_with_Dumbbells/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Squat_with_Dumbbells/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Squat_with_Dumbbells/1.jpg" ], "id": "Split_Squat_with_Dumbbells" }, @@ -19026,8 +19050,8 @@ ], "category": "stretching", "images": [ - "Split_Squats/0.jpg", - "Split_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Split_Squats/1.jpg" ], "id": "Split_Squats" }, @@ -19054,8 +19078,8 @@ ], "category": "strength", "images": [ - "Squat_Jerk/0.jpg", - "Squat_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_Jerk/1.jpg" ], "id": "Squat_Jerk" }, @@ -19083,8 +19107,8 @@ ], "category": "powerlifting", "images": [ - "Squat_with_Bands/0.jpg", - "Squat_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Bands/1.jpg" ], "id": "Squat_with_Bands" }, @@ -19112,8 +19136,8 @@ ], "category": "powerlifting", "images": [ - "Squat_with_Chains/0.jpg", - "Squat_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Chains/1.jpg" ], "id": "Squat_with_Chains" }, @@ -19145,8 +19169,8 @@ ], "category": "strength", "images": [ - "Squat_with_Plate_Movers/0.jpg", - "Squat_with_Plate_Movers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Plate_Movers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squat_with_Plate_Movers/1.jpg" ], "id": "Squat_with_Plate_Movers" }, @@ -19174,8 +19198,8 @@ ], "category": "strength", "images": [ - "Squats_-_With_Bands/0.jpg", - "Squats_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squats_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Squats_-_With_Bands/1.jpg" ], "id": "Squats_-_With_Bands" }, @@ -19200,8 +19224,8 @@ ], "category": "cardio", "images": [ - "Stairmaster/0.jpg", - "Stairmaster/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stairmaster/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stairmaster/1.jpg" ], "id": "Stairmaster" }, @@ -19225,8 +19249,8 @@ ], "category": "strength", "images": [ - "Standing_Alternating_Dumbbell_Press/0.jpg", - "Standing_Alternating_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Alternating_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Alternating_Dumbbell_Press/1.jpg" ], "id": "Standing_Alternating_Dumbbell_Press" }, @@ -19250,8 +19274,8 @@ ], "category": "strength", "images": [ - "Standing_Barbell_Calf_Raise/0.jpg", - "Standing_Barbell_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Barbell_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Barbell_Calf_Raise/1.jpg" ], "id": "Standing_Barbell_Calf_Raise" }, @@ -19277,8 +19301,8 @@ ], "category": "strength", "images": [ - "Standing_Barbell_Press_Behind_Neck/0.jpg", - "Standing_Barbell_Press_Behind_Neck/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Barbell_Press_Behind_Neck/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Barbell_Press_Behind_Neck/1.jpg" ], "id": "Standing_Barbell_Press_Behind_Neck" }, @@ -19304,8 +19328,8 @@ ], "category": "strength", "images": [ - "Standing_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/0.jpg", - "Standing_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bent-Over_One-Arm_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Standing_Bent-Over_One-Arm_Dumbbell_Triceps_Extension" }, @@ -19327,8 +19351,8 @@ ], "category": "strength", "images": [ - "Standing_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/0.jpg", - "Standing_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Standing_Bent-Over_Two-Arm_Dumbbell_Triceps_Extension" }, @@ -19350,8 +19374,8 @@ ], "category": "strength", "images": [ - "Standing_Biceps_Cable_Curl/0.jpg", - "Standing_Biceps_Cable_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Biceps_Cable_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Biceps_Cable_Curl/1.jpg" ], "id": "Standing_Biceps_Cable_Curl" }, @@ -19374,8 +19398,8 @@ ], "category": "stretching", "images": [ - "Standing_Biceps_Stretch/0.jpg", - "Standing_Biceps_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Biceps_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Biceps_Stretch/1.jpg" ], "id": "Standing_Biceps_Stretch" }, @@ -19401,8 +19425,8 @@ ], "category": "strength", "images": [ - "Standing_Bradford_Press/0.jpg", - "Standing_Bradford_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bradford_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Bradford_Press/1.jpg" ], "id": "Standing_Bradford_Press" }, @@ -19427,8 +19451,8 @@ ], "category": "strength", "images": [ - "Standing_Cable_Chest_Press/0.jpg", - "Standing_Cable_Chest_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Chest_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Chest_Press/1.jpg" ], "id": "Standing_Cable_Chest_Press" }, @@ -19456,8 +19480,8 @@ ], "category": "strength", "images": [ - "Standing_Cable_Lift/0.jpg", - "Standing_Cable_Lift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Lift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Lift/1.jpg" ], "id": "Standing_Cable_Lift" }, @@ -19485,8 +19509,8 @@ ], "category": "strength", "images": [ - "Standing_Cable_Wood_Chop/0.jpg", - "Standing_Cable_Wood_Chop/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Wood_Chop/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Cable_Wood_Chop/1.jpg" ], "id": "Standing_Cable_Wood_Chop" }, @@ -19509,8 +19533,8 @@ ], "category": "strength", "images": [ - "Standing_Calf_Raises/0.jpg", - "Standing_Calf_Raises/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Calf_Raises/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Calf_Raises/1.jpg" ], "id": "Standing_Calf_Raises" }, @@ -19534,8 +19558,8 @@ ], "category": "strength", "images": [ - "Standing_Concentration_Curl/0.jpg", - "Standing_Concentration_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Concentration_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Concentration_Curl/1.jpg" ], "id": "Standing_Concentration_Curl" }, @@ -19557,8 +19581,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Calf_Raise/0.jpg", - "Standing_Dumbbell_Calf_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Calf_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Calf_Raise/1.jpg" ], "id": "Standing_Dumbbell_Calf_Raise" }, @@ -19581,8 +19605,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Press/0.jpg", - "Standing_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Press/1.jpg" ], "id": "Standing_Dumbbell_Press" }, @@ -19606,8 +19630,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Reverse_Curl/0.jpg", - "Standing_Dumbbell_Reverse_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Reverse_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Reverse_Curl/1.jpg" ], "id": "Standing_Dumbbell_Reverse_Curl" }, @@ -19630,8 +19654,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Straight-Arm_Front_Delt_Raise_Above_Head/0.jpg", - "Standing_Dumbbell_Straight-Arm_Front_Delt_Raise_Above_Head/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Straight-Arm_Front_Delt_Raise_Above_Head/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Straight-Arm_Front_Delt_Raise_Above_Head/1.jpg" ], "id": "Standing_Dumbbell_Straight-Arm_Front_Delt_Raise_Above_Head" }, @@ -19654,8 +19678,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Triceps_Extension/0.jpg", - "Standing_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Standing_Dumbbell_Triceps_Extension" }, @@ -19680,8 +19704,8 @@ ], "category": "strength", "images": [ - "Standing_Dumbbell_Upright_Row/0.jpg", - "Standing_Dumbbell_Upright_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Upright_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Dumbbell_Upright_Row/1.jpg" ], "id": "Standing_Dumbbell_Upright_Row" }, @@ -19702,8 +19726,8 @@ ], "category": "stretching", "images": [ - "Standing_Elevated_Quad_Stretch/0.jpg", - "Standing_Elevated_Quad_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Elevated_Quad_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Elevated_Quad_Stretch/1.jpg" ], "id": "Standing_Elevated_Quad_Stretch" }, @@ -19726,8 +19750,8 @@ ], "category": "strength", "images": [ - "Standing_Front_Barbell_Raise_Over_Head/0.jpg", - "Standing_Front_Barbell_Raise_Over_Head/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Front_Barbell_Raise_Over_Head/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Front_Barbell_Raise_Over_Head/1.jpg" ], "id": "Standing_Front_Barbell_Raise_Over_Head" }, @@ -19750,8 +19774,8 @@ ], "category": "stretching", "images": [ - "Standing_Gastrocnemius_Calf_Stretch/0.jpg", - "Standing_Gastrocnemius_Calf_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Gastrocnemius_Calf_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Gastrocnemius_Calf_Stretch/1.jpg" ], "id": "Standing_Gastrocnemius_Calf_Stretch" }, @@ -19772,8 +19796,8 @@ ], "category": "stretching", "images": [ - "Standing_Hamstring_and_Calf_Stretch/0.jpg", - "Standing_Hamstring_and_Calf_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hamstring_and_Calf_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hamstring_and_Calf_Stretch/1.jpg" ], "id": "Standing_Hamstring_and_Calf_Stretch" }, @@ -19797,8 +19821,8 @@ ], "category": "stretching", "images": [ - "Standing_Hip_Circles/0.jpg", - "Standing_Hip_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hip_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hip_Circles/1.jpg" ], "id": "Standing_Hip_Circles" }, @@ -19818,8 +19842,8 @@ ], "category": "stretching", "images": [ - "Standing_Hip_Flexors/0.jpg", - "Standing_Hip_Flexors/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hip_Flexors/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Hip_Flexors/1.jpg" ], "id": "Standing_Hip_Flexors" }, @@ -19844,8 +19868,8 @@ ], "category": "strength", "images": [ - "Standing_Inner-Biceps_Curl/0.jpg", - "Standing_Inner-Biceps_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Inner-Biceps_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Inner-Biceps_Curl/1.jpg" ], "id": "Standing_Inner-Biceps_Curl" }, @@ -19867,8 +19891,8 @@ ], "category": "stretching", "images": [ - "Standing_Lateral_Stretch/0.jpg", - "Standing_Lateral_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Lateral_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Lateral_Stretch/1.jpg" ], "id": "Standing_Lateral_Stretch" }, @@ -19891,8 +19915,8 @@ ], "category": "strength", "images": [ - "Standing_Leg_Curl/0.jpg", - "Standing_Leg_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Leg_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Leg_Curl/1.jpg" ], "id": "Standing_Leg_Curl" }, @@ -19918,8 +19942,8 @@ ], "category": "plyometrics", "images": [ - "Standing_Long_Jump/0.jpg", - "Standing_Long_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Long_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Long_Jump/1.jpg" ], "id": "Standing_Long_Jump" }, @@ -19945,8 +19969,8 @@ ], "category": "strength", "images": [ - "Standing_Low-Pulley_Deltoid_Raise/0.jpg", - "Standing_Low-Pulley_Deltoid_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Low-Pulley_Deltoid_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Low-Pulley_Deltoid_Raise/1.jpg" ], "id": "Standing_Low-Pulley_Deltoid_Raise" }, @@ -19972,8 +19996,8 @@ ], "category": "strength", "images": [ - "Standing_Low-Pulley_One-Arm_Triceps_Extension/0.jpg", - "Standing_Low-Pulley_One-Arm_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Low-Pulley_One-Arm_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Low-Pulley_One-Arm_Triceps_Extension/1.jpg" ], "id": "Standing_Low-Pulley_One-Arm_Triceps_Extension" }, @@ -19999,8 +20023,8 @@ ], "category": "strength", "images": [ - "Standing_Military_Press/0.jpg", - "Standing_Military_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Military_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Military_Press/1.jpg" ], "id": "Standing_Military_Press" }, @@ -20024,8 +20048,8 @@ ], "category": "strength", "images": [ - "Standing_Olympic_Plate_Hand_Squeeze/0.jpg", - "Standing_Olympic_Plate_Hand_Squeeze/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Olympic_Plate_Hand_Squeeze/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Olympic_Plate_Hand_Squeeze/1.jpg" ], "id": "Standing_Olympic_Plate_Hand_Squeeze" }, @@ -20049,8 +20073,8 @@ ], "category": "strength", "images": [ - "Standing_One-Arm_Cable_Curl/0.jpg", - "Standing_One-Arm_Cable_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Cable_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Cable_Curl/1.jpg" ], "id": "Standing_One-Arm_Cable_Curl" }, @@ -20074,8 +20098,8 @@ ], "category": "strength", "images": [ - "Standing_One-Arm_Dumbbell_Curl_Over_Incline_Bench/0.jpg", - "Standing_One-Arm_Dumbbell_Curl_Over_Incline_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Dumbbell_Curl_Over_Incline_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Dumbbell_Curl_Over_Incline_Bench/1.jpg" ], "id": "Standing_One-Arm_Dumbbell_Curl_Over_Incline_Bench" }, @@ -20102,8 +20126,8 @@ ], "category": "strength", "images": [ - "Standing_One-Arm_Dumbbell_Triceps_Extension/0.jpg", - "Standing_One-Arm_Dumbbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Dumbbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_One-Arm_Dumbbell_Triceps_Extension/1.jpg" ], "id": "Standing_One-Arm_Dumbbell_Triceps_Extension" }, @@ -20128,8 +20152,8 @@ ], "category": "strength", "images": [ - "Standing_Overhead_Barbell_Triceps_Extension/0.jpg", - "Standing_Overhead_Barbell_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Overhead_Barbell_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Overhead_Barbell_Triceps_Extension/1.jpg" ], "id": "Standing_Overhead_Barbell_Triceps_Extension" }, @@ -20156,8 +20180,8 @@ ], "category": "strength", "images": [ - "Standing_Palm-In_One-Arm_Dumbbell_Press/0.jpg", - "Standing_Palm-In_One-Arm_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palm-In_One-Arm_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palm-In_One-Arm_Dumbbell_Press/1.jpg" ], "id": "Standing_Palm-In_One-Arm_Dumbbell_Press" }, @@ -20181,8 +20205,8 @@ ], "category": "strength", "images": [ - "Standing_Palms-In_Dumbbell_Press/0.jpg", - "Standing_Palms-In_Dumbbell_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palms-In_Dumbbell_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palms-In_Dumbbell_Press/1.jpg" ], "id": "Standing_Palms-In_Dumbbell_Press" }, @@ -20206,8 +20230,8 @@ ], "category": "strength", "images": [ - "Standing_Palms-Up_Barbell_Behind_The_Back_Wrist_Curl/0.jpg", - "Standing_Palms-Up_Barbell_Behind_The_Back_Wrist_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palms-Up_Barbell_Behind_The_Back_Wrist_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Palms-Up_Barbell_Behind_The_Back_Wrist_Curl/1.jpg" ], "id": "Standing_Palms-Up_Barbell_Behind_The_Back_Wrist_Curl" }, @@ -20230,8 +20254,8 @@ ], "category": "stretching", "images": [ - "Standing_Pelvic_Tilt/0.jpg", - "Standing_Pelvic_Tilt/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Pelvic_Tilt/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Pelvic_Tilt/1.jpg" ], "id": "Standing_Pelvic_Tilt" }, @@ -20253,8 +20277,8 @@ ], "category": "strength", "images": [ - "Standing_Rope_Crunch/0.jpg", - "Standing_Rope_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Rope_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Rope_Crunch/1.jpg" ], "id": "Standing_Rope_Crunch" }, @@ -20274,8 +20298,8 @@ ], "category": "stretching", "images": [ - "Standing_Soleus_And_Achilles_Stretch/0.jpg", - "Standing_Soleus_And_Achilles_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Soleus_And_Achilles_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Soleus_And_Achilles_Stretch/1.jpg" ], "id": "Standing_Soleus_And_Achilles_Stretch" }, @@ -20297,8 +20321,8 @@ ], "category": "stretching", "images": [ - "Standing_Toe_Touches/0.jpg", - "Standing_Toe_Touches/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Toe_Touches/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Toe_Touches/1.jpg" ], "id": "Standing_Toe_Touches" }, @@ -20320,8 +20344,8 @@ ], "category": "strength", "images": [ - "Standing_Towel_Triceps_Extension/0.jpg", - "Standing_Towel_Triceps_Extension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Towel_Triceps_Extension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Towel_Triceps_Extension/1.jpg" ], "id": "Standing_Towel_Triceps_Extension" }, @@ -20345,8 +20369,8 @@ ], "category": "plyometrics", "images": [ - "Standing_Two-Arm_Overhead_Throw/0.jpg", - "Standing_Two-Arm_Overhead_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Two-Arm_Overhead_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Standing_Two-Arm_Overhead_Throw/1.jpg" ], "id": "Standing_Two-Arm_Overhead_Throw" }, @@ -20372,8 +20396,8 @@ ], "category": "plyometrics", "images": [ - "Star_Jump/0.jpg", - "Star_Jump/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Star_Jump/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Star_Jump/1.jpg" ], "id": "Star_Jump" }, @@ -20397,8 +20421,8 @@ ], "category": "strength", "images": [ - "Step-up_with_Knee_Raise/0.jpg", - "Step-up_with_Knee_Raise/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Step-up_with_Knee_Raise/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Step-up_with_Knee_Raise/1.jpg" ], "id": "Step-up_with_Knee_Raise" }, @@ -20422,8 +20446,8 @@ ], "category": "cardio", "images": [ - "Step_Mill/0.jpg", - "Step_Mill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Step_Mill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Step_Mill/1.jpg" ], "id": "Step_Mill" }, @@ -20449,8 +20473,8 @@ ], "category": "strength", "images": [ - "Stiff-Legged_Barbell_Deadlift/0.jpg", - "Stiff-Legged_Barbell_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff-Legged_Barbell_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff-Legged_Barbell_Deadlift/1.jpg" ], "id": "Stiff-Legged_Barbell_Deadlift" }, @@ -20476,8 +20500,8 @@ ], "category": "strength", "images": [ - "Stiff-Legged_Dumbbell_Deadlift/0.jpg", - "Stiff-Legged_Dumbbell_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff-Legged_Dumbbell_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff-Legged_Dumbbell_Deadlift/1.jpg" ], "id": "Stiff-Legged_Dumbbell_Deadlift" }, @@ -20504,8 +20528,8 @@ ], "category": "strength", "images": [ - "Stiff_Leg_Barbell_Good_Morning/0.jpg", - "Stiff_Leg_Barbell_Good_Morning/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff_Leg_Barbell_Good_Morning/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stiff_Leg_Barbell_Good_Morning/1.jpg" ], "id": "Stiff_Leg_Barbell_Good_Morning" }, @@ -20528,8 +20552,8 @@ ], "category": "stretching", "images": [ - "Stomach_Vacuum/0.jpg", - "Stomach_Vacuum/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stomach_Vacuum/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stomach_Vacuum/1.jpg" ], "id": "Stomach_Vacuum" }, @@ -20557,8 +20581,8 @@ ], "category": "strength", "images": [ - "Straight-Arm_Dumbbell_Pullover/0.jpg", - "Straight-Arm_Dumbbell_Pullover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight-Arm_Dumbbell_Pullover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight-Arm_Dumbbell_Pullover/1.jpg" ], "id": "Straight-Arm_Dumbbell_Pullover" }, @@ -20581,8 +20605,8 @@ ], "category": "strength", "images": [ - "Straight-Arm_Pulldown/0.jpg", - "Straight-Arm_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight-Arm_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight-Arm_Pulldown/1.jpg" ], "id": "Straight-Arm_Pulldown" }, @@ -20606,8 +20630,8 @@ ], "category": "strength", "images": [ - "Straight_Bar_Bench_Mid_Rows/0.jpg", - "Straight_Bar_Bench_Mid_Rows/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight_Bar_Bench_Mid_Rows/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight_Bar_Bench_Mid_Rows/1.jpg" ], "id": "Straight_Bar_Bench_Mid_Rows" }, @@ -20631,8 +20655,8 @@ ], "category": "strength", "images": [ - "Straight_Raises_on_Incline_Bench/0.jpg", - "Straight_Raises_on_Incline_Bench/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight_Raises_on_Incline_Bench/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Straight_Raises_on_Incline_Bench/1.jpg" ], "id": "Straight_Raises_on_Incline_Bench" }, @@ -20659,8 +20683,8 @@ ], "category": "plyometrics", "images": [ - "Stride_Jump_Crossover/0.jpg", - "Stride_Jump_Crossover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stride_Jump_Crossover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Stride_Jump_Crossover/1.jpg" ], "id": "Stride_Jump_Crossover" }, @@ -20690,8 +20714,8 @@ ], "category": "powerlifting", "images": [ - "Sumo_Deadlift/0.jpg", - "Sumo_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift/1.jpg" ], "id": "Sumo_Deadlift" }, @@ -20722,8 +20746,8 @@ ], "category": "powerlifting", "images": [ - "Sumo_Deadlift_with_Bands/0.jpg", - "Sumo_Deadlift_with_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift_with_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift_with_Bands/1.jpg" ], "id": "Sumo_Deadlift_with_Bands" }, @@ -20755,8 +20779,8 @@ ], "category": "powerlifting", "images": [ - "Sumo_Deadlift_with_Chains/0.jpg", - "Sumo_Deadlift_with_Chains/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift_with_Chains/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Sumo_Deadlift_with_Chains/1.jpg" ], "id": "Sumo_Deadlift_with_Chains" }, @@ -20781,8 +20805,8 @@ ], "category": "stretching", "images": [ - "Superman/0.jpg", - "Superman/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Superman/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Superman/1.jpg" ], "id": "Superman" }, @@ -20807,8 +20831,8 @@ ], "category": "plyometrics", "images": [ - "Supine_Chest_Throw/0.jpg", - "Supine_Chest_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_Chest_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_Chest_Throw/1.jpg" ], "id": "Supine_Chest_Throw" }, @@ -20833,8 +20857,8 @@ ], "category": "plyometrics", "images": [ - "Supine_One-Arm_Overhead_Throw/0.jpg", - "Supine_One-Arm_Overhead_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_One-Arm_Overhead_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_One-Arm_Overhead_Throw/1.jpg" ], "id": "Supine_One-Arm_Overhead_Throw" }, @@ -20860,8 +20884,8 @@ ], "category": "plyometrics", "images": [ - "Supine_Two-Arm_Overhead_Throw/0.jpg", - "Supine_Two-Arm_Overhead_Throw/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_Two-Arm_Overhead_Throw/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Supine_Two-Arm_Overhead_Throw/1.jpg" ], "id": "Supine_Two-Arm_Overhead_Throw" }, @@ -20888,8 +20912,8 @@ ], "category": "strength", "images": [ - "Suspended_Fallout/0.jpg", - "Suspended_Fallout/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Fallout/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Fallout/1.jpg" ], "id": "Suspended_Fallout" }, @@ -20914,8 +20938,8 @@ ], "category": "strength", "images": [ - "Suspended_Push-Up/0.jpg", - "Suspended_Push-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Push-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Push-Up/1.jpg" ], "id": "Suspended_Push-Up" }, @@ -20937,8 +20961,8 @@ ], "category": "strength", "images": [ - "Suspended_Reverse_Crunch/0.jpg", - "Suspended_Reverse_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Reverse_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Reverse_Crunch/1.jpg" ], "id": "Suspended_Reverse_Crunch" }, @@ -20962,8 +20986,8 @@ ], "category": "strength", "images": [ - "Suspended_Row/0.jpg", - "Suspended_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Row/1.jpg" ], "id": "Suspended_Row" }, @@ -20991,8 +21015,8 @@ ], "category": "strength", "images": [ - "Suspended_Split_Squat/0.jpg", - "Suspended_Split_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Split_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Suspended_Split_Squat/1.jpg" ], "id": "Suspended_Split_Squat" }, @@ -21018,8 +21042,8 @@ ], "category": "strength", "images": [ - "Svend_Press/0.jpg", - "Svend_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Svend_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Svend_Press/1.jpg" ], "id": "Svend_Press" }, @@ -21045,8 +21069,8 @@ ], "category": "strength", "images": [ - "T-Bar_Row_with_Handle/0.jpg", - "T-Bar_Row_with_Handle/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/T-Bar_Row_with_Handle/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/T-Bar_Row_with_Handle/1.jpg" ], "id": "T-Bar_Row_with_Handle" }, @@ -21072,8 +21096,8 @@ ], "category": "strength", "images": [ - "Tate_Press/0.jpg", - "Tate_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tate_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tate_Press/1.jpg" ], "id": "Tate_Press" }, @@ -21096,8 +21120,8 @@ ], "category": "stretching", "images": [ - "The_Straddle/0.jpg", - "The_Straddle/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/The_Straddle/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/The_Straddle/1.jpg" ], "id": "The_Straddle" }, @@ -21121,8 +21145,8 @@ ], "category": "strength", "images": [ - "Thigh_Abductor/0.jpg", - "Thigh_Abductor/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Thigh_Abductor/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Thigh_Abductor/1.jpg" ], "id": "Thigh_Abductor" }, @@ -21147,8 +21171,8 @@ ], "category": "strength", "images": [ - "Thigh_Adductor/0.jpg", - "Thigh_Adductor/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Thigh_Adductor/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Thigh_Adductor/1.jpg" ], "id": "Thigh_Adductor" }, @@ -21179,8 +21203,8 @@ ], "category": "strongman", "images": [ - "Tire_Flip/0.jpg", - "Tire_Flip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tire_Flip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tire_Flip/1.jpg" ], "id": "Tire_Flip" }, @@ -21204,8 +21228,8 @@ ], "category": "stretching", "images": [ - "Toe_Touchers/0.jpg", - "Toe_Touchers/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Toe_Touchers/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Toe_Touchers/1.jpg" ], "id": "Toe_Touchers" }, @@ -21225,8 +21249,8 @@ ], "category": "stretching", "images": [ - "Torso_Rotation/0.jpg", - "Torso_Rotation/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Torso_Rotation/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Torso_Rotation/1.jpg" ], "id": "Torso_Rotation" }, @@ -21250,8 +21274,8 @@ ], "category": "cardio", "images": [ - "Trail_Running_Walking/0.jpg", - "Trail_Running_Walking/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Trail_Running_Walking/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Trail_Running_Walking/1.jpg" ], "id": "Trail_Running_Walking" }, @@ -21276,8 +21300,8 @@ ], "category": "strength", "images": [ - "Trap_Bar_Deadlift/0.jpg", - "Trap_Bar_Deadlift/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Trap_Bar_Deadlift/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Trap_Bar_Deadlift/1.jpg" ], "id": "Trap_Bar_Deadlift" }, @@ -21299,8 +21323,8 @@ ], "category": "strength", "images": [ - "Tricep_Dumbbell_Kickback/0.jpg", - "Tricep_Dumbbell_Kickback/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tricep_Dumbbell_Kickback/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tricep_Dumbbell_Kickback/1.jpg" ], "id": "Tricep_Dumbbell_Kickback" }, @@ -21321,8 +21345,8 @@ ], "category": "stretching", "images": [ - "Tricep_Side_Stretch/0.jpg", - "Tricep_Side_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tricep_Side_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tricep_Side_Stretch/1.jpg" ], "id": "Tricep_Side_Stretch" }, @@ -21344,8 +21368,8 @@ ], "category": "strength", "images": [ - "Triceps_Overhead_Extension_with_Rope/0.jpg", - "Triceps_Overhead_Extension_with_Rope/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Overhead_Extension_with_Rope/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Overhead_Extension_with_Rope/1.jpg" ], "id": "Triceps_Overhead_Extension_with_Rope" }, @@ -21368,8 +21392,8 @@ ], "category": "strength", "images": [ - "Triceps_Pushdown/0.jpg", - "Triceps_Pushdown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown/1.jpg" ], "id": "Triceps_Pushdown" }, @@ -21392,8 +21416,8 @@ ], "category": "strength", "images": [ - "Triceps_Pushdown_-_Rope_Attachment/0.jpg", - "Triceps_Pushdown_-_Rope_Attachment/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown_-_Rope_Attachment/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown_-_Rope_Attachment/1.jpg" ], "id": "Triceps_Pushdown_-_Rope_Attachment" }, @@ -21416,8 +21440,8 @@ ], "category": "strength", "images": [ - "Triceps_Pushdown_-_V-Bar_Attachment/0.jpg", - "Triceps_Pushdown_-_V-Bar_Attachment/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown_-_V-Bar_Attachment/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Pushdown_-_V-Bar_Attachment/1.jpg" ], "id": "Triceps_Pushdown_-_V-Bar_Attachment" }, @@ -21438,8 +21462,8 @@ ], "category": "stretching", "images": [ - "Triceps_Stretch/0.jpg", - "Triceps_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Triceps_Stretch/1.jpg" ], "id": "Triceps_Stretch" }, @@ -21463,8 +21487,8 @@ ], "category": "strength", "images": [ - "Tuck_Crunch/0.jpg", - "Tuck_Crunch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tuck_Crunch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Tuck_Crunch/1.jpg" ], "id": "Tuck_Crunch" }, @@ -21486,8 +21510,8 @@ ], "category": "strength", "images": [ - "Two-Arm_Dumbbell_Preacher_Curl/0.jpg", - "Two-Arm_Dumbbell_Preacher_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Dumbbell_Preacher_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Dumbbell_Preacher_Curl/1.jpg" ], "id": "Two-Arm_Dumbbell_Preacher_Curl" }, @@ -21514,8 +21538,8 @@ ], "category": "strength", "images": [ - "Two-Arm_Kettlebell_Clean/0.jpg", - "Two-Arm_Kettlebell_Clean/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Clean/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Clean/1.jpg" ], "id": "Two-Arm_Kettlebell_Clean" }, @@ -21538,8 +21562,8 @@ ], "category": "strength", "images": [ - "Two-Arm_Kettlebell_Jerk/0.jpg", - "Two-Arm_Kettlebell_Jerk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Jerk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Jerk/1.jpg" ], "id": "Two-Arm_Kettlebell_Jerk" }, @@ -21561,8 +21585,8 @@ ], "category": "strength", "images": [ - "Two-Arm_Kettlebell_Military_Press/0.jpg", - "Two-Arm_Kettlebell_Military_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Military_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Military_Press/1.jpg" ], "id": "Two-Arm_Kettlebell_Military_Press" }, @@ -21585,8 +21609,8 @@ ], "category": "strength", "images": [ - "Two-Arm_Kettlebell_Row/0.jpg", - "Two-Arm_Kettlebell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Two-Arm_Kettlebell_Row/1.jpg" ], "id": "Two-Arm_Kettlebell_Row" }, @@ -21614,8 +21638,8 @@ ], "category": "strength", "images": [ - "Underhand_Cable_Pulldowns/0.jpg", - "Underhand_Cable_Pulldowns/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Underhand_Cable_Pulldowns/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Underhand_Cable_Pulldowns/1.jpg" ], "id": "Underhand_Cable_Pulldowns" }, @@ -21638,8 +21662,8 @@ ], "category": "stretching", "images": [ - "Upper_Back-Leg_Grab/0.jpg", - "Upper_Back-Leg_Grab/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upper_Back-Leg_Grab/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upper_Back-Leg_Grab/1.jpg" ], "id": "Upper_Back-Leg_Grab" }, @@ -21660,8 +21684,8 @@ ], "category": "stretching", "images": [ - "Upper_Back_Stretch/0.jpg", - "Upper_Back_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upper_Back_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upper_Back_Stretch/1.jpg" ], "id": "Upper_Back_Stretch" }, @@ -21685,8 +21709,8 @@ ], "category": "strength", "images": [ - "Upright_Barbell_Row/0.jpg", - "Upright_Barbell_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Barbell_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Barbell_Row/1.jpg" ], "id": "Upright_Barbell_Row" }, @@ -21710,8 +21734,8 @@ ], "category": "strength", "images": [ - "Upright_Cable_Row/0.jpg", - "Upright_Cable_Row/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Cable_Row/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Cable_Row/1.jpg" ], "id": "Upright_Cable_Row" }, @@ -21735,8 +21759,8 @@ ], "category": "strength", "images": [ - "Upright_Row_-_With_Bands/0.jpg", - "Upright_Row_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Row_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upright_Row_-_With_Bands/1.jpg" ], "id": "Upright_Row_-_With_Bands" }, @@ -21759,8 +21783,8 @@ ], "category": "stretching", "images": [ - "Upward_Stretch/0.jpg", - "Upward_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upward_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Upward_Stretch/1.jpg" ], "id": "Upward_Stretch" }, @@ -21788,8 +21812,8 @@ ], "category": "strength", "images": [ - "V-Bar_Pulldown/0.jpg", - "V-Bar_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/V-Bar_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/V-Bar_Pulldown/1.jpg" ], "id": "V-Bar_Pulldown" }, @@ -21816,8 +21840,8 @@ ], "category": "strength", "images": [ - "V-Bar_Pullup/0.jpg", - "V-Bar_Pullup/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/V-Bar_Pullup/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/V-Bar_Pullup/1.jpg" ], "id": "V-Bar_Pullup" }, @@ -21843,8 +21867,8 @@ ], "category": "plyometrics", "images": [ - "Vertical_Swing/0.jpg", - "Vertical_Swing/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Vertical_Swing/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Vertical_Swing/1.jpg" ], "id": "Vertical_Swing" }, @@ -21868,8 +21892,8 @@ ], "category": "cardio", "images": [ - "Walking_Treadmill/0.jpg", - "Walking_Treadmill/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Walking_Treadmill/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Walking_Treadmill/1.jpg" ], "id": "Walking_Treadmill" }, @@ -21895,8 +21919,8 @@ ], "category": "strength", "images": [ - "Weighted_Ball_Hyperextension/0.jpg", - "Weighted_Ball_Hyperextension/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Ball_Hyperextension/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Ball_Hyperextension/1.jpg" ], "id": "Weighted_Ball_Hyperextension" }, @@ -21921,8 +21945,8 @@ ], "category": "strength", "images": [ - "Weighted_Ball_Side_Bend/0.jpg", - "Weighted_Ball_Side_Bend/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Ball_Side_Bend/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Ball_Side_Bend/1.jpg" ], "id": "Weighted_Ball_Side_Bend" }, @@ -21948,8 +21972,8 @@ ], "category": "strength", "images": [ - "Weighted_Bench_Dip/0.jpg", - "Weighted_Bench_Dip/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Bench_Dip/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Bench_Dip/1.jpg" ], "id": "Weighted_Bench_Dip" }, @@ -21972,8 +21996,8 @@ ], "category": "strength", "images": [ - "Weighted_Crunches/0.jpg", - "Weighted_Crunches/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Crunches/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Crunches/1.jpg" ], "id": "Weighted_Crunches" }, @@ -22000,8 +22024,8 @@ ], "category": "strength", "images": [ - "Weighted_Jump_Squat/0.jpg", - "Weighted_Jump_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Jump_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Jump_Squat/1.jpg" ], "id": "Weighted_Jump_Squat" }, @@ -22026,8 +22050,8 @@ ], "category": "strength", "images": [ - "Weighted_Pull_Ups/0.jpg", - "Weighted_Pull_Ups/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Pull_Ups/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Pull_Ups/1.jpg" ], "id": "Weighted_Pull_Ups" }, @@ -22053,8 +22077,8 @@ ], "category": "strength", "images": [ - "Weighted_Sissy_Squat/0.jpg", - "Weighted_Sissy_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Sissy_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Sissy_Squat/1.jpg" ], "id": "Weighted_Sissy_Squat" }, @@ -22076,8 +22100,8 @@ ], "category": "strength", "images": [ - "Weighted_Sit-Ups_-_With_Bands/0.jpg", - "Weighted_Sit-Ups_-_With_Bands/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Sit-Ups_-_With_Bands/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Sit-Ups_-_With_Bands/1.jpg" ], "id": "Weighted_Sit-Ups_-_With_Bands" }, @@ -22104,8 +22128,8 @@ ], "category": "strength", "images": [ - "Weighted_Squat/0.jpg", - "Weighted_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Weighted_Squat/1.jpg" ], "id": "Weighted_Squat" }, @@ -22130,8 +22154,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Barbell_Bench_Press/0.jpg", - "Wide-Grip_Barbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Barbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Barbell_Bench_Press/1.jpg" ], "id": "Wide-Grip_Barbell_Bench_Press" }, @@ -22156,8 +22180,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Decline_Barbell_Bench_Press/0.jpg", - "Wide-Grip_Decline_Barbell_Bench_Press/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Decline_Barbell_Bench_Press/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Decline_Barbell_Bench_Press/1.jpg" ], "id": "Wide-Grip_Decline_Barbell_Bench_Press" }, @@ -22184,8 +22208,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Decline_Barbell_Pullover/0.jpg", - "Wide-Grip_Decline_Barbell_Pullover/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Decline_Barbell_Pullover/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Decline_Barbell_Pullover/1.jpg" ], "id": "Wide-Grip_Decline_Barbell_Pullover" }, @@ -22213,8 +22237,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Lat_Pulldown/0.jpg", - "Wide-Grip_Lat_Pulldown/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Lat_Pulldown/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Lat_Pulldown/1.jpg" ], "id": "Wide-Grip_Lat_Pulldown" }, @@ -22242,8 +22266,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Pulldown_Behind_The_Neck/0.jpg", - "Wide-Grip_Pulldown_Behind_The_Neck/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Pulldown_Behind_The_Neck/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Pulldown_Behind_The_Neck/1.jpg" ], "id": "Wide-Grip_Pulldown_Behind_The_Neck" }, @@ -22270,8 +22294,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Rear_Pull-Up/0.jpg", - "Wide-Grip_Rear_Pull-Up/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Rear_Pull-Up/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Rear_Pull-Up/1.jpg" ], "id": "Wide-Grip_Rear_Pull-Up" }, @@ -22294,8 +22318,8 @@ ], "category": "strength", "images": [ - "Wide-Grip_Standing_Barbell_Curl/0.jpg", - "Wide-Grip_Standing_Barbell_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Standing_Barbell_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide-Grip_Standing_Barbell_Curl/1.jpg" ], "id": "Wide-Grip_Standing_Barbell_Curl" }, @@ -22324,8 +22348,8 @@ ], "category": "strength", "images": [ - "Wide_Stance_Barbell_Squat/0.jpg", - "Wide_Stance_Barbell_Squat/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide_Stance_Barbell_Squat/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide_Stance_Barbell_Squat/1.jpg" ], "id": "Wide_Stance_Barbell_Squat" }, @@ -22349,8 +22373,8 @@ ], "category": "olympic weightlifting", "images": [ - "Wide_Stance_Stiff_Legs/0.jpg", - "Wide_Stance_Stiff_Legs/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide_Stance_Stiff_Legs/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wide_Stance_Stiff_Legs/1.jpg" ], "id": "Wide_Stance_Stiff_Legs" }, @@ -22372,8 +22396,8 @@ ], "category": "strength", "images": [ - "Wind_Sprints/0.jpg", - "Wind_Sprints/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wind_Sprints/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wind_Sprints/1.jpg" ], "id": "Wind_Sprints" }, @@ -22398,8 +22422,8 @@ ], "category": "stretching", "images": [ - "Windmills/0.jpg", - "Windmills/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Windmills/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Windmills/1.jpg" ], "id": "Windmills" }, @@ -22424,8 +22448,8 @@ ], "category": "stretching", "images": [ - "Worlds_Greatest_Stretch/0.jpg", - "Worlds_Greatest_Stretch/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Worlds_Greatest_Stretch/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Worlds_Greatest_Stretch/1.jpg" ], "id": "Worlds_Greatest_Stretch" }, @@ -22446,8 +22470,8 @@ ], "category": "stretching", "images": [ - "Wrist_Circles/0.jpg", - "Wrist_Circles/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Circles/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Circles/1.jpg" ], "id": "Wrist_Circles" }, @@ -22472,8 +22496,8 @@ ], "category": "strength", "images": [ - "Wrist_Roller/0.jpg", - "Wrist_Roller/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Roller/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Roller/1.jpg" ], "id": "Wrist_Roller" }, @@ -22494,8 +22518,8 @@ ], "category": "strength", "images": [ - "Wrist_Rotations_with_Straight_Bar/0.jpg", - "Wrist_Rotations_with_Straight_Bar/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Rotations_with_Straight_Bar/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Wrist_Rotations_with_Straight_Bar/1.jpg" ], "id": "Wrist_Rotations_with_Straight_Bar" }, @@ -22524,8 +22548,8 @@ ], "category": "strongman", "images": [ - "Yoke_Walk/0.jpg", - "Yoke_Walk/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Yoke_Walk/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Yoke_Walk/1.jpg" ], "id": "Yoke_Walk" }, @@ -22553,8 +22577,8 @@ ], "category": "strength", "images": [ - "Zercher_Squats/0.jpg", - "Zercher_Squats/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zercher_Squats/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zercher_Squats/1.jpg" ], "id": "Zercher_Squats" }, @@ -22582,8 +22606,8 @@ ], "category": "strength", "images": [ - "Zottman_Curl/0.jpg", - "Zottman_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zottman_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zottman_Curl/1.jpg" ], "id": "Zottman_Curl" }, @@ -22609,8 +22633,8 @@ ], "category": "strength", "images": [ - "Zottman_Preacher_Curl/0.jpg", - "Zottman_Preacher_Curl/1.jpg" + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zottman_Preacher_Curl/0.jpg", + "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/Zottman_Preacher_Curl/1.jpg" ], "id": "Zottman_Preacher_Curl" } diff --git a/lib/daos/action_sets_dao.dart b/lib/daos/action_sets_dao.dart new file mode 100644 index 0000000..7fefe04 --- /dev/null +++ b/lib/daos/action_sets_dao.dart @@ -0,0 +1,24 @@ +import 'package:drift/drift.dart'; +import 'package:sendtrain/database/database.dart'; + +part 'action_sets_dao.g.dart'; + +@DriftAccessor(tables: [ActionSets]) +class ActionSetsDao extends DatabaseAccessor + with _$ActionSetsDaoMixin { + ActionSetsDao(super.db); + + // Future find(int id) => (select(sessions)..where((session) => session.id.equals(id) )).getSingle(); + // Stream watchSession(int id) => (select(sessions)..where((session) => session.id.equals(id) )).watchSingle(); + // Future> all() => select(sessions).get(); + // Stream> watch() => select(sessions).watch(); + // Future createOrUpdate(SessionsCompanion session) => into(sessions).insertOnConflictUpdate(session); + // Future replace(Session session) => update(sessions).replace(session); + // Future remove(Session session) => delete(sessions).delete(session); + + Future> fromSession(Session session) async { + return await (select(actionSets) + ..where((actionSet) => actionSet.sessionId.equals(session.id))..orderBy([(t) => OrderingTerm.asc(actionSets.position)])) + .get(); + } +} diff --git a/lib/daos/action_sets_dao.g.dart b/lib/daos/action_sets_dao.g.dart new file mode 100644 index 0000000..3fd78f2 --- /dev/null +++ b/lib/daos/action_sets_dao.g.dart @@ -0,0 +1,10 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'action_sets_dao.dart'; + +// ignore_for_file: type=lint +mixin _$ActionSetsDaoMixin on DatabaseAccessor { + $ActivitiesTable get activities => attachedDatabase.activities; + $SessionsTable get sessions => attachedDatabase.sessions; + $ActionSetsTable get actionSets => attachedDatabase.actionSets; +} diff --git a/lib/daos/actions_dao.dart b/lib/daos/actions_dao.dart index f903778..4067764 100644 --- a/lib/daos/actions_dao.dart +++ b/lib/daos/actions_dao.dart @@ -12,7 +12,7 @@ class ActionsDao extends DatabaseAccessor with _$ActionsDaoMixin { } Future find(int id) async { - return await (select(actions)..where((action) => action.id.equals(id) )).getSingle(); + return await (select(actions)..where((action) => action.id.equals(id))).getSingle(); } Future> fromActivity(Activity activity, Session session) async { diff --git a/lib/database/database.dart b/lib/database/database.dart index b280ade..8e083f6 100644 --- a/lib/database/database.dart +++ b/lib/database/database.dart @@ -7,6 +7,7 @@ import 'package:sendtrain/daos/media_items_dao.dart'; import 'package:sendtrain/daos/object_media_items_dao.dart'; import 'package:sendtrain/daos/session_activities_dao.dart'; import 'package:sendtrain/daos/sessions_dao.dart'; +import 'package:sendtrain/daos/action_sets_dao.dart'; import 'package:sendtrain/database/seed.dart'; part 'database.g.dart'; @@ -14,6 +15,8 @@ part 'database.g.dart'; @DriftDatabase(tables: [ Sessions, SessionActivities, + // SessionSets, + ActionSets, Activities, ActivityActions, Actions, @@ -25,6 +28,8 @@ part 'database.g.dart'; MediaItemsDao, ObjectMediaItemsDao, SessionActivitiesDao, + // SessionSetsDao, + ActionSetsDao, ActivityActionsDao, ActionsDao ]) @@ -35,7 +40,7 @@ class AppDatabase extends _$AppDatabase { AppDatabase() : super(_openConnection()); @override - int get schemaVersion => 35; + int get schemaVersion => 40; @override MigrationStrategy get migration { @@ -73,6 +78,26 @@ class Sessions extends Table { dateTime().withDefault(Variable(DateTime.now()))(); } +class ActionSets extends Table { + IntColumn get id => integer().autoIncrement()(); + TextColumn get name => text().withLength(min: 3, max: 32)(); + IntColumn get reps => integer()(); + IntColumn get activityId => + integer().references(Activities, #id, onDelete: KeyAction.cascade)(); + IntColumn get restBeforeSet => integer().nullable()(); + IntColumn get restBetweenReps => integer().nullable()(); + IntColumn get restAfterSet => integer().nullable()(); + TextColumn get repType => textEnum()(); + IntColumn get repLength => integer().nullable()(); + TextColumn get setWeights => text().nullable()(); + BoolColumn get isAlternating => boolean().withDefault(Variable(false))(); + TextColumn get tempo => text().withLength(min: 6, max: 36).nullable()(); + IntColumn get sessionId => integer().references(Sessions, #id, onDelete: KeyAction.cascade)(); + IntColumn get position => integer()(); + DateTimeColumn get createdAt => + dateTime().withDefault(Variable(DateTime.now()))(); +} + class SessionActivities extends Table { IntColumn get id => integer().autoIncrement()(); IntColumn get sessionId => @@ -85,6 +110,16 @@ class SessionActivities extends Table { dateTime().withDefault(Variable(DateTime.now()))(); } +// class SessionSets extends Table { +// IntColumn get id => integer().autoIncrement()(); +// IntColumn get setId => +// integer().references(ActionSets, #id, onDelete: KeyAction.cascade)(); +// IntColumn get sessionId => integer().references(Sessions, #id, onDelete: KeyAction.cascade)(); +// IntColumn get position => integer()(); +// DateTimeColumn get createdAt => +// dateTime().withDefault(Variable(DateTime.now()))(); +// } + enum ActivityCategories { fundamentals, conditioning, advanced, custom, pro } enum ActivityType { @@ -113,7 +148,8 @@ enum ActivityEquipment { bands, medicineBall, exerciseBall, - eZCurlBar + eZCurlBar, + crimpBlock, } enum ActivityMuscle { diff --git a/lib/database/database.g.dart b/lib/database/database.g.dart index 85bf34f..1441b6d 100644 --- a/lib/database/database.g.dart +++ b/lib/database/database.g.dart @@ -1422,6 +1422,751 @@ class SessionActivitiesCompanion extends UpdateCompanion { } } +class $ActionSetsTable extends ActionSets + with TableInfo<$ActionSetsTable, ActionSet> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $ActionSetsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + static const VerificationMeta _repsMeta = const VerificationMeta('reps'); + @override + late final GeneratedColumn reps = GeneratedColumn( + 'reps', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _activityIdMeta = + const VerificationMeta('activityId'); + @override + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + static const VerificationMeta _restBeforeSetMeta = + const VerificationMeta('restBeforeSet'); + @override + late final GeneratedColumn restBeforeSet = GeneratedColumn( + 'rest_before_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + static const VerificationMeta _restBetweenRepsMeta = + const VerificationMeta('restBetweenReps'); + @override + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + static const VerificationMeta _restAfterSetMeta = + const VerificationMeta('restAfterSet'); + @override + late final GeneratedColumn restAfterSet = GeneratedColumn( + 'rest_after_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + static const VerificationMeta _repTypeMeta = + const VerificationMeta('repType'); + @override + late final GeneratedColumnWithTypeConverter repType = + GeneratedColumn('rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true) + .withConverter($ActionSetsTable.$converterrepType); + static const VerificationMeta _repLengthMeta = + const VerificationMeta('repLength'); + @override + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + static const VerificationMeta _setWeightsMeta = + const VerificationMeta('setWeights'); + @override + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + static const VerificationMeta _isAlternatingMeta = + const VerificationMeta('isAlternating'); + @override + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: Variable(false)); + static const VerificationMeta _tempoMeta = const VerificationMeta('tempo'); + @override + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + static const VerificationMeta _sessionIdMeta = + const VerificationMeta('sessionId'); + @override + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + static const VerificationMeta _positionMeta = + const VerificationMeta('position'); + @override + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _createdAtMeta = + const VerificationMeta('createdAt'); + @override + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: Variable(DateTime.now())); + @override + List get $columns => [ + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + sessionId, + position, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'action_sets'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, name.isAcceptableOrUnknown(data['name']!, _nameMeta)); + } else if (isInserting) { + context.missing(_nameMeta); + } + if (data.containsKey('reps')) { + context.handle( + _repsMeta, reps.isAcceptableOrUnknown(data['reps']!, _repsMeta)); + } else if (isInserting) { + context.missing(_repsMeta); + } + if (data.containsKey('activity_id')) { + context.handle( + _activityIdMeta, + activityId.isAcceptableOrUnknown( + data['activity_id']!, _activityIdMeta)); + } else if (isInserting) { + context.missing(_activityIdMeta); + } + if (data.containsKey('rest_before_set')) { + context.handle( + _restBeforeSetMeta, + restBeforeSet.isAcceptableOrUnknown( + data['rest_before_set']!, _restBeforeSetMeta)); + } + if (data.containsKey('rest_between_reps')) { + context.handle( + _restBetweenRepsMeta, + restBetweenReps.isAcceptableOrUnknown( + data['rest_between_reps']!, _restBetweenRepsMeta)); + } + if (data.containsKey('rest_after_set')) { + context.handle( + _restAfterSetMeta, + restAfterSet.isAcceptableOrUnknown( + data['rest_after_set']!, _restAfterSetMeta)); + } + context.handle(_repTypeMeta, const VerificationResult.success()); + if (data.containsKey('rep_length')) { + context.handle(_repLengthMeta, + repLength.isAcceptableOrUnknown(data['rep_length']!, _repLengthMeta)); + } + if (data.containsKey('set_weights')) { + context.handle( + _setWeightsMeta, + setWeights.isAcceptableOrUnknown( + data['set_weights']!, _setWeightsMeta)); + } + if (data.containsKey('is_alternating')) { + context.handle( + _isAlternatingMeta, + isAlternating.isAcceptableOrUnknown( + data['is_alternating']!, _isAlternatingMeta)); + } + if (data.containsKey('tempo')) { + context.handle( + _tempoMeta, tempo.isAcceptableOrUnknown(data['tempo']!, _tempoMeta)); + } + if (data.containsKey('session_id')) { + context.handle(_sessionIdMeta, + sessionId.isAcceptableOrUnknown(data['session_id']!, _sessionIdMeta)); + } else if (isInserting) { + context.missing(_sessionIdMeta); + } + if (data.containsKey('position')) { + context.handle(_positionMeta, + position.isAcceptableOrUnknown(data['position']!, _positionMeta)); + } else if (isInserting) { + context.missing(_positionMeta); + } + if (data.containsKey('created_at')) { + context.handle(_createdAtMeta, + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta)); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + ActionSet map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionSet( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + name: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}name'])!, + reps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}reps'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + restBeforeSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_set']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_set']), + repType: $ActionSetsTable.$converterrepType.fromSql(attachedDatabase + .typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!), + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + $ActionSetsTable createAlias(String alias) { + return $ActionSetsTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterrepType = + const EnumNameConverter(RepType.values); +} + +class ActionSet extends DataClass implements Insertable { + final int id; + final String name; + final int reps; + final int activityId; + final int? restBeforeSet; + final int? restBetweenReps; + final int? restAfterSet; + final RepType repType; + final int? repLength; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final int sessionId; + final int position; + final DateTime createdAt; + const ActionSet( + {required this.id, + required this.name, + required this.reps, + required this.activityId, + this.restBeforeSet, + this.restBetweenReps, + this.restAfterSet, + required this.repType, + this.repLength, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + map['reps'] = Variable(reps); + map['activity_id'] = Variable(activityId); + if (!nullToAbsent || restBeforeSet != null) { + map['rest_before_set'] = Variable(restBeforeSet); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSet != null) { + map['rest_after_set'] = Variable(restAfterSet); + } + { + map['rep_type'] = + Variable($ActionSetsTable.$converterrepType.toSql(repType)); + } + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionSetsCompanion toCompanion(bool nullToAbsent) { + return ActionSetsCompanion( + id: Value(id), + name: Value(name), + reps: Value(reps), + activityId: Value(activityId), + restBeforeSet: restBeforeSet == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSet), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSet: restAfterSet == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSet), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActionSet.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionSet( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + reps: serializer.fromJson(json['reps']), + activityId: serializer.fromJson(json['activityId']), + restBeforeSet: serializer.fromJson(json['restBeforeSet']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSet: serializer.fromJson(json['restAfterSet']), + repType: $ActionSetsTable.$converterrepType + .fromJson(serializer.fromJson(json['repType'])), + repLength: serializer.fromJson(json['repLength']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + 'reps': serializer.toJson(reps), + 'activityId': serializer.toJson(activityId), + 'restBeforeSet': serializer.toJson(restBeforeSet), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSet': serializer.toJson(restAfterSet), + 'repType': serializer + .toJson($ActionSetsTable.$converterrepType.toJson(repType)), + 'repLength': serializer.toJson(repLength), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionSet copyWith( + {int? id, + String? name, + int? reps, + int? activityId, + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + RepType? repType, + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + int? sessionId, + int? position, + DateTime? createdAt}) => + ActionSet( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: + restBeforeSet.present ? restBeforeSet.value : this.restBeforeSet, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSet: + restAfterSet.present ? restAfterSet.value : this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActionSet copyWithCompanion(ActionSetsCompanion data) { + return ActionSet( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + reps: data.reps.present ? data.reps.value : this.reps, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + restBeforeSet: data.restBeforeSet.present + ? data.restBeforeSet.value + : this.restBeforeSet, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSet: data.restAfterSet.present + ? data.restAfterSet.value + : this.restAfterSet, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionSet(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + sessionId, + position, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionSet && + other.id == this.id && + other.name == this.name && + other.reps == this.reps && + other.activityId == this.activityId && + other.restBeforeSet == this.restBeforeSet && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSet == this.restAfterSet && + other.repType == this.repType && + other.repLength == this.repLength && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActionSetsCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value reps; + final Value activityId; + final Value restBeforeSet; + final Value restBetweenReps; + final Value restAfterSet; + final Value repType; + final Value repLength; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value sessionId; + final Value position; + final Value createdAt; + const ActionSetsCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.reps = const Value.absent(), + this.activityId = const Value.absent(), + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionSetsCompanion.insert({ + this.id = const Value.absent(), + required String name, + required int reps, + required int activityId, + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + required RepType repType, + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : name = Value(name), + reps = Value(reps), + activityId = Value(activityId), + repType = Value(repType), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? reps, + Expression? activityId, + Expression? restBeforeSet, + Expression? restBetweenReps, + Expression? restAfterSet, + Expression? repType, + Expression? repLength, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (reps != null) 'reps': reps, + if (activityId != null) 'activity_id': activityId, + if (restBeforeSet != null) 'rest_before_set': restBeforeSet, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSet != null) 'rest_after_set': restAfterSet, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionSetsCompanion copyWith( + {Value? id, + Value? name, + Value? reps, + Value? activityId, + Value? restBeforeSet, + Value? restBetweenReps, + Value? restAfterSet, + Value? repType, + Value? repLength, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActionSetsCompanion( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: restBeforeSet ?? this.restBeforeSet, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSet: restAfterSet ?? this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (reps.present) { + map['reps'] = Variable(reps.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (restBeforeSet.present) { + map['rest_before_set'] = Variable(restBeforeSet.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSet.present) { + map['rest_after_set'] = Variable(restAfterSet.value); + } + if (repType.present) { + map['rep_type'] = Variable( + $ActionSetsTable.$converterrepType.toSql(repType.value)); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionSetsCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + class $ActionsTable extends Actions with TableInfo<$ActionsTable, Action> { @override final GeneratedDatabase attachedDatabase; @@ -3339,6 +4084,7 @@ abstract class _$AppDatabase extends GeneratedDatabase { late final $ActivitiesTable activities = $ActivitiesTable(this); late final $SessionActivitiesTable sessionActivities = $SessionActivitiesTable(this); + late final $ActionSetsTable actionSets = $ActionSetsTable(this); late final $ActionsTable actions = $ActionsTable(this); late final $ActivityActionsTable activityActions = $ActivityActionsTable(this); @@ -3352,6 +4098,7 @@ abstract class _$AppDatabase extends GeneratedDatabase { ObjectMediaItemsDao(this as AppDatabase); late final SessionActivitiesDao sessionActivitiesDao = SessionActivitiesDao(this as AppDatabase); + late final ActionSetsDao actionSetsDao = ActionSetsDao(this as AppDatabase); late final ActivityActionsDao activityActionsDao = ActivityActionsDao(this as AppDatabase); late final ActionsDao actionsDao = ActionsDao(this as AppDatabase); @@ -3363,6 +4110,7 @@ abstract class _$AppDatabase extends GeneratedDatabase { sessions, activities, sessionActivities, + actionSets, actions, activityActions, mediaItems, @@ -3385,6 +4133,20 @@ abstract class _$AppDatabase extends GeneratedDatabase { TableUpdate('session_activities', kind: UpdateKind.delete), ], ), + WritePropagation( + on: TableUpdateQuery.onTableName('activities', + limitUpdateKind: UpdateKind.delete), + result: [ + TableUpdate('action_sets', kind: UpdateKind.delete), + ], + ), + WritePropagation( + on: TableUpdateQuery.onTableName('sessions', + limitUpdateKind: UpdateKind.delete), + result: [ + TableUpdate('action_sets', kind: UpdateKind.delete), + ], + ), WritePropagation( on: TableUpdateQuery.onTableName('activities', limitUpdateKind: UpdateKind.delete), @@ -3451,7 +4213,7 @@ final class $$SessionsTableReferences $$SessionActivitiesTableProcessedTableManager get sessionActivitiesRefs { final manager = $$SessionActivitiesTableTableManager($_db, $_db.sessionActivities) - .filter((f) => f.sessionId.id($_item.id)); + .filter((f) => f.sessionId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_sessionActivitiesRefsTable($_db)); @@ -3459,6 +4221,21 @@ final class $$SessionsTableReferences manager.$state.copyWith(prefetchedData: cache)); } + static MultiTypedResultKey<$ActionSetsTable, List> + _actionSetsRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( + db.actionSets, + aliasName: + $_aliasNameGenerator(db.sessions.id, db.actionSets.sessionId)); + + $$ActionSetsTableProcessedTableManager get actionSetsRefs { + final manager = $$ActionSetsTableTableManager($_db, $_db.actionSets) + .filter((f) => f.sessionId.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_actionSetsRefsTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache)); + } + static MultiTypedResultKey<$ActivityActionsTable, List> _activityActionsRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable(db.activityActions, @@ -3468,7 +4245,7 @@ final class $$SessionsTableReferences $$ActivityActionsTableProcessedTableManager get activityActionsRefs { final manager = $$ActivityActionsTableTableManager($_db, $_db.activityActions) - .filter((f) => f.sessionId.id($_item.id)); + .filter((f) => f.sessionId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_activityActionsRefsTable($_db)); @@ -3533,6 +4310,27 @@ class $$SessionsTableFilterComposer return f(composer); } + Expression actionSetsRefs( + Expression Function($$ActionSetsTableFilterComposer f) f) { + final $$ActionSetsTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.actionSets, + getReferencedColumn: (t) => t.sessionId, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActionSetsTableFilterComposer( + $db: $db, + $table: $db.actionSets, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return f(composer); + } + Expression activityActionsRefs( Expression Function($$ActivityActionsTableFilterComposer f) f) { final $$ActivityActionsTableFilterComposer composer = $composerBuilder( @@ -3645,6 +4443,27 @@ class $$SessionsTableAnnotationComposer return f(composer); } + Expression actionSetsRefs( + Expression Function($$ActionSetsTableAnnotationComposer a) f) { + final $$ActionSetsTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.actionSets, + getReferencedColumn: (t) => t.sessionId, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActionSetsTableAnnotationComposer( + $db: $db, + $table: $db.actionSets, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return f(composer); + } + Expression activityActionsRefs( Expression Function($$ActivityActionsTableAnnotationComposer a) f) { final $$ActivityActionsTableAnnotationComposer composer = $composerBuilder( @@ -3679,7 +4498,9 @@ class $$SessionsTableTableManager extends RootTableManager< (Session, $$SessionsTableReferences), Session, PrefetchHooks Function( - {bool sessionActivitiesRefs, bool activityActionsRefs})> { + {bool sessionActivitiesRefs, + bool actionSetsRefs, + bool activityActionsRefs})> { $$SessionsTableTableManager(_$AppDatabase db, $SessionsTable table) : super(TableManagerState( db: db, @@ -3735,18 +4556,22 @@ class $$SessionsTableTableManager extends RootTableManager< (e.readTable(table), $$SessionsTableReferences(db, table, e))) .toList(), prefetchHooksCallback: ( - {sessionActivitiesRefs = false, activityActionsRefs = false}) { + {sessionActivitiesRefs = false, + actionSetsRefs = false, + activityActionsRefs = false}) { return PrefetchHooks( db: db, explicitlyWatchedTables: [ if (sessionActivitiesRefs) db.sessionActivities, + if (actionSetsRefs) db.actionSets, if (activityActionsRefs) db.activityActions ], addJoins: null, getPrefetchedDataCallback: (items) async { return [ if (sessionActivitiesRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$SessionsTableReferences ._sessionActivitiesRefsTable(db), @@ -3757,8 +4582,22 @@ class $$SessionsTableTableManager extends RootTableManager< (item, referencedItems) => referencedItems .where((e) => e.sessionId == item.id), typedResults: items), + if (actionSetsRefs) + await $_getPrefetchedData( + currentTable: table, + referencedTable: + $$SessionsTableReferences._actionSetsRefsTable(db), + managerFromTypedResult: (p0) => + $$SessionsTableReferences(db, table, p0) + .actionSetsRefs, + referencedItemsForCurrentItem: + (item, referencedItems) => referencedItems + .where((e) => e.sessionId == item.id), + typedResults: items), if (activityActionsRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$SessionsTableReferences ._activityActionsRefsTable(db), @@ -3788,7 +4627,9 @@ typedef $$SessionsTableProcessedTableManager = ProcessedTableManager< (Session, $$SessionsTableReferences), Session, PrefetchHooks Function( - {bool sessionActivitiesRefs, bool activityActionsRefs})>; + {bool sessionActivitiesRefs, + bool actionSetsRefs, + bool activityActionsRefs})>; typedef $$ActivitiesTableCreateCompanionBuilder = ActivitiesCompanion Function({ Value id, required String title, @@ -3831,7 +4672,7 @@ final class $$ActivitiesTableReferences $$SessionActivitiesTableProcessedTableManager get sessionActivitiesRefs { final manager = $$SessionActivitiesTableTableManager($_db, $_db.sessionActivities) - .filter((f) => f.activityId.id($_item.id)); + .filter((f) => f.activityId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_sessionActivitiesRefsTable($_db)); @@ -3839,6 +4680,21 @@ final class $$ActivitiesTableReferences manager.$state.copyWith(prefetchedData: cache)); } + static MultiTypedResultKey<$ActionSetsTable, List> + _actionSetsRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( + db.actionSets, + aliasName: + $_aliasNameGenerator(db.activities.id, db.actionSets.activityId)); + + $$ActionSetsTableProcessedTableManager get actionSetsRefs { + final manager = $$ActionSetsTableTableManager($_db, $_db.actionSets) + .filter((f) => f.activityId.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_actionSetsRefsTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache)); + } + static MultiTypedResultKey<$ActivityActionsTable, List> _activityActionsRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable(db.activityActions, @@ -3848,7 +4704,7 @@ final class $$ActivitiesTableReferences $$ActivityActionsTableProcessedTableManager get activityActionsRefs { final manager = $$ActivityActionsTableTableManager($_db, $_db.activityActions) - .filter((f) => f.activityId.id($_item.id)); + .filter((f) => f.activityId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_activityActionsRefsTable($_db)); @@ -3938,6 +4794,27 @@ class $$ActivitiesTableFilterComposer return f(composer); } + Expression actionSetsRefs( + Expression Function($$ActionSetsTableFilterComposer f) f) { + final $$ActionSetsTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.actionSets, + getReferencedColumn: (t) => t.activityId, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActionSetsTableFilterComposer( + $db: $db, + $table: $db.actionSets, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return f(composer); + } + Expression activityActionsRefs( Expression Function($$ActivityActionsTableFilterComposer f) f) { final $$ActivityActionsTableFilterComposer composer = $composerBuilder( @@ -4077,6 +4954,27 @@ class $$ActivitiesTableAnnotationComposer return f(composer); } + Expression actionSetsRefs( + Expression Function($$ActionSetsTableAnnotationComposer a) f) { + final $$ActionSetsTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.actionSets, + getReferencedColumn: (t) => t.activityId, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActionSetsTableAnnotationComposer( + $db: $db, + $table: $db.actionSets, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return f(composer); + } + Expression activityActionsRefs( Expression Function($$ActivityActionsTableAnnotationComposer a) f) { final $$ActivityActionsTableAnnotationComposer composer = $composerBuilder( @@ -4111,7 +5009,9 @@ class $$ActivitiesTableTableManager extends RootTableManager< (Activity, $$ActivitiesTableReferences), Activity, PrefetchHooks Function( - {bool sessionActivitiesRefs, bool activityActionsRefs})> { + {bool sessionActivitiesRefs, + bool actionSetsRefs, + bool activityActionsRefs})> { $$ActivitiesTableTableManager(_$AppDatabase db, $ActivitiesTable table) : super(TableManagerState( db: db, @@ -4185,18 +5085,22 @@ class $$ActivitiesTableTableManager extends RootTableManager< )) .toList(), prefetchHooksCallback: ( - {sessionActivitiesRefs = false, activityActionsRefs = false}) { + {sessionActivitiesRefs = false, + actionSetsRefs = false, + activityActionsRefs = false}) { return PrefetchHooks( db: db, explicitlyWatchedTables: [ if (sessionActivitiesRefs) db.sessionActivities, + if (actionSetsRefs) db.actionSets, if (activityActionsRefs) db.activityActions ], addJoins: null, getPrefetchedDataCallback: (items) async { return [ if (sessionActivitiesRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$ActivitiesTableReferences ._sessionActivitiesRefsTable(db), @@ -4207,8 +5111,22 @@ class $$ActivitiesTableTableManager extends RootTableManager< (item, referencedItems) => referencedItems .where((e) => e.activityId == item.id), typedResults: items), + if (actionSetsRefs) + await $_getPrefetchedData( + currentTable: table, + referencedTable: $$ActivitiesTableReferences + ._actionSetsRefsTable(db), + managerFromTypedResult: (p0) => + $$ActivitiesTableReferences(db, table, p0) + .actionSetsRefs, + referencedItemsForCurrentItem: + (item, referencedItems) => referencedItems + .where((e) => e.activityId == item.id), + typedResults: items), if (activityActionsRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$ActivitiesTableReferences ._activityActionsRefsTable(db), @@ -4238,7 +5156,9 @@ typedef $$ActivitiesTableProcessedTableManager = ProcessedTableManager< (Activity, $$ActivitiesTableReferences), Activity, PrefetchHooks Function( - {bool sessionActivitiesRefs, bool activityActionsRefs})>; + {bool sessionActivitiesRefs, + bool actionSetsRefs, + bool activityActionsRefs})>; typedef $$SessionActivitiesTableCreateCompanionBuilder = SessionActivitiesCompanion Function({ Value id, @@ -4268,8 +5188,10 @@ final class $$SessionActivitiesTableReferences extends BaseReferences< $_aliasNameGenerator(db.sessionActivities.sessionId, db.sessions.id)); $$SessionsTableProcessedTableManager get sessionId { + final $_column = $_itemColumn('session_id')!; + final manager = $$SessionsTableTableManager($_db, $_db.sessions) - .filter((f) => f.id($_item.sessionId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_sessionIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -4281,8 +5203,10 @@ final class $$SessionActivitiesTableReferences extends BaseReferences< db.sessionActivities.activityId, db.activities.id)); $$ActivitiesTableProcessedTableManager get activityId { + final $_column = $_itemColumn('activity_id')!; + final manager = $$ActivitiesTableTableManager($_db, $_db.activities) - .filter((f) => f.id($_item.activityId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_activityIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -4600,6 +5524,506 @@ typedef $$SessionActivitiesTableProcessedTableManager = ProcessedTableManager< (SessionActivity, $$SessionActivitiesTableReferences), SessionActivity, PrefetchHooks Function({bool sessionId, bool activityId})>; +typedef $$ActionSetsTableCreateCompanionBuilder = ActionSetsCompanion Function({ + Value id, + required String name, + required int reps, + required int activityId, + Value restBeforeSet, + Value restBetweenReps, + Value restAfterSet, + required RepType repType, + Value repLength, + Value setWeights, + Value isAlternating, + Value tempo, + required int sessionId, + required int position, + Value createdAt, +}); +typedef $$ActionSetsTableUpdateCompanionBuilder = ActionSetsCompanion Function({ + Value id, + Value name, + Value reps, + Value activityId, + Value restBeforeSet, + Value restBetweenReps, + Value restAfterSet, + Value repType, + Value repLength, + Value setWeights, + Value isAlternating, + Value tempo, + Value sessionId, + Value position, + Value createdAt, +}); + +final class $$ActionSetsTableReferences + extends BaseReferences<_$AppDatabase, $ActionSetsTable, ActionSet> { + $$ActionSetsTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static $ActivitiesTable _activityIdTable(_$AppDatabase db) => + db.activities.createAlias( + $_aliasNameGenerator(db.actionSets.activityId, db.activities.id)); + + $$ActivitiesTableProcessedTableManager get activityId { + final $_column = $_itemColumn('activity_id')!; + + final manager = $$ActivitiesTableTableManager($_db, $_db.activities) + .filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_activityIdTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item])); + } + + static $SessionsTable _sessionIdTable(_$AppDatabase db) => + db.sessions.createAlias( + $_aliasNameGenerator(db.actionSets.sessionId, db.sessions.id)); + + $$SessionsTableProcessedTableManager get sessionId { + final $_column = $_itemColumn('session_id')!; + + final manager = $$SessionsTableTableManager($_db, $_db.sessions) + .filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_sessionIdTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item])); + } +} + +class $$ActionSetsTableFilterComposer + extends Composer<_$AppDatabase, $ActionSetsTable> { + $$ActionSetsTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnFilters get name => $composableBuilder( + column: $table.name, builder: (column) => ColumnFilters(column)); + + ColumnFilters get reps => $composableBuilder( + column: $table.reps, builder: (column) => ColumnFilters(column)); + + ColumnFilters get restBeforeSet => $composableBuilder( + column: $table.restBeforeSet, builder: (column) => ColumnFilters(column)); + + ColumnFilters get restBetweenReps => $composableBuilder( + column: $table.restBetweenReps, + builder: (column) => ColumnFilters(column)); + + ColumnFilters get restAfterSet => $composableBuilder( + column: $table.restAfterSet, builder: (column) => ColumnFilters(column)); + + ColumnWithTypeConverterFilters get repType => + $composableBuilder( + column: $table.repType, + builder: (column) => ColumnWithTypeConverterFilters(column)); + + ColumnFilters get repLength => $composableBuilder( + column: $table.repLength, builder: (column) => ColumnFilters(column)); + + ColumnFilters get setWeights => $composableBuilder( + column: $table.setWeights, builder: (column) => ColumnFilters(column)); + + ColumnFilters get isAlternating => $composableBuilder( + column: $table.isAlternating, builder: (column) => ColumnFilters(column)); + + ColumnFilters get tempo => $composableBuilder( + column: $table.tempo, builder: (column) => ColumnFilters(column)); + + ColumnFilters get position => $composableBuilder( + column: $table.position, builder: (column) => ColumnFilters(column)); + + ColumnFilters get createdAt => $composableBuilder( + column: $table.createdAt, builder: (column) => ColumnFilters(column)); + + $$ActivitiesTableFilterComposer get activityId { + final $$ActivitiesTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.activityId, + referencedTable: $db.activities, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActivitiesTableFilterComposer( + $db: $db, + $table: $db.activities, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } + + $$SessionsTableFilterComposer get sessionId { + final $$SessionsTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.sessionId, + referencedTable: $db.sessions, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$SessionsTableFilterComposer( + $db: $db, + $table: $db.sessions, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } +} + +class $$ActionSetsTableOrderingComposer + extends Composer<_$AppDatabase, $ActionSetsTable> { + $$ActionSetsTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get reps => $composableBuilder( + column: $table.reps, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get restBeforeSet => $composableBuilder( + column: $table.restBeforeSet, + builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get restBetweenReps => $composableBuilder( + column: $table.restBetweenReps, + builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get restAfterSet => $composableBuilder( + column: $table.restAfterSet, + builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get repType => $composableBuilder( + column: $table.repType, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get repLength => $composableBuilder( + column: $table.repLength, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get setWeights => $composableBuilder( + column: $table.setWeights, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get isAlternating => $composableBuilder( + column: $table.isAlternating, + builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get tempo => $composableBuilder( + column: $table.tempo, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get position => $composableBuilder( + column: $table.position, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get createdAt => $composableBuilder( + column: $table.createdAt, builder: (column) => ColumnOrderings(column)); + + $$ActivitiesTableOrderingComposer get activityId { + final $$ActivitiesTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.activityId, + referencedTable: $db.activities, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActivitiesTableOrderingComposer( + $db: $db, + $table: $db.activities, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } + + $$SessionsTableOrderingComposer get sessionId { + final $$SessionsTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.sessionId, + referencedTable: $db.sessions, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$SessionsTableOrderingComposer( + $db: $db, + $table: $db.sessions, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } +} + +class $$ActionSetsTableAnnotationComposer + extends Composer<_$AppDatabase, $ActionSetsTable> { + $$ActionSetsTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + GeneratedColumn get reps => + $composableBuilder(column: $table.reps, builder: (column) => column); + + GeneratedColumn get restBeforeSet => $composableBuilder( + column: $table.restBeforeSet, builder: (column) => column); + + GeneratedColumn get restBetweenReps => $composableBuilder( + column: $table.restBetweenReps, builder: (column) => column); + + GeneratedColumn get restAfterSet => $composableBuilder( + column: $table.restAfterSet, builder: (column) => column); + + GeneratedColumnWithTypeConverter get repType => + $composableBuilder(column: $table.repType, builder: (column) => column); + + GeneratedColumn get repLength => + $composableBuilder(column: $table.repLength, builder: (column) => column); + + GeneratedColumn get setWeights => $composableBuilder( + column: $table.setWeights, builder: (column) => column); + + GeneratedColumn get isAlternating => $composableBuilder( + column: $table.isAlternating, builder: (column) => column); + + GeneratedColumn get tempo => + $composableBuilder(column: $table.tempo, builder: (column) => column); + + GeneratedColumn get position => + $composableBuilder(column: $table.position, builder: (column) => column); + + GeneratedColumn get createdAt => + $composableBuilder(column: $table.createdAt, builder: (column) => column); + + $$ActivitiesTableAnnotationComposer get activityId { + final $$ActivitiesTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.activityId, + referencedTable: $db.activities, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$ActivitiesTableAnnotationComposer( + $db: $db, + $table: $db.activities, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } + + $$SessionsTableAnnotationComposer get sessionId { + final $$SessionsTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.sessionId, + referencedTable: $db.sessions, + getReferencedColumn: (t) => t.id, + builder: (joinBuilder, + {$addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer}) => + $$SessionsTableAnnotationComposer( + $db: $db, + $table: $db.sessions, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + )); + return composer; + } +} + +class $$ActionSetsTableTableManager extends RootTableManager< + _$AppDatabase, + $ActionSetsTable, + ActionSet, + $$ActionSetsTableFilterComposer, + $$ActionSetsTableOrderingComposer, + $$ActionSetsTableAnnotationComposer, + $$ActionSetsTableCreateCompanionBuilder, + $$ActionSetsTableUpdateCompanionBuilder, + (ActionSet, $$ActionSetsTableReferences), + ActionSet, + PrefetchHooks Function({bool activityId, bool sessionId})> { + $$ActionSetsTableTableManager(_$AppDatabase db, $ActionSetsTable table) + : super(TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$ActionSetsTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$ActionSetsTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$ActionSetsTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value reps = const Value.absent(), + Value activityId = const Value.absent(), + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + Value repType = const Value.absent(), + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + Value isAlternating = const Value.absent(), + Value tempo = const Value.absent(), + Value sessionId = const Value.absent(), + Value position = const Value.absent(), + Value createdAt = const Value.absent(), + }) => + ActionSetsCompanion( + id: id, + name: name, + reps: reps, + activityId: activityId, + restBeforeSet: restBeforeSet, + restBetweenReps: restBetweenReps, + restAfterSet: restAfterSet, + repType: repType, + repLength: repLength, + setWeights: setWeights, + isAlternating: isAlternating, + tempo: tempo, + sessionId: sessionId, + position: position, + createdAt: createdAt, + ), + createCompanionCallback: ({ + Value id = const Value.absent(), + required String name, + required int reps, + required int activityId, + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + required RepType repType, + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + Value isAlternating = const Value.absent(), + Value tempo = const Value.absent(), + required int sessionId, + required int position, + Value createdAt = const Value.absent(), + }) => + ActionSetsCompanion.insert( + id: id, + name: name, + reps: reps, + activityId: activityId, + restBeforeSet: restBeforeSet, + restBetweenReps: restBetweenReps, + restAfterSet: restAfterSet, + repType: repType, + repLength: repLength, + setWeights: setWeights, + isAlternating: isAlternating, + tempo: tempo, + sessionId: sessionId, + position: position, + createdAt: createdAt, + ), + withReferenceMapper: (p0) => p0 + .map((e) => ( + e.readTable(table), + $$ActionSetsTableReferences(db, table, e) + )) + .toList(), + prefetchHooksCallback: ({activityId = false, sessionId = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [], + addJoins: < + T extends TableManagerState< + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic>>(state) { + if (activityId) { + state = state.withJoin( + currentTable: table, + currentColumn: table.activityId, + referencedTable: + $$ActionSetsTableReferences._activityIdTable(db), + referencedColumn: + $$ActionSetsTableReferences._activityIdTable(db).id, + ) as T; + } + if (sessionId) { + state = state.withJoin( + currentTable: table, + currentColumn: table.sessionId, + referencedTable: + $$ActionSetsTableReferences._sessionIdTable(db), + referencedColumn: + $$ActionSetsTableReferences._sessionIdTable(db).id, + ) as T; + } + + return state; + }, + getPrefetchedDataCallback: (items) async { + return []; + }, + ); + }, + )); +} + +typedef $$ActionSetsTableProcessedTableManager = ProcessedTableManager< + _$AppDatabase, + $ActionSetsTable, + ActionSet, + $$ActionSetsTableFilterComposer, + $$ActionSetsTableOrderingComposer, + $$ActionSetsTableAnnotationComposer, + $$ActionSetsTableCreateCompanionBuilder, + $$ActionSetsTableUpdateCompanionBuilder, + (ActionSet, $$ActionSetsTableReferences), + ActionSet, + PrefetchHooks Function({bool activityId, bool sessionId})>; typedef $$ActionsTableCreateCompanionBuilder = ActionsCompanion Function({ Value id, required String title, @@ -4656,7 +6080,7 @@ final class $$ActionsTableReferences $$ActivityActionsTableProcessedTableManager get activityActionsRefs { final manager = $$ActivityActionsTableTableManager($_db, $_db.activityActions) - .filter((f) => f.actionId.id($_item.id)); + .filter((f) => f.actionId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_activityActionsRefsTable($_db)); @@ -5040,7 +6464,8 @@ class $$ActionsTableTableManager extends RootTableManager< getPrefetchedDataCallback: (items) async { return [ if (activityActionsRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$ActionsTableReferences ._activityActionsRefsTable(db), @@ -5099,8 +6524,10 @@ final class $$ActivityActionsTableReferences extends BaseReferences< db.activityActions.activityId, db.activities.id)); $$ActivitiesTableProcessedTableManager get activityId { + final $_column = $_itemColumn('activity_id')!; + final manager = $$ActivitiesTableTableManager($_db, $_db.activities) - .filter((f) => f.id($_item.activityId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_activityIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -5112,8 +6539,10 @@ final class $$ActivityActionsTableReferences extends BaseReferences< $_aliasNameGenerator(db.activityActions.actionId, db.actions.id)); $$ActionsTableProcessedTableManager get actionId { + final $_column = $_itemColumn('action_id')!; + final manager = $$ActionsTableTableManager($_db, $_db.actions) - .filter((f) => f.id($_item.actionId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_actionIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -5125,8 +6554,10 @@ final class $$ActivityActionsTableReferences extends BaseReferences< $_aliasNameGenerator(db.activityActions.sessionId, db.sessions.id)); $$SessionsTableProcessedTableManager get sessionId { + final $_column = $_itemColumn('session_id')!; + final manager = $$SessionsTableTableManager($_db, $_db.sessions) - .filter((f) => f.id($_item.sessionId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_sessionIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -5534,7 +6965,7 @@ final class $$MediaItemsTableReferences $$ObjectMediaItemsTableProcessedTableManager get objectMediaItemsRefs { final manager = $$ObjectMediaItemsTableTableManager($_db, $_db.objectMediaItems) - .filter((f) => f.mediaId.id($_item.id)); + .filter((f) => f.mediaId.id.sqlEquals($_itemColumn('id')!)); final cache = $_typedResult.readTableOrNull(_objectMediaItemsRefsTable($_db)); @@ -5741,7 +7172,8 @@ class $$MediaItemsTableTableManager extends RootTableManager< getPrefetchedDataCallback: (items) async { return [ if (objectMediaItemsRefs) - await $_getPrefetchedData( + await $_getPrefetchedData( currentTable: table, referencedTable: $$MediaItemsTableReferences ._objectMediaItemsRefsTable(db), @@ -5798,8 +7230,10 @@ final class $$ObjectMediaItemsTableReferences extends BaseReferences< $_aliasNameGenerator(db.objectMediaItems.mediaId, db.mediaItems.id)); $$MediaItemsTableProcessedTableManager get mediaId { + final $_column = $_itemColumn('media_id')!; + final manager = $$MediaItemsTableTableManager($_db, $_db.mediaItems) - .filter((f) => f.id($_item.mediaId!)); + .filter((f) => f.id.sqlEquals($_column)); final item = $_typedResult.readTableOrNull(_mediaIdTable($_db)); if (item == null) return manager; return ProcessedTableManager( @@ -6053,6 +7487,8 @@ class $AppDatabaseManager { $$ActivitiesTableTableManager(_db, _db.activities); $$SessionActivitiesTableTableManager get sessionActivities => $$SessionActivitiesTableTableManager(_db, _db.sessionActivities); + $$ActionSetsTableTableManager get actionSets => + $$ActionSetsTableTableManager(_db, _db.actionSets); $$ActionsTableTableManager get actions => $$ActionsTableTableManager(_db, _db.actions); $$ActivityActionsTableTableManager get activityActions => diff --git a/lib/database/database.steps.dart b/lib/database/database.steps.dart index d545f68..2007ef6 100644 --- a/lib/database/database.steps.dart +++ b/lib/database/database.steps.dart @@ -5610,6 +5610,899 @@ final class Schema35 extends i0.VersionedSchema { alias: null); } +final class Schema36 extends i0.VersionedSchema { + Schema36({required super.database}) : super(version: 36); + @override + late final List entities = [ + sessions, + activities, + sessionActivities, + actions, + activityActions, + mediaItems, + objectMediaItems, + ]; + late final Shape12 sessions = Shape12( + source: i0.VersionedTable( + entityName: 'sessions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_1, + _column_2, + _column_3, + _column_11, + _column_20, + _column_4, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape17 activities = Shape17( + source: i0.VersionedTable( + entityName: 'activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_40, + _column_36, + _column_37, + _column_38, + _column_27, + _column_28, + _column_29, + _column_35, + _column_31, + _column_32, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape13 sessionActivities = Shape13( + source: i0.VersionedTable( + entityName: 'session_activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_21, + _column_22, + _column_19, + _column_10, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape21 actions = Shape21( + source: i0.VersionedTable( + entityName: 'actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_42, + _column_43, + _column_44, + _column_45, + _column_46, + _column_47, + _column_48, + _column_49, + _column_53, + _column_54, + _column_64, + _column_52, + _column_65, + _column_66, + _column_12, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape22 activityActions = Shape22( + source: i0.VersionedTable( + entityName: 'activity_actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_22, + _column_23, + _column_21, + _column_19, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape5 mediaItems = Shape5( + source: i0.VersionedTable( + entityName: 'media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_25, + _column_6, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape6 objectMediaItems = Shape6( + source: i0.VersionedTable( + entityName: 'object_media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_15, + _column_16, + _column_24, + _column_63, + ], + attachedDatabase: database, + ), + alias: null); +} + +i1.GeneratedColumn _column_63(String aliasedName) => + i1.GeneratedColumn('created_at', aliasedName, false, + type: i1.DriftSqlType.dateTime, + defaultValue: const CustomExpression('1739308481')); +i1.GeneratedColumn _column_64(String aliasedName) => + i1.GeneratedColumn('is_alternating', aliasedName, false, + type: i1.DriftSqlType.bool, + defaultConstraints: i1.GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); +i1.GeneratedColumn _column_65(String aliasedName) => + i1.GeneratedColumn('status', aliasedName, false, + type: i1.DriftSqlType.string, + defaultValue: const CustomExpression('\'pending\'')); +i1.GeneratedColumn _column_66(String aliasedName) => i1.GeneratedColumn< + String>('state', aliasedName, false, + type: i1.DriftSqlType.string, + defaultValue: const CustomExpression( + '\'{"currentSet": 0, "currentRep": 0, "currentActionType": 0, "currentTime": 0, "currentAction": 0}\'')); + +final class Schema37 extends i0.VersionedSchema { + Schema37({required super.database}) : super(version: 37); + @override + late final List entities = [ + sessions, + activities, + sessionActivities, + actions, + sets, + sessionSets, + activityActions, + mediaItems, + objectMediaItems, + ]; + late final Shape12 sessions = Shape12( + source: i0.VersionedTable( + entityName: 'sessions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_1, + _column_2, + _column_3, + _column_11, + _column_20, + _column_4, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape17 activities = Shape17( + source: i0.VersionedTable( + entityName: 'activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_40, + _column_36, + _column_37, + _column_38, + _column_27, + _column_28, + _column_29, + _column_35, + _column_31, + _column_32, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape13 sessionActivities = Shape13( + source: i0.VersionedTable( + entityName: 'session_activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_21, + _column_22, + _column_19, + _column_10, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape21 actions = Shape21( + source: i0.VersionedTable( + entityName: 'actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_42, + _column_43, + _column_44, + _column_45, + _column_46, + _column_47, + _column_48, + _column_49, + _column_53, + _column_54, + _column_64, + _column_52, + _column_65, + _column_66, + _column_12, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape23 sets = Shape23( + source: i0.VersionedTable( + entityName: 'sets', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_68, + _column_69, + _column_23, + _column_70, + _column_46, + _column_71, + _column_48, + _column_49, + _column_54, + _column_64, + _column_52, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape24 sessionSets = Shape24( + source: i0.VersionedTable( + entityName: 'session_sets', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_72, + _column_21, + _column_19, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape22 activityActions = Shape22( + source: i0.VersionedTable( + entityName: 'activity_actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_22, + _column_23, + _column_21, + _column_19, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape5 mediaItems = Shape5( + source: i0.VersionedTable( + entityName: 'media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_25, + _column_6, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape6 objectMediaItems = Shape6( + source: i0.VersionedTable( + entityName: 'object_media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_15, + _column_16, + _column_24, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); +} + +i1.GeneratedColumn _column_67(String aliasedName) => + i1.GeneratedColumn('created_at', aliasedName, false, + type: i1.DriftSqlType.dateTime, + defaultValue: const CustomExpression('1744074941')); + +class Shape23 extends i0.VersionedTable { + Shape23({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get id => + columnsByName['id']! as i1.GeneratedColumn; + i1.GeneratedColumn get name => + columnsByName['name']! as i1.GeneratedColumn; + i1.GeneratedColumn get reps => + columnsByName['reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get actionId => + columnsByName['action_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBeforeSet => + columnsByName['rest_before_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBetweenReps => + columnsByName['rest_between_reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get restAfterSet => + columnsByName['rest_after_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get repType => + columnsByName['rep_type']! as i1.GeneratedColumn; + i1.GeneratedColumn get repLength => + columnsByName['rep_length']! as i1.GeneratedColumn; + i1.GeneratedColumn get setWeights => + columnsByName['set_weights']! as i1.GeneratedColumn; + i1.GeneratedColumn get isAlternating => + columnsByName['is_alternating']! as i1.GeneratedColumn; + i1.GeneratedColumn get tempo => + columnsByName['tempo']! as i1.GeneratedColumn; + i1.GeneratedColumn get createdAt => + columnsByName['created_at']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_68(String aliasedName) => + i1.GeneratedColumn('name', aliasedName, false, + additionalChecks: i1.GeneratedColumn.checkTextLength( + minTextLength: 3, maxTextLength: 32), + type: i1.DriftSqlType.string); +i1.GeneratedColumn _column_69(String aliasedName) => + i1.GeneratedColumn('reps', aliasedName, false, + type: i1.DriftSqlType.int); +i1.GeneratedColumn _column_70(String aliasedName) => + i1.GeneratedColumn('rest_before_set', aliasedName, true, + type: i1.DriftSqlType.int); +i1.GeneratedColumn _column_71(String aliasedName) => + i1.GeneratedColumn('rest_after_set', aliasedName, true, + type: i1.DriftSqlType.int); + +class Shape24 extends i0.VersionedTable { + Shape24({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get id => + columnsByName['id']! as i1.GeneratedColumn; + i1.GeneratedColumn get setId => + columnsByName['set_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get sessionId => + columnsByName['session_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get position => + columnsByName['position']! as i1.GeneratedColumn; + i1.GeneratedColumn get createdAt => + columnsByName['created_at']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_72(String aliasedName) => + i1.GeneratedColumn('set_id', aliasedName, false, + type: i1.DriftSqlType.int, + defaultConstraints: i1.GeneratedColumn.constraintIsAlways( + 'REFERENCES sets (id) ON DELETE CASCADE')); + +final class Schema39 extends i0.VersionedSchema { + Schema39({required super.database}) : super(version: 39); + @override + late final List entities = [ + sessions, + activities, + sessionActivities, + actionSets, + sessionSets, + actions, + activityActions, + mediaItems, + objectMediaItems, + ]; + late final Shape12 sessions = Shape12( + source: i0.VersionedTable( + entityName: 'sessions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_1, + _column_2, + _column_3, + _column_11, + _column_20, + _column_4, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape17 activities = Shape17( + source: i0.VersionedTable( + entityName: 'activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_40, + _column_36, + _column_37, + _column_38, + _column_27, + _column_28, + _column_29, + _column_35, + _column_31, + _column_32, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape13 sessionActivities = Shape13( + source: i0.VersionedTable( + entityName: 'session_activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_21, + _column_22, + _column_19, + _column_10, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape25 actionSets = Shape25( + source: i0.VersionedTable( + entityName: 'action_sets', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_68, + _column_69, + _column_22, + _column_70, + _column_46, + _column_71, + _column_48, + _column_49, + _column_54, + _column_64, + _column_52, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape24 sessionSets = Shape24( + source: i0.VersionedTable( + entityName: 'session_sets', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_74, + _column_21, + _column_19, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape21 actions = Shape21( + source: i0.VersionedTable( + entityName: 'actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_42, + _column_43, + _column_44, + _column_45, + _column_46, + _column_47, + _column_48, + _column_49, + _column_53, + _column_54, + _column_64, + _column_52, + _column_65, + _column_66, + _column_12, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape22 activityActions = Shape22( + source: i0.VersionedTable( + entityName: 'activity_actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_22, + _column_23, + _column_21, + _column_19, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape5 mediaItems = Shape5( + source: i0.VersionedTable( + entityName: 'media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_25, + _column_6, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape6 objectMediaItems = Shape6( + source: i0.VersionedTable( + entityName: 'object_media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_15, + _column_16, + _column_24, + _column_73, + ], + attachedDatabase: database, + ), + alias: null); +} + +i1.GeneratedColumn _column_73(String aliasedName) => + i1.GeneratedColumn('created_at', aliasedName, false, + type: i1.DriftSqlType.dateTime, + defaultValue: const CustomExpression('1744139454')); + +class Shape25 extends i0.VersionedTable { + Shape25({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get id => + columnsByName['id']! as i1.GeneratedColumn; + i1.GeneratedColumn get name => + columnsByName['name']! as i1.GeneratedColumn; + i1.GeneratedColumn get reps => + columnsByName['reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get activityId => + columnsByName['activity_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBeforeSet => + columnsByName['rest_before_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBetweenReps => + columnsByName['rest_between_reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get restAfterSet => + columnsByName['rest_after_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get repType => + columnsByName['rep_type']! as i1.GeneratedColumn; + i1.GeneratedColumn get repLength => + columnsByName['rep_length']! as i1.GeneratedColumn; + i1.GeneratedColumn get setWeights => + columnsByName['set_weights']! as i1.GeneratedColumn; + i1.GeneratedColumn get isAlternating => + columnsByName['is_alternating']! as i1.GeneratedColumn; + i1.GeneratedColumn get tempo => + columnsByName['tempo']! as i1.GeneratedColumn; + i1.GeneratedColumn get createdAt => + columnsByName['created_at']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_74(String aliasedName) => + i1.GeneratedColumn('set_id', aliasedName, false, + type: i1.DriftSqlType.int, + defaultConstraints: i1.GeneratedColumn.constraintIsAlways( + 'REFERENCES action_sets (id) ON DELETE CASCADE')); + +final class Schema40 extends i0.VersionedSchema { + Schema40({required super.database}) : super(version: 40); + @override + late final List entities = [ + sessions, + activities, + sessionActivities, + actionSets, + actions, + activityActions, + mediaItems, + objectMediaItems, + ]; + late final Shape12 sessions = Shape12( + source: i0.VersionedTable( + entityName: 'sessions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_1, + _column_2, + _column_3, + _column_11, + _column_20, + _column_4, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape17 activities = Shape17( + source: i0.VersionedTable( + entityName: 'activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_40, + _column_36, + _column_37, + _column_38, + _column_27, + _column_28, + _column_29, + _column_35, + _column_31, + _column_32, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape13 sessionActivities = Shape13( + source: i0.VersionedTable( + entityName: 'session_activities', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_21, + _column_22, + _column_19, + _column_10, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape26 actionSets = Shape26( + source: i0.VersionedTable( + entityName: 'action_sets', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_68, + _column_69, + _column_22, + _column_70, + _column_46, + _column_71, + _column_48, + _column_49, + _column_54, + _column_64, + _column_52, + _column_21, + _column_19, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape21 actions = Shape21( + source: i0.VersionedTable( + entityName: 'actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_42, + _column_43, + _column_44, + _column_45, + _column_46, + _column_47, + _column_48, + _column_49, + _column_53, + _column_54, + _column_64, + _column_52, + _column_65, + _column_66, + _column_12, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape22 activityActions = Shape22( + source: i0.VersionedTable( + entityName: 'activity_actions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_22, + _column_23, + _column_21, + _column_19, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape5 mediaItems = Shape5( + source: i0.VersionedTable( + entityName: 'media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_41, + _column_2, + _column_25, + _column_6, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape6 objectMediaItems = Shape6( + source: i0.VersionedTable( + entityName: 'object_media_items', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_0, + _column_15, + _column_16, + _column_24, + _column_75, + ], + attachedDatabase: database, + ), + alias: null); +} + +i1.GeneratedColumn _column_75(String aliasedName) => + i1.GeneratedColumn('created_at', aliasedName, false, + type: i1.DriftSqlType.dateTime, + defaultValue: const CustomExpression('1744140262')); + +class Shape26 extends i0.VersionedTable { + Shape26({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get id => + columnsByName['id']! as i1.GeneratedColumn; + i1.GeneratedColumn get name => + columnsByName['name']! as i1.GeneratedColumn; + i1.GeneratedColumn get reps => + columnsByName['reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get activityId => + columnsByName['activity_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBeforeSet => + columnsByName['rest_before_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get restBetweenReps => + columnsByName['rest_between_reps']! as i1.GeneratedColumn; + i1.GeneratedColumn get restAfterSet => + columnsByName['rest_after_set']! as i1.GeneratedColumn; + i1.GeneratedColumn get repType => + columnsByName['rep_type']! as i1.GeneratedColumn; + i1.GeneratedColumn get repLength => + columnsByName['rep_length']! as i1.GeneratedColumn; + i1.GeneratedColumn get setWeights => + columnsByName['set_weights']! as i1.GeneratedColumn; + i1.GeneratedColumn get isAlternating => + columnsByName['is_alternating']! as i1.GeneratedColumn; + i1.GeneratedColumn get tempo => + columnsByName['tempo']! as i1.GeneratedColumn; + i1.GeneratedColumn get sessionId => + columnsByName['session_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get position => + columnsByName['position']! as i1.GeneratedColumn; + i1.GeneratedColumn get createdAt => + columnsByName['created_at']! as i1.GeneratedColumn; +} + i0.MigrationStepWithVersion migrationSteps({ required Future Function(i1.Migrator m, Schema2 schema) from1To2, required Future Function(i1.Migrator m, Schema3 schema) from2To3, @@ -5645,6 +6538,10 @@ i0.MigrationStepWithVersion migrationSteps({ required Future Function(i1.Migrator m, Schema33 schema) from32To33, required Future Function(i1.Migrator m, Schema34 schema) from33To34, required Future Function(i1.Migrator m, Schema35 schema) from34To35, + required Future Function(i1.Migrator m, Schema36 schema) from35To36, + required Future Function(i1.Migrator m, Schema37 schema) from36To37, + required Future Function(i1.Migrator m, Schema39 schema) from37To39, + required Future Function(i1.Migrator m, Schema40 schema) from39To40, }) { return (currentVersion, database) async { switch (currentVersion) { @@ -5818,6 +6715,26 @@ i0.MigrationStepWithVersion migrationSteps({ final migrator = i1.Migrator(database, schema); await from34To35(migrator, schema); return 35; + case 35: + final schema = Schema36(database: database); + final migrator = i1.Migrator(database, schema); + await from35To36(migrator, schema); + return 36; + case 36: + final schema = Schema37(database: database); + final migrator = i1.Migrator(database, schema); + await from36To37(migrator, schema); + return 37; + case 37: + final schema = Schema39(database: database); + final migrator = i1.Migrator(database, schema); + await from37To39(migrator, schema); + return 39; + case 39: + final schema = Schema40(database: database); + final migrator = i1.Migrator(database, schema); + await from39To40(migrator, schema); + return 40; default: throw ArgumentError.value('Unknown migration from $currentVersion'); } @@ -5859,6 +6776,10 @@ i1.OnUpgrade stepByStep({ required Future Function(i1.Migrator m, Schema33 schema) from32To33, required Future Function(i1.Migrator m, Schema34 schema) from33To34, required Future Function(i1.Migrator m, Schema35 schema) from34To35, + required Future Function(i1.Migrator m, Schema36 schema) from35To36, + required Future Function(i1.Migrator m, Schema37 schema) from36To37, + required Future Function(i1.Migrator m, Schema39 schema) from37To39, + required Future Function(i1.Migrator m, Schema40 schema) from39To40, }) => i0.VersionedSchema.stepByStepHelper( step: migrationSteps( @@ -5896,4 +6817,8 @@ i1.OnUpgrade stepByStep({ from32To33: from32To33, from33To34: from33To34, from34To35: from34To35, + from35To36: from35To36, + from36To37: from36To37, + from37To39: from37To39, + from39To40: from39To40, )); diff --git a/lib/database/drift_schemas/sendtrain/drift_schema_v36.json b/lib/database/drift_schemas/sendtrain/drift_schema_v36.json new file mode 100644 index 0000000..45daa5e --- /dev/null +++ b/lib/database/drift_schemas/sendtrain/drift_schema_v36.json @@ -0,0 +1 @@ +{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"sessions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"body","getter_name":"content","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(SessionStatus.values)","dart_type_name":"SessionStatus"}},{"name":"achievements","getter_name":"achievements","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"address","getter_name":"address","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":256}}]},{"name":"date","getter_name":"date","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[],"type":"table","data":{"name":"activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":100}}]},{"name":"type","getter_name":"type","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityType.values)","dart_type_name":"ActivityType"}},{"name":"body","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityCategories.values)","dart_type_name":"ActivityCategories"}},{"name":"force","getter_name":"force","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"level","getter_name":"level","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityLevel.values)","dart_type_name":"ActivityLevel"}},{"name":"mechanic","getter_name":"mechanic","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMechanic.values)","dart_type_name":"ActivityMechanic"}},{"name":"equipment","getter_name":"equipment","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityEquipment.values)","dart_type_name":"ActivityEquipment"}},{"name":"primary_muscles","getter_name":"primaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"secondary_muscles","getter_name":"secondaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[0,1],"type":"table","data":{"name":"session_activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"results","getter_name":"results","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":3,"references":[],"type":"table","data":{"name":"actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_sets","getter_name":"totalSets","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_reps","getter_name":"totalReps","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":1,"max":32}}]},{"name":"rest_before_sets","getter_name":"restBeforeSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_sets","getter_name":"restBetweenSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_sets","getter_name":"restAfterSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_weights","getter_name":"repWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'pending\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActionStatus.values)","dart_type_name":"ActionStatus"}},{"name":"state","getter_name":"state","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'{\"currentSet\": 0, \"currentRep\": 0, \"currentActionType\": 0, \"currentTime\": 0, \"currentAction\": 0}\\'')","default_client_dart":null,"dsl_features":[]},{"name":"set","getter_name":"set","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":4,"references":[1,3,0],"type":"table","data":{"name":"activity_actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"action_id","getter_name":"actionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES actions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES actions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":5,"references":[],"type":"table","data":{"name":"media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"reference","getter_name":"reference","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(MediaType.values)","dart_type_name":"MediaType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":6,"references":[5],"type":"table","data":{"name":"object_media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"object_id","getter_name":"objectId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"object_type","getter_name":"objectType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ObjectType.values)","dart_type_name":"ObjectType"}},{"name":"media_id","getter_name":"mediaId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES media_items (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES media_items (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1739308481')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}}]} \ No newline at end of file diff --git a/lib/database/drift_schemas/sendtrain/drift_schema_v37.json b/lib/database/drift_schemas/sendtrain/drift_schema_v37.json new file mode 100644 index 0000000..9fbaf70 --- /dev/null +++ b/lib/database/drift_schemas/sendtrain/drift_schema_v37.json @@ -0,0 +1 @@ +{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"sessions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"body","getter_name":"content","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(SessionStatus.values)","dart_type_name":"SessionStatus"}},{"name":"achievements","getter_name":"achievements","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"address","getter_name":"address","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":256}}]},{"name":"date","getter_name":"date","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[],"type":"table","data":{"name":"activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":100}}]},{"name":"type","getter_name":"type","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityType.values)","dart_type_name":"ActivityType"}},{"name":"body","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityCategories.values)","dart_type_name":"ActivityCategories"}},{"name":"force","getter_name":"force","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"level","getter_name":"level","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityLevel.values)","dart_type_name":"ActivityLevel"}},{"name":"mechanic","getter_name":"mechanic","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMechanic.values)","dart_type_name":"ActivityMechanic"}},{"name":"equipment","getter_name":"equipment","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityEquipment.values)","dart_type_name":"ActivityEquipment"}},{"name":"primary_muscles","getter_name":"primaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"secondary_muscles","getter_name":"secondaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[0,1],"type":"table","data":{"name":"session_activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"results","getter_name":"results","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":3,"references":[],"type":"table","data":{"name":"actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_sets","getter_name":"totalSets","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_reps","getter_name":"totalReps","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":1,"max":32}}]},{"name":"rest_before_sets","getter_name":"restBeforeSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_sets","getter_name":"restBetweenSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_sets","getter_name":"restAfterSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_weights","getter_name":"repWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'pending\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActionStatus.values)","dart_type_name":"ActionStatus"}},{"name":"state","getter_name":"state","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'{\"currentSet\": 0, \"currentRep\": 0, \"currentActionType\": 0, \"currentTime\": 0, \"currentAction\": 0}\\'')","default_client_dart":null,"dsl_features":[]},{"name":"set","getter_name":"set","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":4,"references":[3],"type":"table","data":{"name":"sets","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"reps","getter_name":"reps","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"action_id","getter_name":"actionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES actions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES actions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"rest_before_set","getter_name":"restBeforeSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_set","getter_name":"restAfterSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":5,"references":[4,0],"type":"table","data":{"name":"session_sets","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"set_id","getter_name":"setId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sets (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sets (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":6,"references":[1,3,0],"type":"table","data":{"name":"activity_actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"action_id","getter_name":"actionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES actions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES actions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":7,"references":[],"type":"table","data":{"name":"media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"reference","getter_name":"reference","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(MediaType.values)","dart_type_name":"MediaType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":8,"references":[7],"type":"table","data":{"name":"object_media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"object_id","getter_name":"objectId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"object_type","getter_name":"objectType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ObjectType.values)","dart_type_name":"ObjectType"}},{"name":"media_id","getter_name":"mediaId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES media_items (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES media_items (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744074941')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}}]} \ No newline at end of file diff --git a/lib/database/drift_schemas/sendtrain/drift_schema_v39.json b/lib/database/drift_schemas/sendtrain/drift_schema_v39.json new file mode 100644 index 0000000..a7bda91 --- /dev/null +++ b/lib/database/drift_schemas/sendtrain/drift_schema_v39.json @@ -0,0 +1 @@ +{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"sessions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"body","getter_name":"content","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(SessionStatus.values)","dart_type_name":"SessionStatus"}},{"name":"achievements","getter_name":"achievements","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"address","getter_name":"address","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":256}}]},{"name":"date","getter_name":"date","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[],"type":"table","data":{"name":"activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":100}}]},{"name":"type","getter_name":"type","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityType.values)","dart_type_name":"ActivityType"}},{"name":"body","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityCategories.values)","dart_type_name":"ActivityCategories"}},{"name":"force","getter_name":"force","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"level","getter_name":"level","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityLevel.values)","dart_type_name":"ActivityLevel"}},{"name":"mechanic","getter_name":"mechanic","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMechanic.values)","dart_type_name":"ActivityMechanic"}},{"name":"equipment","getter_name":"equipment","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityEquipment.values)","dart_type_name":"ActivityEquipment"}},{"name":"primary_muscles","getter_name":"primaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"secondary_muscles","getter_name":"secondaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[0,1],"type":"table","data":{"name":"session_activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"results","getter_name":"results","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":3,"references":[1],"type":"table","data":{"name":"action_sets","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"reps","getter_name":"reps","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"rest_before_set","getter_name":"restBeforeSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_set","getter_name":"restAfterSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":4,"references":[3,0],"type":"table","data":{"name":"session_sets","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"set_id","getter_name":"setId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES action_sets (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES action_sets (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":5,"references":[],"type":"table","data":{"name":"actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_sets","getter_name":"totalSets","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_reps","getter_name":"totalReps","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":1,"max":32}}]},{"name":"rest_before_sets","getter_name":"restBeforeSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_sets","getter_name":"restBetweenSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_sets","getter_name":"restAfterSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_weights","getter_name":"repWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'pending\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActionStatus.values)","dart_type_name":"ActionStatus"}},{"name":"state","getter_name":"state","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'{\"currentSet\": 0, \"currentRep\": 0, \"currentActionType\": 0, \"currentTime\": 0, \"currentAction\": 0}\\'')","default_client_dart":null,"dsl_features":[]},{"name":"set","getter_name":"set","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":6,"references":[1,5,0],"type":"table","data":{"name":"activity_actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"action_id","getter_name":"actionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES actions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES actions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":7,"references":[],"type":"table","data":{"name":"media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"reference","getter_name":"reference","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(MediaType.values)","dart_type_name":"MediaType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":8,"references":[7],"type":"table","data":{"name":"object_media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"object_id","getter_name":"objectId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"object_type","getter_name":"objectType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ObjectType.values)","dart_type_name":"ObjectType"}},{"name":"media_id","getter_name":"mediaId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES media_items (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES media_items (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744139454')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}}]} \ No newline at end of file diff --git a/lib/database/drift_schemas/sendtrain/drift_schema_v40.json b/lib/database/drift_schemas/sendtrain/drift_schema_v40.json new file mode 100644 index 0000000..e96f423 --- /dev/null +++ b/lib/database/drift_schemas/sendtrain/drift_schema_v40.json @@ -0,0 +1 @@ +{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"sessions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"body","getter_name":"content","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(SessionStatus.values)","dart_type_name":"SessionStatus"}},{"name":"achievements","getter_name":"achievements","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"address","getter_name":"address","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":256}}]},{"name":"date","getter_name":"date","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[],"type":"table","data":{"name":"activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":100}}]},{"name":"type","getter_name":"type","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityType.values)","dart_type_name":"ActivityType"}},{"name":"body","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityCategories.values)","dart_type_name":"ActivityCategories"}},{"name":"force","getter_name":"force","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"level","getter_name":"level","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityLevel.values)","dart_type_name":"ActivityLevel"}},{"name":"mechanic","getter_name":"mechanic","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMechanic.values)","dart_type_name":"ActivityMechanic"}},{"name":"equipment","getter_name":"equipment","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityEquipment.values)","dart_type_name":"ActivityEquipment"}},{"name":"primary_muscles","getter_name":"primaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"secondary_muscles","getter_name":"secondaryMuscles","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActivityMuscle.values)","dart_type_name":"ActivityMuscle"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[0,1],"type":"table","data":{"name":"session_activities","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"results","getter_name":"results","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":3,"references":[1,0],"type":"table","data":{"name":"action_sets","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":32}}]},{"name":"reps","getter_name":"reps","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"rest_before_set","getter_name":"restBeforeSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_set","getter_name":"restAfterSet","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":4,"references":[],"type":"table","data":{"name":"actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_sets","getter_name":"totalSets","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"total_reps","getter_name":"totalReps","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":1,"max":32}}]},{"name":"rest_before_sets","getter_name":"restBeforeSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_sets","getter_name":"restBetweenSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_between_reps","getter_name":"restBetweenReps","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rest_after_sets","getter_name":"restAfterSets","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_type","getter_name":"repType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(RepType.values)","dart_type_name":"RepType"}},{"name":"rep_length","getter_name":"repLength","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"rep_weights","getter_name":"repWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"set_weights","getter_name":"setWeights","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_alternating","getter_name":"isAlternating","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"is_alternating\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"is_alternating\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"tempo","getter_name":"tempo","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":6,"max":36}}]},{"name":"status","getter_name":"status","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'pending\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ActionStatus.values)","dart_type_name":"ActionStatus"}},{"name":"state","getter_name":"state","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'{\"currentSet\": 0, \"currentRep\": 0, \"currentActionType\": 0, \"currentTime\": 0, \"currentAction\": 0}\\'')","default_client_dart":null,"dsl_features":[]},{"name":"set","getter_name":"set","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":5,"references":[1,4,0],"type":"table","data":{"name":"activity_actions","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"activity_id","getter_name":"activityId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES activities (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES activities (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"action_id","getter_name":"actionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES actions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES actions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"session_id","getter_name":"sessionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES sessions (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES sessions (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"position","getter_name":"position","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":6,"references":[],"type":"table","data":{"name":"media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[{"allowed-lengths":{"min":3,"max":64}}]},{"name":"body","getter_name":"description","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"reference","getter_name":"reference","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"type","getter_name":"type","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(MediaType.values)","dart_type_name":"MediaType"}},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":7,"references":[6],"type":"table","data":{"name":"object_media_items","was_declared_in_moor":false,"columns":[{"name":"id","getter_name":"id","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"object_id","getter_name":"objectId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"object_type","getter_name":"objectType","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(ObjectType.values)","dart_type_name":"ObjectType"}},{"name":"media_id","getter_name":"mediaId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES media_items (id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES media_items (id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unknown"]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1744140262')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}}]} \ No newline at end of file diff --git a/lib/database/seed.dart b/lib/database/seed.dart index 73f5089..8cead80 100644 --- a/lib/database/seed.dart +++ b/lib/database/seed.dart @@ -66,18 +66,15 @@ Future seedDb(AppDatabase database) async { if (exercise['images'] != null) { for (int j = 0; j < exercise['images'].length; j++) { var image = exercise['images'][j]; - images.add( - "https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/$image"); + images.add(image); } } Map payload = { Symbol('title'): Value( exercise['name'].toString().trim().replaceAll(whitespaceRE, " ")), - Symbol('description'): Value(json.encode(exercise['instructions'] - .toString() - .trim() - .replaceAll(whitespaceRE, " "))), + Symbol('description'): + Value(json.encode(exercise['instructions'])), Symbol('force'): Value(exercise['force'] ?? "") }; @@ -163,72 +160,100 @@ Future seedDb(AppDatabase database) async { "[\"achievement 1\", \"achievement 2\", \"achievement 3\"]"), date: Value(DateTime.now()))) .then((sessionId) async { - // activities things - for (int j = 0; j <= random.nextInt(totalActivities); j++) { - int activityId = random.nextInt(activityIds.length); - activityIds.removeAt(activityId); + //session actions + int activityId = random.nextInt(activityIds.length); - await database - .into(database.sessionActivities) - .insert(SessionActivitiesCompanion.insert( - sessionId: sessionId, - activityId: activityId, - position: j, - results: Value("results json, will need to test"), - )); + for (int i = 0; i < 5; i += 1) { + int restBefore = 0; + int restAfter = 300000; - // actions - // await database - // .into(database.actions) - // .insert(ActionsCompanion.insert( - // title: 'Test action', - // description: - // 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.', - // totalSets: 5, - // totalReps: "[1]", - // restBeforeSets: Value(30000), - // restBetweenSets: Value(300000), - // restBetweenReps: Value(15000), - // restAfterSets: Value(300000), - // repType: RepType.time, - // repLength: Value(10000), - // repWeights: Value("[110]"), - // setWeights: Value("[1]"), - // isAlternating: Value(true), - // set: actionTypes[random.nextInt(actionTypes.length)])) - // .then((actionId) async { - // // add activity action association - // await database.into(database.activityActions).insert( - // ActivityActionsCompanion.insert( - // activityId: activityId, actionId: actionId, sessionId: sessionId, position: 0)); - // }); - // for (int k = 0; k <= random.nextInt(totalActions); k++) { - // await database - // .into(database.actions) - // .insert(ActionsCompanion.insert( - // title: 'Test action $k', - // description: - // '$k Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.', - // totalSets: 5, - // totalReps: "[1]", - // restBeforeSets: Value(30000), - // restBetweenSets: Value(300000), - // restBetweenReps: Value(15000), - // restAfterSets: Value(300000), - // repType: RepType.time, - // repLength: Value(10000), - // repWeights: Value("[110]"), - // setWeights: Value("[1]"), - // isAlternating: Value(true), - // set: actionTypes[random.nextInt(actionTypes.length)])) - // .then((actionId) async { - // // add activity action association - // await database.into(database.activityActions).insert( - // ActivityActionsCompanion.insert( - // activityId: activityId, actionId: actionId, position: k)); - // }); - // } + if (i == 0) { + restBefore = 30000; + } + + await database.into(database.actionSets).insert( + ActionSetsCompanion.insert( + name: 'test set', + reps: 5, + activityId: activityId, + repType: RepType.time, + isAlternating: Value(true), + restBeforeSet: Value(restBefore), + restAfterSet: Value(restAfter), + restBetweenReps: Value(10000), + repLength: Value(10000), + setWeights: Value('[100]'), + tempo: Value('[3000,2000,1000]'), + sessionId: sessionId, + position: i)); } + // SessionSetsCompanion.insert() + // activities things + // for (int j = 0; j <= random.nextInt(totalActivities); j++) { + // int activityId = random.nextInt(activityIds.length); + // activityIds.removeAt(activityId); + + // await database + // .into(database.sessionActivities) + // .insert(SessionActivitiesCompanion.insert( + // sessionId: sessionId, + // activityId: activityId, + // position: j, + // results: Value("results json, will need to test"), + // )); + + // // actions + // // await database + // // .into(database.actions) + // // .insert(ActionsCompanion.insert( + // // title: 'Test action', + // // description: + // // 'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.', + // // totalSets: 5, + // // totalReps: "[1]", + // // restBeforeSets: Value(30000), + // // restBetweenSets: Value(300000), + // // restBetweenReps: Value(15000), + // // restAfterSets: Value(300000), + // // repType: RepType.time, + // // repLength: Value(10000), + // // repWeights: Value("[110]"), + // // setWeights: Value("[1]"), + // // isAlternating: Value(true), + // // set: actionTypes[random.nextInt(actionTypes.length)])) + // // .then((actionId) async { + // // // add activity action association + // // await database.into(database.activityActions).insert( + // // ActivityActionsCompanion.insert( + // // activityId: activityId, actionId: actionId, sessionId: sessionId, position: 0)); + // // }); + // // for (int k = 0; k <= random.nextInt(totalActions); k++) { + // // await database + // // .into(database.actions) + // // .insert(ActionsCompanion.insert( + // // title: 'Test action $k', + // // description: + // // '$k Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.', + // // totalSets: 5, + // // totalReps: "[1]", + // // restBeforeSets: Value(30000), + // // restBetweenSets: Value(300000), + // // restBetweenReps: Value(15000), + // // restAfterSets: Value(300000), + // // repType: RepType.time, + // // repLength: Value(10000), + // // repWeights: Value("[110]"), + // // setWeights: Value("[1]"), + // // isAlternating: Value(true), + // // set: actionTypes[random.nextInt(actionTypes.length)])) + // // .then((actionId) async { + // // // add activity action association + // // await database.into(database.activityActions).insert( + // // ActivityActionsCompanion.insert( + // // activityId: activityId, actionId: actionId, position: k)); + // // }); + // // } + // } for (int n = 0; n <= random.nextInt(totalMedia); n++) { final mediaItem = mediaItems[random.nextInt(mediaItems.length)]; diff --git a/lib/helpers/media_helpers.dart b/lib/helpers/media_helpers.dart index 6e93f58..22379f9 100644 --- a/lib/helpers/media_helpers.dart +++ b/lib/helpers/media_helpers.dart @@ -6,7 +6,23 @@ ImageProvider findMediaByType(List media, MediaType type) { Image image; if (found.isNotEmpty) { - image = Image.network(found.first.reference); + image = Image.network('https://test.com/image.jpg', loadingBuilder: + (BuildContext context, Widget child, ImageChunkEvent? loadingProgress) { + print('loading'); + print(loadingProgress); + if (loadingProgress == null) return child; + return Center( + child: CircularProgressIndicator( + value: loadingProgress.expectedTotalBytes != null + ? loadingProgress.cumulativeBytesLoaded / + loadingProgress.expectedTotalBytes! + : null, + ), + ); + }, errorBuilder: (context, error, stackTrace) { + print('error'); + return Image.asset('assets/images/placeholder.jpg'); + }); } else { // Element is not found image = Image.asset('assets/images/placeholder.jpg'); diff --git a/lib/main.dart b/lib/main.dart index 0965839..6c79b4f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,7 +4,7 @@ import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/helpers/widget_helpers.dart'; import 'package:sendtrain/models/activity_timer_model.dart'; import 'package:sendtrain/providers/action_timer.dart'; -import 'package:sendtrain/widgets/screens/activities_screen.dart'; +// import 'package:sendtrain/widgets/screens/activities_screen.dart'; import 'package:sendtrain/widgets/screens/sessions_screen.dart'; // ignore: unused_import import 'package:sendtrain/database/seed.dart'; @@ -66,7 +66,7 @@ class _AppState extends State { padding: const EdgeInsets.fromLTRB(0, 50, 0, 0), child: [ SessionsScreen(), - const ActivitiesScreen(), + // const ActivitiesScreen(), Container( alignment: Alignment.center, child: const Text('In Progress...'), @@ -94,9 +94,9 @@ class _AppState extends State { destinations: const [ NavigationDestination( icon: Icon(Icons.sports), label: "Sessions"), - NavigationDestination( - icon: Icon(Icons.sports_gymnastics_rounded), - label: "Activities"), + // NavigationDestination( + // icon: Icon(Icons.sports_gymnastics_rounded), + // label: "Activities"), NavigationDestination( icon: Icon(Icons.calendar_month_rounded), label: "Plan"), NavigationDestination( diff --git a/lib/widgets/media/media_card.dart b/lib/widgets/media/media_card.dart index eed627f..7624770 100644 --- a/lib/widgets/media/media_card.dart +++ b/lib/widgets/media/media_card.dart @@ -17,19 +17,45 @@ class MediaCard extends StatelessWidget { @override Widget build(BuildContext context) { - DecorationImage mediaImage(MediaItem media) { - dynamic image; + mediaImage(MediaItem media) { + Image image = Image.asset('assets/images/placeholder.jpg'); if (media.type == MediaType.image || media.type == MediaType.location) { - image = NetworkImage(media.reference); + image = Image.network(media.reference, loadingBuilder: + (BuildContext context, Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) return child; + return Text('WTF!!!!'); + // return Center( + // child: CircularProgressIndicator( + // value: loadingProgress.expectedTotalBytes != null + // ? loadingProgress.cumulativeBytesLoaded / + // loadingProgress.expectedTotalBytes! + // : null, + // ), + // ); + }); } else if (media.type == MediaType.localImage) { - image = Image.memory(base64Decode(media.reference)).image; + image = Image.memory(base64Decode(media.reference)); } else if (media.type == MediaType.youtube) { image = - NetworkImage('https://img.youtube.com/vi/${media.reference}/0.jpg'); - } else if (media.type == MediaType.localVideo) {} + Image.network('https://img.youtube.com/vi/${media.reference}/0.jpg', + loadingBuilder: (BuildContext context, Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) return child; + return Text('WTF!!!!'); + // return Center( + // child: CircularProgressIndicator( + // value: loadingProgress.expectedTotalBytes != null + // ? loadingProgress.cumulativeBytesLoaded / + // loadingProgress.expectedTotalBytes! + // : null, + // ), + // ); + }); + } //else if (media.type == MediaType.localVideo) {} - return DecorationImage(image: image, fit: BoxFit.cover); + return DecorationImage(image: image.image, fit: BoxFit.cover); } return Container( diff --git a/lib/widgets/sessions/session_view.dart b/lib/widgets/sessions/session_view.dart index df29aa1..cd06f1d 100644 --- a/lib/widgets/sessions/session_view.dart +++ b/lib/widgets/sessions/session_view.dart @@ -13,6 +13,7 @@ import 'package:sendtrain/widgets/generic/elements/generic_progress_indicator.da import 'package:sendtrain/widgets/sessions/session_activities_editor.dart'; import 'package:sendtrain/widgets/sessions/session_editor.dart'; import 'package:sendtrain/widgets/sessions/session_view_achievements.dart'; +import 'package:sendtrain/widgets/sessions/session_view_actions.dart'; import 'package:sendtrain/widgets/sessions/session_view_activities.dart'; import 'package:sendtrain/widgets/sessions/session_view_media.dart'; @@ -178,13 +179,20 @@ class _SessionViewState extends State { fontSize: 20, fontWeight: FontWeight.bold), 'Media:')), SessionViewMedia(session: session), + // const Padding( + // padding: EdgeInsets.fromLTRB(15, 30, 0, 10), + // child: Text( + // style: TextStyle( + // fontSize: 20, fontWeight: FontWeight.bold), + // 'Activites:')), + // SessionViewActivities(session: session), const Padding( padding: EdgeInsets.fromLTRB(15, 30, 0, 10), child: Text( style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold), - 'Activites:')), - SessionViewActivities(session: session), + 'Actions:')), + SessionViewActions(session: session) ], )); } else { diff --git a/lib/widgets/sessions/session_view_actions.dart b/lib/widgets/sessions/session_view_actions.dart new file mode 100644 index 0000000..4529c79 --- /dev/null +++ b/lib/widgets/sessions/session_view_actions.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; +import 'package:sendtrain/daos/action_sets_dao.dart'; +import 'package:sendtrain/database/database.dart'; + +class SessionViewActions extends StatelessWidget { + SessionViewActions({super.key, required this.session}); + + final Session session; + + // final List actions; + final ItemScrollController itemScrollController = ItemScrollController(); + final ScrollOffsetController scrollOffsetController = + ScrollOffsetController(); + final ItemPositionsListener itemPositionsListener = + ItemPositionsListener.create(); + final ScrollOffsetListener scrollOffsetListener = + ScrollOffsetListener.create(); + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: ActionSetsDao(Provider.of(context)) + .fromSession(session), + builder: (context, snapshot) { + if (snapshot.hasData) { + List actionSets = snapshot.data! as List; + + return Text(actionSets.first.name); + } else { + return Container( + alignment: Alignment.center, + child: SizedBox( + height: 50.0, + width: 50.0, + child: CircularProgressIndicator(), + )); + } + }); + } +} diff --git a/test/drift/sendtrain/generated/schema.dart b/test/drift/sendtrain/generated/schema.dart index a356905..5e9e345 100644 --- a/test/drift/sendtrain/generated/schema.dart +++ b/test/drift/sendtrain/generated/schema.dart @@ -7,6 +7,11 @@ import 'schema_v1.dart' as v1; import 'schema_v2.dart' as v2; import 'schema_v3.dart' as v3; import 'schema_v4.dart' as v4; +import 'schema_v5.dart' as v5; +import 'schema_v6.dart' as v6; +import 'schema_v7.dart' as v7; +import 'schema_v8.dart' as v8; +import 'schema_v9.dart' as v9; import 'schema_v10.dart' as v10; import 'schema_v11.dart' as v11; import 'schema_v12.dart' as v12; @@ -17,11 +22,6 @@ import 'schema_v16.dart' as v16; import 'schema_v17.dart' as v17; import 'schema_v18.dart' as v18; import 'schema_v19.dart' as v19; -import 'schema_v5.dart' as v5; -import 'schema_v6.dart' as v6; -import 'schema_v7.dart' as v7; -import 'schema_v8.dart' as v8; -import 'schema_v9.dart' as v9; import 'schema_v20.dart' as v20; import 'schema_v21.dart' as v21; import 'schema_v22.dart' as v22; @@ -38,6 +38,10 @@ import 'schema_v32.dart' as v32; import 'schema_v33.dart' as v33; import 'schema_v34.dart' as v34; import 'schema_v35.dart' as v35; +import 'schema_v36.dart' as v36; +import 'schema_v37.dart' as v37; +import 'schema_v39.dart' as v39; +import 'schema_v40.dart' as v40; class GeneratedHelper implements SchemaInstantiationHelper { @override @@ -51,6 +55,16 @@ class GeneratedHelper implements SchemaInstantiationHelper { return v3.DatabaseAtV3(db); case 4: return v4.DatabaseAtV4(db); + case 5: + return v5.DatabaseAtV5(db); + case 6: + return v6.DatabaseAtV6(db); + case 7: + return v7.DatabaseAtV7(db); + case 8: + return v8.DatabaseAtV8(db); + case 9: + return v9.DatabaseAtV9(db); case 10: return v10.DatabaseAtV10(db); case 11: @@ -71,16 +85,6 @@ class GeneratedHelper implements SchemaInstantiationHelper { return v18.DatabaseAtV18(db); case 19: return v19.DatabaseAtV19(db); - case 5: - return v5.DatabaseAtV5(db); - case 6: - return v6.DatabaseAtV6(db); - case 7: - return v7.DatabaseAtV7(db); - case 8: - return v8.DatabaseAtV8(db); - case 9: - return v9.DatabaseAtV9(db); case 20: return v20.DatabaseAtV20(db); case 21: @@ -113,6 +117,14 @@ class GeneratedHelper implements SchemaInstantiationHelper { return v34.DatabaseAtV34(db); case 35: return v35.DatabaseAtV35(db); + case 36: + return v36.DatabaseAtV36(db); + case 37: + return v37.DatabaseAtV37(db); + case 39: + return v39.DatabaseAtV39(db); + case 40: + return v40.DatabaseAtV40(db); default: throw MissingSchemaException(version, versions); } @@ -153,6 +165,10 @@ class GeneratedHelper implements SchemaInstantiationHelper { 32, 33, 34, - 35 + 35, + 36, + 37, + 39, + 40 ]; } diff --git a/test/drift/sendtrain/generated/schema_v36.dart b/test/drift/sendtrain/generated/schema_v36.dart new file mode 100644 index 0000000..c21c6e7 --- /dev/null +++ b/test/drift/sendtrain/generated/schema_v36.dart @@ -0,0 +1,2733 @@ +// dart format width=80 +// GENERATED CODE, DO NOT EDIT BY HAND. +// ignore_for_file: type=lint +import 'package:drift/drift.dart'; + +class Sessions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Sessions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn achievements = GeneratedColumn( + 'achievements', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn address = GeneratedColumn( + 'address', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 256), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn date = GeneratedColumn( + 'date', aliasedName, true, + type: DriftSqlType.dateTime, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => + [id, title, content, status, achievements, address, date, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'sessions'; + @override + Set get $primaryKey => {id}; + @override + SessionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + achievements: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}achievements']), + address: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}address']), + date: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}date']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Sessions createAlias(String alias) { + return Sessions(attachedDatabase, alias); + } +} + +class SessionsData extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final String status; + final String? achievements; + final String? address; + final DateTime? date; + final DateTime createdAt; + const SessionsData( + {required this.id, + required this.title, + required this.content, + required this.status, + this.achievements, + this.address, + this.date, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + map['status'] = Variable(status); + if (!nullToAbsent || achievements != null) { + map['achievements'] = Variable(achievements); + } + if (!nullToAbsent || address != null) { + map['address'] = Variable(address); + } + if (!nullToAbsent || date != null) { + map['date'] = Variable(date); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionsCompanion toCompanion(bool nullToAbsent) { + return SessionsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + status: Value(status), + achievements: achievements == null && nullToAbsent + ? const Value.absent() + : Value(achievements), + address: address == null && nullToAbsent + ? const Value.absent() + : Value(address), + date: date == null && nullToAbsent ? const Value.absent() : Value(date), + createdAt: Value(createdAt), + ); + } + + factory SessionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + status: serializer.fromJson(json['status']), + achievements: serializer.fromJson(json['achievements']), + address: serializer.fromJson(json['address']), + date: serializer.fromJson(json['date']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'status': serializer.toJson(status), + 'achievements': serializer.toJson(achievements), + 'address': serializer.toJson(address), + 'date': serializer.toJson(date), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionsData copyWith( + {int? id, + String? title, + String? content, + String? status, + Value achievements = const Value.absent(), + Value address = const Value.absent(), + Value date = const Value.absent(), + DateTime? createdAt}) => + SessionsData( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: + achievements.present ? achievements.value : this.achievements, + address: address.present ? address.value : this.address, + date: date.present ? date.value : this.date, + createdAt: createdAt ?? this.createdAt, + ); + SessionsData copyWithCompanion(SessionsCompanion data) { + return SessionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + status: data.status.present ? data.status.value : this.status, + achievements: data.achievements.present + ? data.achievements.value + : this.achievements, + address: data.address.present ? data.address.value : this.address, + date: data.date.present ? data.date.value : this.date, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, title, content, status, achievements, address, date, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionsData && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.status == this.status && + other.achievements == this.achievements && + other.address == this.address && + other.date == this.date && + other.createdAt == this.createdAt); +} + +class SessionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value status; + final Value achievements; + final Value address; + final Value date; + final Value createdAt; + const SessionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.status = const Value.absent(), + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + required String status, + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title), + content = Value(content), + status = Value(status); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? status, + Expression? achievements, + Expression? address, + Expression? date, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (status != null) 'status': status, + if (achievements != null) 'achievements': achievements, + if (address != null) 'address': address, + if (date != null) 'date': date, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? status, + Value? achievements, + Value? address, + Value? date, + Value? createdAt}) { + return SessionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: achievements ?? this.achievements, + address: address ?? this.address, + date: date ?? this.date, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (achievements.present) { + map['achievements'] = Variable(achievements.value); + } + if (address.present) { + map['address'] = Variable(address.value); + } + if (date.present) { + map['date'] = Variable(date.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Activities extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Activities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 100), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn force = GeneratedColumn( + 'force', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn level = GeneratedColumn( + 'level', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn mechanic = GeneratedColumn( + 'mechanic', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn equipment = GeneratedColumn( + 'equipment', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn primaryMuscles = GeneratedColumn( + 'primary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn secondaryMuscles = GeneratedColumn( + 'secondary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => [ + id, + title, + type, + description, + category, + force, + level, + mechanic, + equipment, + primaryMuscles, + secondaryMuscles, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activities'; + @override + Set get $primaryKey => {id}; + @override + ActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type']), + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body']), + category: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}category']), + force: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}force']), + level: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}level']), + mechanic: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}mechanic']), + equipment: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}equipment']), + primaryMuscles: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}primary_muscles']), + secondaryMuscles: attachedDatabase.typeMapping.read( + DriftSqlType.string, data['${effectivePrefix}secondary_muscles']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Activities createAlias(String alias) { + return Activities(attachedDatabase, alias); + } +} + +class ActivitiesData extends DataClass implements Insertable { + final int id; + final String title; + final String? type; + final String? description; + final String? category; + final String? force; + final String? level; + final String? mechanic; + final String? equipment; + final String? primaryMuscles; + final String? secondaryMuscles; + final DateTime createdAt; + const ActivitiesData( + {required this.id, + required this.title, + this.type, + this.description, + this.category, + this.force, + this.level, + this.mechanic, + this.equipment, + this.primaryMuscles, + this.secondaryMuscles, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + if (!nullToAbsent || type != null) { + map['type'] = Variable(type); + } + if (!nullToAbsent || description != null) { + map['body'] = Variable(description); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + if (!nullToAbsent || force != null) { + map['force'] = Variable(force); + } + if (!nullToAbsent || level != null) { + map['level'] = Variable(level); + } + if (!nullToAbsent || mechanic != null) { + map['mechanic'] = Variable(mechanic); + } + if (!nullToAbsent || equipment != null) { + map['equipment'] = Variable(equipment); + } + if (!nullToAbsent || primaryMuscles != null) { + map['primary_muscles'] = Variable(primaryMuscles); + } + if (!nullToAbsent || secondaryMuscles != null) { + map['secondary_muscles'] = Variable(secondaryMuscles); + } + map['created_at'] = Variable(createdAt); + return map; + } + + ActivitiesCompanion toCompanion(bool nullToAbsent) { + return ActivitiesCompanion( + id: Value(id), + title: Value(title), + type: type == null && nullToAbsent ? const Value.absent() : Value(type), + description: description == null && nullToAbsent + ? const Value.absent() + : Value(description), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + force: + force == null && nullToAbsent ? const Value.absent() : Value(force), + level: + level == null && nullToAbsent ? const Value.absent() : Value(level), + mechanic: mechanic == null && nullToAbsent + ? const Value.absent() + : Value(mechanic), + equipment: equipment == null && nullToAbsent + ? const Value.absent() + : Value(equipment), + primaryMuscles: primaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(primaryMuscles), + secondaryMuscles: secondaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(secondaryMuscles), + createdAt: Value(createdAt), + ); + } + + factory ActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivitiesData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + type: serializer.fromJson(json['type']), + description: serializer.fromJson(json['description']), + category: serializer.fromJson(json['category']), + force: serializer.fromJson(json['force']), + level: serializer.fromJson(json['level']), + mechanic: serializer.fromJson(json['mechanic']), + equipment: serializer.fromJson(json['equipment']), + primaryMuscles: serializer.fromJson(json['primaryMuscles']), + secondaryMuscles: serializer.fromJson(json['secondaryMuscles']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'type': serializer.toJson(type), + 'description': serializer.toJson(description), + 'category': serializer.toJson(category), + 'force': serializer.toJson(force), + 'level': serializer.toJson(level), + 'mechanic': serializer.toJson(mechanic), + 'equipment': serializer.toJson(equipment), + 'primaryMuscles': serializer.toJson(primaryMuscles), + 'secondaryMuscles': serializer.toJson(secondaryMuscles), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivitiesData copyWith( + {int? id, + String? title, + Value type = const Value.absent(), + Value description = const Value.absent(), + Value category = const Value.absent(), + Value force = const Value.absent(), + Value level = const Value.absent(), + Value mechanic = const Value.absent(), + Value equipment = const Value.absent(), + Value primaryMuscles = const Value.absent(), + Value secondaryMuscles = const Value.absent(), + DateTime? createdAt}) => + ActivitiesData( + id: id ?? this.id, + title: title ?? this.title, + type: type.present ? type.value : this.type, + description: description.present ? description.value : this.description, + category: category.present ? category.value : this.category, + force: force.present ? force.value : this.force, + level: level.present ? level.value : this.level, + mechanic: mechanic.present ? mechanic.value : this.mechanic, + equipment: equipment.present ? equipment.value : this.equipment, + primaryMuscles: + primaryMuscles.present ? primaryMuscles.value : this.primaryMuscles, + secondaryMuscles: secondaryMuscles.present + ? secondaryMuscles.value + : this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + ActivitiesData copyWithCompanion(ActivitiesCompanion data) { + return ActivitiesData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + type: data.type.present ? data.type.value : this.type, + description: + data.description.present ? data.description.value : this.description, + category: data.category.present ? data.category.value : this.category, + force: data.force.present ? data.force.value : this.force, + level: data.level.present ? data.level.value : this.level, + mechanic: data.mechanic.present ? data.mechanic.value : this.mechanic, + equipment: data.equipment.present ? data.equipment.value : this.equipment, + primaryMuscles: data.primaryMuscles.present + ? data.primaryMuscles.value + : this.primaryMuscles, + secondaryMuscles: data.secondaryMuscles.present + ? data.secondaryMuscles.value + : this.secondaryMuscles, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivitiesData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, type, description, category, force, + level, mechanic, equipment, primaryMuscles, secondaryMuscles, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivitiesData && + other.id == this.id && + other.title == this.title && + other.type == this.type && + other.description == this.description && + other.category == this.category && + other.force == this.force && + other.level == this.level && + other.mechanic == this.mechanic && + other.equipment == this.equipment && + other.primaryMuscles == this.primaryMuscles && + other.secondaryMuscles == this.secondaryMuscles && + other.createdAt == this.createdAt); +} + +class ActivitiesCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value type; + final Value description; + final Value category; + final Value force; + final Value level; + final Value mechanic; + final Value equipment; + final Value primaryMuscles; + final Value secondaryMuscles; + final Value createdAt; + const ActivitiesCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivitiesCompanion.insert({ + this.id = const Value.absent(), + required String title, + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? type, + Expression? description, + Expression? category, + Expression? force, + Expression? level, + Expression? mechanic, + Expression? equipment, + Expression? primaryMuscles, + Expression? secondaryMuscles, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (type != null) 'type': type, + if (description != null) 'body': description, + if (category != null) 'category': category, + if (force != null) 'force': force, + if (level != null) 'level': level, + if (mechanic != null) 'mechanic': mechanic, + if (equipment != null) 'equipment': equipment, + if (primaryMuscles != null) 'primary_muscles': primaryMuscles, + if (secondaryMuscles != null) 'secondary_muscles': secondaryMuscles, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivitiesCompanion copyWith( + {Value? id, + Value? title, + Value? type, + Value? description, + Value? category, + Value? force, + Value? level, + Value? mechanic, + Value? equipment, + Value? primaryMuscles, + Value? secondaryMuscles, + Value? createdAt}) { + return ActivitiesCompanion( + id: id ?? this.id, + title: title ?? this.title, + type: type ?? this.type, + description: description ?? this.description, + category: category ?? this.category, + force: force ?? this.force, + level: level ?? this.level, + mechanic: mechanic ?? this.mechanic, + equipment: equipment ?? this.equipment, + primaryMuscles: primaryMuscles ?? this.primaryMuscles, + secondaryMuscles: secondaryMuscles ?? this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + if (force.present) { + map['force'] = Variable(force.value); + } + if (level.present) { + map['level'] = Variable(level.value); + } + if (mechanic.present) { + map['mechanic'] = Variable(mechanic.value); + } + if (equipment.present) { + map['equipment'] = Variable(equipment.value); + } + if (primaryMuscles.present) { + map['primary_muscles'] = Variable(primaryMuscles.value); + } + if (secondaryMuscles.present) { + map['secondary_muscles'] = Variable(secondaryMuscles.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivitiesCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionActivities extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionActivities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn results = GeneratedColumn( + 'results', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => + [id, sessionId, activityId, position, results, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_activities'; + @override + Set get $primaryKey => {id}; + @override + SessionActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + results: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}results']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionActivities createAlias(String alias) { + return SessionActivities(attachedDatabase, alias); + } +} + +class SessionActivitiesData extends DataClass + implements Insertable { + final int id; + final int sessionId; + final int activityId; + final int position; + final String? results; + final DateTime createdAt; + const SessionActivitiesData( + {required this.id, + required this.sessionId, + required this.activityId, + required this.position, + this.results, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['session_id'] = Variable(sessionId); + map['activity_id'] = Variable(activityId); + map['position'] = Variable(position); + if (!nullToAbsent || results != null) { + map['results'] = Variable(results); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionActivitiesCompanion toCompanion(bool nullToAbsent) { + return SessionActivitiesCompanion( + id: Value(id), + sessionId: Value(sessionId), + activityId: Value(activityId), + position: Value(position), + results: results == null && nullToAbsent + ? const Value.absent() + : Value(results), + createdAt: Value(createdAt), + ); + } + + factory SessionActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionActivitiesData( + id: serializer.fromJson(json['id']), + sessionId: serializer.fromJson(json['sessionId']), + activityId: serializer.fromJson(json['activityId']), + position: serializer.fromJson(json['position']), + results: serializer.fromJson(json['results']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'sessionId': serializer.toJson(sessionId), + 'activityId': serializer.toJson(activityId), + 'position': serializer.toJson(position), + 'results': serializer.toJson(results), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionActivitiesData copyWith( + {int? id, + int? sessionId, + int? activityId, + int? position, + Value results = const Value.absent(), + DateTime? createdAt}) => + SessionActivitiesData( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results.present ? results.value : this.results, + createdAt: createdAt ?? this.createdAt, + ); + SessionActivitiesData copyWithCompanion(SessionActivitiesCompanion data) { + return SessionActivitiesData( + id: data.id.present ? data.id.value : this.id, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + position: data.position.present ? data.position.value : this.position, + results: data.results.present ? data.results.value : this.results, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesData(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, sessionId, activityId, position, results, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionActivitiesData && + other.id == this.id && + other.sessionId == this.sessionId && + other.activityId == this.activityId && + other.position == this.position && + other.results == this.results && + other.createdAt == this.createdAt); +} + +class SessionActivitiesCompanion + extends UpdateCompanion { + final Value id; + final Value sessionId; + final Value activityId; + final Value position; + final Value results; + final Value createdAt; + const SessionActivitiesCompanion({ + this.id = const Value.absent(), + this.sessionId = const Value.absent(), + this.activityId = const Value.absent(), + this.position = const Value.absent(), + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionActivitiesCompanion.insert({ + this.id = const Value.absent(), + required int sessionId, + required int activityId, + required int position, + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }) : sessionId = Value(sessionId), + activityId = Value(activityId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? sessionId, + Expression? activityId, + Expression? position, + Expression? results, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (sessionId != null) 'session_id': sessionId, + if (activityId != null) 'activity_id': activityId, + if (position != null) 'position': position, + if (results != null) 'results': results, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionActivitiesCompanion copyWith( + {Value? id, + Value? sessionId, + Value? activityId, + Value? position, + Value? results, + Value? createdAt}) { + return SessionActivitiesCompanion( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results ?? this.results, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (results.present) { + map['results'] = Variable(results.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesCompanion(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Actions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Actions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn totalSets = GeneratedColumn( + 'total_sets', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn totalReps = GeneratedColumn( + 'total_reps', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 1, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn restBeforeSets = GeneratedColumn( + 'rest_before_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenSets = GeneratedColumn( + 'rest_between_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSets = GeneratedColumn( + 'rest_after_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repWeights = GeneratedColumn( + 'rep_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression('\'pending\'')); + late final GeneratedColumn state = GeneratedColumn( + 'state', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression( + '\'{"currentSet": 0, "currentRep": 0, "currentActionType": 0, "currentTime": 0, "currentAction": 0}\'')); + late final GeneratedColumn set = GeneratedColumn( + 'set', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => [ + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'actions'; + @override + Set get $primaryKey => {id}; + @override + ActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + totalSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}total_sets'])!, + totalReps: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}total_reps'])!, + restBeforeSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_sets']), + restBetweenSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_sets']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_sets']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + repWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_weights']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + state: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}state'])!, + set: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Actions createAlias(String alias) { + return Actions(attachedDatabase, alias); + } +} + +class ActionsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final int totalSets; + final String totalReps; + final int? restBeforeSets; + final int? restBetweenSets; + final int? restBetweenReps; + final int? restAfterSets; + final String repType; + final int? repLength; + final String? repWeights; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final String status; + final String state; + final String set; + final DateTime createdAt; + const ActionsData( + {required this.id, + required this.title, + required this.description, + required this.totalSets, + required this.totalReps, + this.restBeforeSets, + this.restBetweenSets, + this.restBetweenReps, + this.restAfterSets, + required this.repType, + this.repLength, + this.repWeights, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.status, + required this.state, + required this.set, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['total_sets'] = Variable(totalSets); + map['total_reps'] = Variable(totalReps); + if (!nullToAbsent || restBeforeSets != null) { + map['rest_before_sets'] = Variable(restBeforeSets); + } + if (!nullToAbsent || restBetweenSets != null) { + map['rest_between_sets'] = Variable(restBetweenSets); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSets != null) { + map['rest_after_sets'] = Variable(restAfterSets); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || repWeights != null) { + map['rep_weights'] = Variable(repWeights); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['status'] = Variable(status); + map['state'] = Variable(state); + map['set'] = Variable(set); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionsCompanion toCompanion(bool nullToAbsent) { + return ActionsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + totalSets: Value(totalSets), + totalReps: Value(totalReps), + restBeforeSets: restBeforeSets == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSets), + restBetweenSets: restBetweenSets == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenSets), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSets: restAfterSets == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSets), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + repWeights: repWeights == null && nullToAbsent + ? const Value.absent() + : Value(repWeights), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + status: Value(status), + state: Value(state), + set: Value(set), + createdAt: Value(createdAt), + ); + } + + factory ActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + totalSets: serializer.fromJson(json['totalSets']), + totalReps: serializer.fromJson(json['totalReps']), + restBeforeSets: serializer.fromJson(json['restBeforeSets']), + restBetweenSets: serializer.fromJson(json['restBetweenSets']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSets: serializer.fromJson(json['restAfterSets']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + repWeights: serializer.fromJson(json['repWeights']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + status: serializer.fromJson(json['status']), + state: serializer.fromJson(json['state']), + set: serializer.fromJson(json['set']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'totalSets': serializer.toJson(totalSets), + 'totalReps': serializer.toJson(totalReps), + 'restBeforeSets': serializer.toJson(restBeforeSets), + 'restBetweenSets': serializer.toJson(restBetweenSets), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSets': serializer.toJson(restAfterSets), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'repWeights': serializer.toJson(repWeights), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'status': serializer.toJson(status), + 'state': serializer.toJson(state), + 'set': serializer.toJson(set), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionsData copyWith( + {int? id, + String? title, + String? description, + int? totalSets, + String? totalReps, + Value restBeforeSets = const Value.absent(), + Value restBetweenSets = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSets = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value repWeights = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + String? status, + String? state, + String? set, + DateTime? createdAt}) => + ActionsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: + restBeforeSets.present ? restBeforeSets.value : this.restBeforeSets, + restBetweenSets: restBetweenSets.present + ? restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSets: + restAfterSets.present ? restAfterSets.value : this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + repWeights: repWeights.present ? repWeights.value : this.repWeights, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + ActionsData copyWithCompanion(ActionsCompanion data) { + return ActionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + totalSets: data.totalSets.present ? data.totalSets.value : this.totalSets, + totalReps: data.totalReps.present ? data.totalReps.value : this.totalReps, + restBeforeSets: data.restBeforeSets.present + ? data.restBeforeSets.value + : this.restBeforeSets, + restBetweenSets: data.restBetweenSets.present + ? data.restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSets: data.restAfterSets.present + ? data.restAfterSets.value + : this.restAfterSets, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + repWeights: + data.repWeights.present ? data.repWeights.value : this.repWeights, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + status: data.status.present ? data.status.value : this.status, + state: data.state.present ? data.state.value : this.state, + set: data.set.present ? data.set.value : this.set, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.totalSets == this.totalSets && + other.totalReps == this.totalReps && + other.restBeforeSets == this.restBeforeSets && + other.restBetweenSets == this.restBetweenSets && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSets == this.restAfterSets && + other.repType == this.repType && + other.repLength == this.repLength && + other.repWeights == this.repWeights && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.status == this.status && + other.state == this.state && + other.set == this.set && + other.createdAt == this.createdAt); +} + +class ActionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value totalSets; + final Value totalReps; + final Value restBeforeSets; + final Value restBetweenSets; + final Value restBetweenReps; + final Value restAfterSets; + final Value repType; + final Value repLength; + final Value repWeights; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value status; + final Value state; + final Value set; + final Value createdAt; + const ActionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.totalSets = const Value.absent(), + this.totalReps = const Value.absent(), + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + this.set = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required int totalSets, + required String totalReps, + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + required String set, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + totalSets = Value(totalSets), + totalReps = Value(totalReps), + repType = Value(repType), + set = Value(set); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? totalSets, + Expression? totalReps, + Expression? restBeforeSets, + Expression? restBetweenSets, + Expression? restBetweenReps, + Expression? restAfterSets, + Expression? repType, + Expression? repLength, + Expression? repWeights, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? status, + Expression? state, + Expression? set, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (totalSets != null) 'total_sets': totalSets, + if (totalReps != null) 'total_reps': totalReps, + if (restBeforeSets != null) 'rest_before_sets': restBeforeSets, + if (restBetweenSets != null) 'rest_between_sets': restBetweenSets, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSets != null) 'rest_after_sets': restAfterSets, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (repWeights != null) 'rep_weights': repWeights, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (status != null) 'status': status, + if (state != null) 'state': state, + if (set != null) 'set': set, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? totalSets, + Value? totalReps, + Value? restBeforeSets, + Value? restBetweenSets, + Value? restBetweenReps, + Value? restAfterSets, + Value? repType, + Value? repLength, + Value? repWeights, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? status, + Value? state, + Value? set, + Value? createdAt}) { + return ActionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: restBeforeSets ?? this.restBeforeSets, + restBetweenSets: restBetweenSets ?? this.restBetweenSets, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSets: restAfterSets ?? this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + repWeights: repWeights ?? this.repWeights, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (totalSets.present) { + map['total_sets'] = Variable(totalSets.value); + } + if (totalReps.present) { + map['total_reps'] = Variable(totalReps.value); + } + if (restBeforeSets.present) { + map['rest_before_sets'] = Variable(restBeforeSets.value); + } + if (restBetweenSets.present) { + map['rest_between_sets'] = Variable(restBetweenSets.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSets.present) { + map['rest_after_sets'] = Variable(restAfterSets.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (repWeights.present) { + map['rep_weights'] = Variable(repWeights.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (state.present) { + map['state'] = Variable(state.value); + } + if (set.present) { + map['set'] = Variable(set.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActivityActions extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActivityActions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn actionId = GeneratedColumn( + 'action_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES actions (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => + [id, activityId, actionId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activity_actions'; + @override + Set get $primaryKey => {id}; + @override + ActivityActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivityActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + actionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}action_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActivityActions createAlias(String alias) { + return ActivityActions(attachedDatabase, alias); + } +} + +class ActivityActionsData extends DataClass + implements Insertable { + final int id; + final int activityId; + final int actionId; + final int sessionId; + final int position; + final DateTime createdAt; + const ActivityActionsData( + {required this.id, + required this.activityId, + required this.actionId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['activity_id'] = Variable(activityId); + map['action_id'] = Variable(actionId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActivityActionsCompanion toCompanion(bool nullToAbsent) { + return ActivityActionsCompanion( + id: Value(id), + activityId: Value(activityId), + actionId: Value(actionId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActivityActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivityActionsData( + id: serializer.fromJson(json['id']), + activityId: serializer.fromJson(json['activityId']), + actionId: serializer.fromJson(json['actionId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'activityId': serializer.toJson(activityId), + 'actionId': serializer.toJson(actionId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivityActionsData copyWith( + {int? id, + int? activityId, + int? actionId, + int? sessionId, + int? position, + DateTime? createdAt}) => + ActivityActionsData( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActivityActionsData copyWithCompanion(ActivityActionsCompanion data) { + return ActivityActionsData( + id: data.id.present ? data.id.value : this.id, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + actionId: data.actionId.present ? data.actionId.value : this.actionId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivityActionsData(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, activityId, actionId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivityActionsData && + other.id == this.id && + other.activityId == this.activityId && + other.actionId == this.actionId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActivityActionsCompanion extends UpdateCompanion { + final Value id; + final Value activityId; + final Value actionId; + final Value sessionId; + final Value position; + final Value createdAt; + const ActivityActionsCompanion({ + this.id = const Value.absent(), + this.activityId = const Value.absent(), + this.actionId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivityActionsCompanion.insert({ + this.id = const Value.absent(), + required int activityId, + required int actionId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : activityId = Value(activityId), + actionId = Value(actionId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? activityId, + Expression? actionId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (activityId != null) 'activity_id': activityId, + if (actionId != null) 'action_id': actionId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivityActionsCompanion copyWith( + {Value? id, + Value? activityId, + Value? actionId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActivityActionsCompanion( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (actionId.present) { + map['action_id'] = Variable(actionId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivityActionsCompanion(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class MediaItems extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + MediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn reference = GeneratedColumn( + 'reference', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => + [id, title, description, reference, type, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'media_items'; + @override + Set get $primaryKey => {id}; + @override + MediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + reference: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}reference'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + MediaItems createAlias(String alias) { + return MediaItems(attachedDatabase, alias); + } +} + +class MediaItemsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final String reference; + final String type; + final DateTime createdAt; + const MediaItemsData( + {required this.id, + required this.title, + required this.description, + required this.reference, + required this.type, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['reference'] = Variable(reference); + map['type'] = Variable(type); + map['created_at'] = Variable(createdAt); + return map; + } + + MediaItemsCompanion toCompanion(bool nullToAbsent) { + return MediaItemsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + reference: Value(reference), + type: Value(type), + createdAt: Value(createdAt), + ); + } + + factory MediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MediaItemsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + reference: serializer.fromJson(json['reference']), + type: serializer.fromJson(json['type']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'reference': serializer.toJson(reference), + 'type': serializer.toJson(type), + 'createdAt': serializer.toJson(createdAt), + }; + } + + MediaItemsData copyWith( + {int? id, + String? title, + String? description, + String? reference, + String? type, + DateTime? createdAt}) => + MediaItemsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + MediaItemsData copyWithCompanion(MediaItemsCompanion data) { + return MediaItemsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + reference: data.reference.present ? data.reference.value : this.reference, + type: data.type.present ? data.type.value : this.type, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('MediaItemsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, description, reference, type, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MediaItemsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.reference == this.reference && + other.type == this.type && + other.createdAt == this.createdAt); +} + +class MediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value reference; + final Value type; + final Value createdAt; + const MediaItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.reference = const Value.absent(), + this.type = const Value.absent(), + this.createdAt = const Value.absent(), + }); + MediaItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required String reference, + required String type, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + reference = Value(reference), + type = Value(type); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? reference, + Expression? type, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (reference != null) 'reference': reference, + if (type != null) 'type': type, + if (createdAt != null) 'created_at': createdAt, + }); + } + + MediaItemsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? reference, + Value? type, + Value? createdAt}) { + return MediaItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (reference.present) { + map['reference'] = Variable(reference.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MediaItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ObjectMediaItems extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ObjectMediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn objectId = GeneratedColumn( + 'object_id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn objectType = GeneratedColumn( + 'object_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn mediaId = GeneratedColumn( + 'media_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES media_items (id) ON DELETE CASCADE')); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1739308481')); + @override + List get $columns => + [id, objectId, objectType, mediaId, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'object_media_items'; + @override + Set get $primaryKey => {id}; + @override + ObjectMediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ObjectMediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + objectId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}object_id'])!, + objectType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}object_type'])!, + mediaId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}media_id'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ObjectMediaItems createAlias(String alias) { + return ObjectMediaItems(attachedDatabase, alias); + } +} + +class ObjectMediaItemsData extends DataClass + implements Insertable { + final int id; + final int objectId; + final String objectType; + final int mediaId; + final DateTime createdAt; + const ObjectMediaItemsData( + {required this.id, + required this.objectId, + required this.objectType, + required this.mediaId, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['object_id'] = Variable(objectId); + map['object_type'] = Variable(objectType); + map['media_id'] = Variable(mediaId); + map['created_at'] = Variable(createdAt); + return map; + } + + ObjectMediaItemsCompanion toCompanion(bool nullToAbsent) { + return ObjectMediaItemsCompanion( + id: Value(id), + objectId: Value(objectId), + objectType: Value(objectType), + mediaId: Value(mediaId), + createdAt: Value(createdAt), + ); + } + + factory ObjectMediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ObjectMediaItemsData( + id: serializer.fromJson(json['id']), + objectId: serializer.fromJson(json['objectId']), + objectType: serializer.fromJson(json['objectType']), + mediaId: serializer.fromJson(json['mediaId']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'objectId': serializer.toJson(objectId), + 'objectType': serializer.toJson(objectType), + 'mediaId': serializer.toJson(mediaId), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ObjectMediaItemsData copyWith( + {int? id, + int? objectId, + String? objectType, + int? mediaId, + DateTime? createdAt}) => + ObjectMediaItemsData( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + ObjectMediaItemsData copyWithCompanion(ObjectMediaItemsCompanion data) { + return ObjectMediaItemsData( + id: data.id.present ? data.id.value : this.id, + objectId: data.objectId.present ? data.objectId.value : this.objectId, + objectType: + data.objectType.present ? data.objectType.value : this.objectType, + mediaId: data.mediaId.present ? data.mediaId.value : this.mediaId, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsData(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, objectId, objectType, mediaId, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ObjectMediaItemsData && + other.id == this.id && + other.objectId == this.objectId && + other.objectType == this.objectType && + other.mediaId == this.mediaId && + other.createdAt == this.createdAt); +} + +class ObjectMediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value objectId; + final Value objectType; + final Value mediaId; + final Value createdAt; + const ObjectMediaItemsCompanion({ + this.id = const Value.absent(), + this.objectId = const Value.absent(), + this.objectType = const Value.absent(), + this.mediaId = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ObjectMediaItemsCompanion.insert({ + this.id = const Value.absent(), + required int objectId, + required String objectType, + required int mediaId, + this.createdAt = const Value.absent(), + }) : objectId = Value(objectId), + objectType = Value(objectType), + mediaId = Value(mediaId); + static Insertable custom({ + Expression? id, + Expression? objectId, + Expression? objectType, + Expression? mediaId, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (objectId != null) 'object_id': objectId, + if (objectType != null) 'object_type': objectType, + if (mediaId != null) 'media_id': mediaId, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ObjectMediaItemsCompanion copyWith( + {Value? id, + Value? objectId, + Value? objectType, + Value? mediaId, + Value? createdAt}) { + return ObjectMediaItemsCompanion( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (objectId.present) { + map['object_id'] = Variable(objectId.value); + } + if (objectType.present) { + map['object_type'] = Variable(objectType.value); + } + if (mediaId.present) { + map['media_id'] = Variable(mediaId.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsCompanion(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class DatabaseAtV36 extends GeneratedDatabase { + DatabaseAtV36(QueryExecutor e) : super(e); + late final Sessions sessions = Sessions(this); + late final Activities activities = Activities(this); + late final SessionActivities sessionActivities = SessionActivities(this); + late final Actions actions = Actions(this); + late final ActivityActions activityActions = ActivityActions(this); + late final MediaItems mediaItems = MediaItems(this); + late final ObjectMediaItems objectMediaItems = ObjectMediaItems(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + sessions, + activities, + sessionActivities, + actions, + activityActions, + mediaItems, + objectMediaItems + ]; + @override + int get schemaVersion => 36; +} diff --git a/test/drift/sendtrain/generated/schema_v37.dart b/test/drift/sendtrain/generated/schema_v37.dart new file mode 100644 index 0000000..de12856 --- /dev/null +++ b/test/drift/sendtrain/generated/schema_v37.dart @@ -0,0 +1,3535 @@ +// dart format width=80 +// GENERATED CODE, DO NOT EDIT BY HAND. +// ignore_for_file: type=lint +import 'package:drift/drift.dart'; + +class Sessions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Sessions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn achievements = GeneratedColumn( + 'achievements', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn address = GeneratedColumn( + 'address', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 256), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn date = GeneratedColumn( + 'date', aliasedName, true, + type: DriftSqlType.dateTime, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, title, content, status, achievements, address, date, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'sessions'; + @override + Set get $primaryKey => {id}; + @override + SessionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + achievements: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}achievements']), + address: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}address']), + date: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}date']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Sessions createAlias(String alias) { + return Sessions(attachedDatabase, alias); + } +} + +class SessionsData extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final String status; + final String? achievements; + final String? address; + final DateTime? date; + final DateTime createdAt; + const SessionsData( + {required this.id, + required this.title, + required this.content, + required this.status, + this.achievements, + this.address, + this.date, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + map['status'] = Variable(status); + if (!nullToAbsent || achievements != null) { + map['achievements'] = Variable(achievements); + } + if (!nullToAbsent || address != null) { + map['address'] = Variable(address); + } + if (!nullToAbsent || date != null) { + map['date'] = Variable(date); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionsCompanion toCompanion(bool nullToAbsent) { + return SessionsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + status: Value(status), + achievements: achievements == null && nullToAbsent + ? const Value.absent() + : Value(achievements), + address: address == null && nullToAbsent + ? const Value.absent() + : Value(address), + date: date == null && nullToAbsent ? const Value.absent() : Value(date), + createdAt: Value(createdAt), + ); + } + + factory SessionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + status: serializer.fromJson(json['status']), + achievements: serializer.fromJson(json['achievements']), + address: serializer.fromJson(json['address']), + date: serializer.fromJson(json['date']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'status': serializer.toJson(status), + 'achievements': serializer.toJson(achievements), + 'address': serializer.toJson(address), + 'date': serializer.toJson(date), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionsData copyWith( + {int? id, + String? title, + String? content, + String? status, + Value achievements = const Value.absent(), + Value address = const Value.absent(), + Value date = const Value.absent(), + DateTime? createdAt}) => + SessionsData( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: + achievements.present ? achievements.value : this.achievements, + address: address.present ? address.value : this.address, + date: date.present ? date.value : this.date, + createdAt: createdAt ?? this.createdAt, + ); + SessionsData copyWithCompanion(SessionsCompanion data) { + return SessionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + status: data.status.present ? data.status.value : this.status, + achievements: data.achievements.present + ? data.achievements.value + : this.achievements, + address: data.address.present ? data.address.value : this.address, + date: data.date.present ? data.date.value : this.date, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, title, content, status, achievements, address, date, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionsData && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.status == this.status && + other.achievements == this.achievements && + other.address == this.address && + other.date == this.date && + other.createdAt == this.createdAt); +} + +class SessionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value status; + final Value achievements; + final Value address; + final Value date; + final Value createdAt; + const SessionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.status = const Value.absent(), + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + required String status, + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title), + content = Value(content), + status = Value(status); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? status, + Expression? achievements, + Expression? address, + Expression? date, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (status != null) 'status': status, + if (achievements != null) 'achievements': achievements, + if (address != null) 'address': address, + if (date != null) 'date': date, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? status, + Value? achievements, + Value? address, + Value? date, + Value? createdAt}) { + return SessionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: achievements ?? this.achievements, + address: address ?? this.address, + date: date ?? this.date, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (achievements.present) { + map['achievements'] = Variable(achievements.value); + } + if (address.present) { + map['address'] = Variable(address.value); + } + if (date.present) { + map['date'] = Variable(date.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Activities extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Activities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 100), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn force = GeneratedColumn( + 'force', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn level = GeneratedColumn( + 'level', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn mechanic = GeneratedColumn( + 'mechanic', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn equipment = GeneratedColumn( + 'equipment', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn primaryMuscles = GeneratedColumn( + 'primary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn secondaryMuscles = GeneratedColumn( + 'secondary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => [ + id, + title, + type, + description, + category, + force, + level, + mechanic, + equipment, + primaryMuscles, + secondaryMuscles, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activities'; + @override + Set get $primaryKey => {id}; + @override + ActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type']), + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body']), + category: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}category']), + force: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}force']), + level: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}level']), + mechanic: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}mechanic']), + equipment: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}equipment']), + primaryMuscles: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}primary_muscles']), + secondaryMuscles: attachedDatabase.typeMapping.read( + DriftSqlType.string, data['${effectivePrefix}secondary_muscles']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Activities createAlias(String alias) { + return Activities(attachedDatabase, alias); + } +} + +class ActivitiesData extends DataClass implements Insertable { + final int id; + final String title; + final String? type; + final String? description; + final String? category; + final String? force; + final String? level; + final String? mechanic; + final String? equipment; + final String? primaryMuscles; + final String? secondaryMuscles; + final DateTime createdAt; + const ActivitiesData( + {required this.id, + required this.title, + this.type, + this.description, + this.category, + this.force, + this.level, + this.mechanic, + this.equipment, + this.primaryMuscles, + this.secondaryMuscles, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + if (!nullToAbsent || type != null) { + map['type'] = Variable(type); + } + if (!nullToAbsent || description != null) { + map['body'] = Variable(description); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + if (!nullToAbsent || force != null) { + map['force'] = Variable(force); + } + if (!nullToAbsent || level != null) { + map['level'] = Variable(level); + } + if (!nullToAbsent || mechanic != null) { + map['mechanic'] = Variable(mechanic); + } + if (!nullToAbsent || equipment != null) { + map['equipment'] = Variable(equipment); + } + if (!nullToAbsent || primaryMuscles != null) { + map['primary_muscles'] = Variable(primaryMuscles); + } + if (!nullToAbsent || secondaryMuscles != null) { + map['secondary_muscles'] = Variable(secondaryMuscles); + } + map['created_at'] = Variable(createdAt); + return map; + } + + ActivitiesCompanion toCompanion(bool nullToAbsent) { + return ActivitiesCompanion( + id: Value(id), + title: Value(title), + type: type == null && nullToAbsent ? const Value.absent() : Value(type), + description: description == null && nullToAbsent + ? const Value.absent() + : Value(description), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + force: + force == null && nullToAbsent ? const Value.absent() : Value(force), + level: + level == null && nullToAbsent ? const Value.absent() : Value(level), + mechanic: mechanic == null && nullToAbsent + ? const Value.absent() + : Value(mechanic), + equipment: equipment == null && nullToAbsent + ? const Value.absent() + : Value(equipment), + primaryMuscles: primaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(primaryMuscles), + secondaryMuscles: secondaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(secondaryMuscles), + createdAt: Value(createdAt), + ); + } + + factory ActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivitiesData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + type: serializer.fromJson(json['type']), + description: serializer.fromJson(json['description']), + category: serializer.fromJson(json['category']), + force: serializer.fromJson(json['force']), + level: serializer.fromJson(json['level']), + mechanic: serializer.fromJson(json['mechanic']), + equipment: serializer.fromJson(json['equipment']), + primaryMuscles: serializer.fromJson(json['primaryMuscles']), + secondaryMuscles: serializer.fromJson(json['secondaryMuscles']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'type': serializer.toJson(type), + 'description': serializer.toJson(description), + 'category': serializer.toJson(category), + 'force': serializer.toJson(force), + 'level': serializer.toJson(level), + 'mechanic': serializer.toJson(mechanic), + 'equipment': serializer.toJson(equipment), + 'primaryMuscles': serializer.toJson(primaryMuscles), + 'secondaryMuscles': serializer.toJson(secondaryMuscles), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivitiesData copyWith( + {int? id, + String? title, + Value type = const Value.absent(), + Value description = const Value.absent(), + Value category = const Value.absent(), + Value force = const Value.absent(), + Value level = const Value.absent(), + Value mechanic = const Value.absent(), + Value equipment = const Value.absent(), + Value primaryMuscles = const Value.absent(), + Value secondaryMuscles = const Value.absent(), + DateTime? createdAt}) => + ActivitiesData( + id: id ?? this.id, + title: title ?? this.title, + type: type.present ? type.value : this.type, + description: description.present ? description.value : this.description, + category: category.present ? category.value : this.category, + force: force.present ? force.value : this.force, + level: level.present ? level.value : this.level, + mechanic: mechanic.present ? mechanic.value : this.mechanic, + equipment: equipment.present ? equipment.value : this.equipment, + primaryMuscles: + primaryMuscles.present ? primaryMuscles.value : this.primaryMuscles, + secondaryMuscles: secondaryMuscles.present + ? secondaryMuscles.value + : this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + ActivitiesData copyWithCompanion(ActivitiesCompanion data) { + return ActivitiesData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + type: data.type.present ? data.type.value : this.type, + description: + data.description.present ? data.description.value : this.description, + category: data.category.present ? data.category.value : this.category, + force: data.force.present ? data.force.value : this.force, + level: data.level.present ? data.level.value : this.level, + mechanic: data.mechanic.present ? data.mechanic.value : this.mechanic, + equipment: data.equipment.present ? data.equipment.value : this.equipment, + primaryMuscles: data.primaryMuscles.present + ? data.primaryMuscles.value + : this.primaryMuscles, + secondaryMuscles: data.secondaryMuscles.present + ? data.secondaryMuscles.value + : this.secondaryMuscles, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivitiesData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, type, description, category, force, + level, mechanic, equipment, primaryMuscles, secondaryMuscles, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivitiesData && + other.id == this.id && + other.title == this.title && + other.type == this.type && + other.description == this.description && + other.category == this.category && + other.force == this.force && + other.level == this.level && + other.mechanic == this.mechanic && + other.equipment == this.equipment && + other.primaryMuscles == this.primaryMuscles && + other.secondaryMuscles == this.secondaryMuscles && + other.createdAt == this.createdAt); +} + +class ActivitiesCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value type; + final Value description; + final Value category; + final Value force; + final Value level; + final Value mechanic; + final Value equipment; + final Value primaryMuscles; + final Value secondaryMuscles; + final Value createdAt; + const ActivitiesCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivitiesCompanion.insert({ + this.id = const Value.absent(), + required String title, + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? type, + Expression? description, + Expression? category, + Expression? force, + Expression? level, + Expression? mechanic, + Expression? equipment, + Expression? primaryMuscles, + Expression? secondaryMuscles, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (type != null) 'type': type, + if (description != null) 'body': description, + if (category != null) 'category': category, + if (force != null) 'force': force, + if (level != null) 'level': level, + if (mechanic != null) 'mechanic': mechanic, + if (equipment != null) 'equipment': equipment, + if (primaryMuscles != null) 'primary_muscles': primaryMuscles, + if (secondaryMuscles != null) 'secondary_muscles': secondaryMuscles, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivitiesCompanion copyWith( + {Value? id, + Value? title, + Value? type, + Value? description, + Value? category, + Value? force, + Value? level, + Value? mechanic, + Value? equipment, + Value? primaryMuscles, + Value? secondaryMuscles, + Value? createdAt}) { + return ActivitiesCompanion( + id: id ?? this.id, + title: title ?? this.title, + type: type ?? this.type, + description: description ?? this.description, + category: category ?? this.category, + force: force ?? this.force, + level: level ?? this.level, + mechanic: mechanic ?? this.mechanic, + equipment: equipment ?? this.equipment, + primaryMuscles: primaryMuscles ?? this.primaryMuscles, + secondaryMuscles: secondaryMuscles ?? this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + if (force.present) { + map['force'] = Variable(force.value); + } + if (level.present) { + map['level'] = Variable(level.value); + } + if (mechanic.present) { + map['mechanic'] = Variable(mechanic.value); + } + if (equipment.present) { + map['equipment'] = Variable(equipment.value); + } + if (primaryMuscles.present) { + map['primary_muscles'] = Variable(primaryMuscles.value); + } + if (secondaryMuscles.present) { + map['secondary_muscles'] = Variable(secondaryMuscles.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivitiesCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionActivities extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionActivities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn results = GeneratedColumn( + 'results', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, sessionId, activityId, position, results, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_activities'; + @override + Set get $primaryKey => {id}; + @override + SessionActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + results: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}results']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionActivities createAlias(String alias) { + return SessionActivities(attachedDatabase, alias); + } +} + +class SessionActivitiesData extends DataClass + implements Insertable { + final int id; + final int sessionId; + final int activityId; + final int position; + final String? results; + final DateTime createdAt; + const SessionActivitiesData( + {required this.id, + required this.sessionId, + required this.activityId, + required this.position, + this.results, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['session_id'] = Variable(sessionId); + map['activity_id'] = Variable(activityId); + map['position'] = Variable(position); + if (!nullToAbsent || results != null) { + map['results'] = Variable(results); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionActivitiesCompanion toCompanion(bool nullToAbsent) { + return SessionActivitiesCompanion( + id: Value(id), + sessionId: Value(sessionId), + activityId: Value(activityId), + position: Value(position), + results: results == null && nullToAbsent + ? const Value.absent() + : Value(results), + createdAt: Value(createdAt), + ); + } + + factory SessionActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionActivitiesData( + id: serializer.fromJson(json['id']), + sessionId: serializer.fromJson(json['sessionId']), + activityId: serializer.fromJson(json['activityId']), + position: serializer.fromJson(json['position']), + results: serializer.fromJson(json['results']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'sessionId': serializer.toJson(sessionId), + 'activityId': serializer.toJson(activityId), + 'position': serializer.toJson(position), + 'results': serializer.toJson(results), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionActivitiesData copyWith( + {int? id, + int? sessionId, + int? activityId, + int? position, + Value results = const Value.absent(), + DateTime? createdAt}) => + SessionActivitiesData( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results.present ? results.value : this.results, + createdAt: createdAt ?? this.createdAt, + ); + SessionActivitiesData copyWithCompanion(SessionActivitiesCompanion data) { + return SessionActivitiesData( + id: data.id.present ? data.id.value : this.id, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + position: data.position.present ? data.position.value : this.position, + results: data.results.present ? data.results.value : this.results, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesData(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, sessionId, activityId, position, results, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionActivitiesData && + other.id == this.id && + other.sessionId == this.sessionId && + other.activityId == this.activityId && + other.position == this.position && + other.results == this.results && + other.createdAt == this.createdAt); +} + +class SessionActivitiesCompanion + extends UpdateCompanion { + final Value id; + final Value sessionId; + final Value activityId; + final Value position; + final Value results; + final Value createdAt; + const SessionActivitiesCompanion({ + this.id = const Value.absent(), + this.sessionId = const Value.absent(), + this.activityId = const Value.absent(), + this.position = const Value.absent(), + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionActivitiesCompanion.insert({ + this.id = const Value.absent(), + required int sessionId, + required int activityId, + required int position, + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }) : sessionId = Value(sessionId), + activityId = Value(activityId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? sessionId, + Expression? activityId, + Expression? position, + Expression? results, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (sessionId != null) 'session_id': sessionId, + if (activityId != null) 'activity_id': activityId, + if (position != null) 'position': position, + if (results != null) 'results': results, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionActivitiesCompanion copyWith( + {Value? id, + Value? sessionId, + Value? activityId, + Value? position, + Value? results, + Value? createdAt}) { + return SessionActivitiesCompanion( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results ?? this.results, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (results.present) { + map['results'] = Variable(results.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesCompanion(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Actions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Actions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn totalSets = GeneratedColumn( + 'total_sets', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn totalReps = GeneratedColumn( + 'total_reps', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 1, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn restBeforeSets = GeneratedColumn( + 'rest_before_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenSets = GeneratedColumn( + 'rest_between_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSets = GeneratedColumn( + 'rest_after_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repWeights = GeneratedColumn( + 'rep_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression('\'pending\'')); + late final GeneratedColumn state = GeneratedColumn( + 'state', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression( + '\'{"currentSet": 0, "currentRep": 0, "currentActionType": 0, "currentTime": 0, "currentAction": 0}\'')); + late final GeneratedColumn set = GeneratedColumn( + 'set', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => [ + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'actions'; + @override + Set get $primaryKey => {id}; + @override + ActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + totalSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}total_sets'])!, + totalReps: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}total_reps'])!, + restBeforeSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_sets']), + restBetweenSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_sets']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_sets']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + repWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_weights']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + state: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}state'])!, + set: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Actions createAlias(String alias) { + return Actions(attachedDatabase, alias); + } +} + +class ActionsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final int totalSets; + final String totalReps; + final int? restBeforeSets; + final int? restBetweenSets; + final int? restBetweenReps; + final int? restAfterSets; + final String repType; + final int? repLength; + final String? repWeights; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final String status; + final String state; + final String set; + final DateTime createdAt; + const ActionsData( + {required this.id, + required this.title, + required this.description, + required this.totalSets, + required this.totalReps, + this.restBeforeSets, + this.restBetweenSets, + this.restBetweenReps, + this.restAfterSets, + required this.repType, + this.repLength, + this.repWeights, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.status, + required this.state, + required this.set, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['total_sets'] = Variable(totalSets); + map['total_reps'] = Variable(totalReps); + if (!nullToAbsent || restBeforeSets != null) { + map['rest_before_sets'] = Variable(restBeforeSets); + } + if (!nullToAbsent || restBetweenSets != null) { + map['rest_between_sets'] = Variable(restBetweenSets); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSets != null) { + map['rest_after_sets'] = Variable(restAfterSets); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || repWeights != null) { + map['rep_weights'] = Variable(repWeights); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['status'] = Variable(status); + map['state'] = Variable(state); + map['set'] = Variable(set); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionsCompanion toCompanion(bool nullToAbsent) { + return ActionsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + totalSets: Value(totalSets), + totalReps: Value(totalReps), + restBeforeSets: restBeforeSets == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSets), + restBetweenSets: restBetweenSets == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenSets), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSets: restAfterSets == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSets), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + repWeights: repWeights == null && nullToAbsent + ? const Value.absent() + : Value(repWeights), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + status: Value(status), + state: Value(state), + set: Value(set), + createdAt: Value(createdAt), + ); + } + + factory ActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + totalSets: serializer.fromJson(json['totalSets']), + totalReps: serializer.fromJson(json['totalReps']), + restBeforeSets: serializer.fromJson(json['restBeforeSets']), + restBetweenSets: serializer.fromJson(json['restBetweenSets']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSets: serializer.fromJson(json['restAfterSets']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + repWeights: serializer.fromJson(json['repWeights']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + status: serializer.fromJson(json['status']), + state: serializer.fromJson(json['state']), + set: serializer.fromJson(json['set']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'totalSets': serializer.toJson(totalSets), + 'totalReps': serializer.toJson(totalReps), + 'restBeforeSets': serializer.toJson(restBeforeSets), + 'restBetweenSets': serializer.toJson(restBetweenSets), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSets': serializer.toJson(restAfterSets), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'repWeights': serializer.toJson(repWeights), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'status': serializer.toJson(status), + 'state': serializer.toJson(state), + 'set': serializer.toJson(set), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionsData copyWith( + {int? id, + String? title, + String? description, + int? totalSets, + String? totalReps, + Value restBeforeSets = const Value.absent(), + Value restBetweenSets = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSets = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value repWeights = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + String? status, + String? state, + String? set, + DateTime? createdAt}) => + ActionsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: + restBeforeSets.present ? restBeforeSets.value : this.restBeforeSets, + restBetweenSets: restBetweenSets.present + ? restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSets: + restAfterSets.present ? restAfterSets.value : this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + repWeights: repWeights.present ? repWeights.value : this.repWeights, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + ActionsData copyWithCompanion(ActionsCompanion data) { + return ActionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + totalSets: data.totalSets.present ? data.totalSets.value : this.totalSets, + totalReps: data.totalReps.present ? data.totalReps.value : this.totalReps, + restBeforeSets: data.restBeforeSets.present + ? data.restBeforeSets.value + : this.restBeforeSets, + restBetweenSets: data.restBetweenSets.present + ? data.restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSets: data.restAfterSets.present + ? data.restAfterSets.value + : this.restAfterSets, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + repWeights: + data.repWeights.present ? data.repWeights.value : this.repWeights, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + status: data.status.present ? data.status.value : this.status, + state: data.state.present ? data.state.value : this.state, + set: data.set.present ? data.set.value : this.set, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.totalSets == this.totalSets && + other.totalReps == this.totalReps && + other.restBeforeSets == this.restBeforeSets && + other.restBetweenSets == this.restBetweenSets && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSets == this.restAfterSets && + other.repType == this.repType && + other.repLength == this.repLength && + other.repWeights == this.repWeights && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.status == this.status && + other.state == this.state && + other.set == this.set && + other.createdAt == this.createdAt); +} + +class ActionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value totalSets; + final Value totalReps; + final Value restBeforeSets; + final Value restBetweenSets; + final Value restBetweenReps; + final Value restAfterSets; + final Value repType; + final Value repLength; + final Value repWeights; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value status; + final Value state; + final Value set; + final Value createdAt; + const ActionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.totalSets = const Value.absent(), + this.totalReps = const Value.absent(), + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + this.set = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required int totalSets, + required String totalReps, + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + required String set, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + totalSets = Value(totalSets), + totalReps = Value(totalReps), + repType = Value(repType), + set = Value(set); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? totalSets, + Expression? totalReps, + Expression? restBeforeSets, + Expression? restBetweenSets, + Expression? restBetweenReps, + Expression? restAfterSets, + Expression? repType, + Expression? repLength, + Expression? repWeights, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? status, + Expression? state, + Expression? set, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (totalSets != null) 'total_sets': totalSets, + if (totalReps != null) 'total_reps': totalReps, + if (restBeforeSets != null) 'rest_before_sets': restBeforeSets, + if (restBetweenSets != null) 'rest_between_sets': restBetweenSets, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSets != null) 'rest_after_sets': restAfterSets, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (repWeights != null) 'rep_weights': repWeights, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (status != null) 'status': status, + if (state != null) 'state': state, + if (set != null) 'set': set, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? totalSets, + Value? totalReps, + Value? restBeforeSets, + Value? restBetweenSets, + Value? restBetweenReps, + Value? restAfterSets, + Value? repType, + Value? repLength, + Value? repWeights, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? status, + Value? state, + Value? set, + Value? createdAt}) { + return ActionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: restBeforeSets ?? this.restBeforeSets, + restBetweenSets: restBetweenSets ?? this.restBetweenSets, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSets: restAfterSets ?? this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + repWeights: repWeights ?? this.repWeights, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (totalSets.present) { + map['total_sets'] = Variable(totalSets.value); + } + if (totalReps.present) { + map['total_reps'] = Variable(totalReps.value); + } + if (restBeforeSets.present) { + map['rest_before_sets'] = Variable(restBeforeSets.value); + } + if (restBetweenSets.present) { + map['rest_between_sets'] = Variable(restBetweenSets.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSets.present) { + map['rest_after_sets'] = Variable(restAfterSets.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (repWeights.present) { + map['rep_weights'] = Variable(repWeights.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (state.present) { + map['state'] = Variable(state.value); + } + if (set.present) { + map['set'] = Variable(set.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Sets extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Sets(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn name = GeneratedColumn( + 'name', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn reps = GeneratedColumn( + 'reps', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn actionId = GeneratedColumn( + 'action_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES actions (id) ON DELETE CASCADE')); + late final GeneratedColumn restBeforeSet = GeneratedColumn( + 'rest_before_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSet = GeneratedColumn( + 'rest_after_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => [ + id, + name, + reps, + actionId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'sets'; + @override + Set get $primaryKey => {id}; + @override + SetsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SetsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + name: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}name'])!, + reps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}reps'])!, + actionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}action_id'])!, + restBeforeSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_set']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_set']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Sets createAlias(String alias) { + return Sets(attachedDatabase, alias); + } +} + +class SetsData extends DataClass implements Insertable { + final int id; + final String name; + final int reps; + final int actionId; + final int? restBeforeSet; + final int? restBetweenReps; + final int? restAfterSet; + final String repType; + final int? repLength; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final DateTime createdAt; + const SetsData( + {required this.id, + required this.name, + required this.reps, + required this.actionId, + this.restBeforeSet, + this.restBetweenReps, + this.restAfterSet, + required this.repType, + this.repLength, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + map['reps'] = Variable(reps); + map['action_id'] = Variable(actionId); + if (!nullToAbsent || restBeforeSet != null) { + map['rest_before_set'] = Variable(restBeforeSet); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSet != null) { + map['rest_after_set'] = Variable(restAfterSet); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SetsCompanion toCompanion(bool nullToAbsent) { + return SetsCompanion( + id: Value(id), + name: Value(name), + reps: Value(reps), + actionId: Value(actionId), + restBeforeSet: restBeforeSet == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSet), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSet: restAfterSet == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSet), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + createdAt: Value(createdAt), + ); + } + + factory SetsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SetsData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + reps: serializer.fromJson(json['reps']), + actionId: serializer.fromJson(json['actionId']), + restBeforeSet: serializer.fromJson(json['restBeforeSet']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSet: serializer.fromJson(json['restAfterSet']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + 'reps': serializer.toJson(reps), + 'actionId': serializer.toJson(actionId), + 'restBeforeSet': serializer.toJson(restBeforeSet), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSet': serializer.toJson(restAfterSet), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SetsData copyWith( + {int? id, + String? name, + int? reps, + int? actionId, + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + DateTime? createdAt}) => + SetsData( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + actionId: actionId ?? this.actionId, + restBeforeSet: + restBeforeSet.present ? restBeforeSet.value : this.restBeforeSet, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSet: + restAfterSet.present ? restAfterSet.value : this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + createdAt: createdAt ?? this.createdAt, + ); + SetsData copyWithCompanion(SetsCompanion data) { + return SetsData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + reps: data.reps.present ? data.reps.value : this.reps, + actionId: data.actionId.present ? data.actionId.value : this.actionId, + restBeforeSet: data.restBeforeSet.present + ? data.restBeforeSet.value + : this.restBeforeSet, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSet: data.restAfterSet.present + ? data.restAfterSet.value + : this.restAfterSet, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SetsData(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('actionId: $actionId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + reps, + actionId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SetsData && + other.id == this.id && + other.name == this.name && + other.reps == this.reps && + other.actionId == this.actionId && + other.restBeforeSet == this.restBeforeSet && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSet == this.restAfterSet && + other.repType == this.repType && + other.repLength == this.repLength && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.createdAt == this.createdAt); +} + +class SetsCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value reps; + final Value actionId; + final Value restBeforeSet; + final Value restBetweenReps; + final Value restAfterSet; + final Value repType; + final Value repLength; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value createdAt; + const SetsCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.reps = const Value.absent(), + this.actionId = const Value.absent(), + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SetsCompanion.insert({ + this.id = const Value.absent(), + required String name, + required int reps, + required int actionId, + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.createdAt = const Value.absent(), + }) : name = Value(name), + reps = Value(reps), + actionId = Value(actionId), + repType = Value(repType); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? reps, + Expression? actionId, + Expression? restBeforeSet, + Expression? restBetweenReps, + Expression? restAfterSet, + Expression? repType, + Expression? repLength, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (reps != null) 'reps': reps, + if (actionId != null) 'action_id': actionId, + if (restBeforeSet != null) 'rest_before_set': restBeforeSet, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSet != null) 'rest_after_set': restAfterSet, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SetsCompanion copyWith( + {Value? id, + Value? name, + Value? reps, + Value? actionId, + Value? restBeforeSet, + Value? restBetweenReps, + Value? restAfterSet, + Value? repType, + Value? repLength, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? createdAt}) { + return SetsCompanion( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + actionId: actionId ?? this.actionId, + restBeforeSet: restBeforeSet ?? this.restBeforeSet, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSet: restAfterSet ?? this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (reps.present) { + map['reps'] = Variable(reps.value); + } + if (actionId.present) { + map['action_id'] = Variable(actionId.value); + } + if (restBeforeSet.present) { + map['rest_before_set'] = Variable(restBeforeSet.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSet.present) { + map['rest_after_set'] = Variable(restAfterSet.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SetsCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('actionId: $actionId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionSets extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionSets(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn setId = GeneratedColumn( + 'set_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sets (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, setId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_sets'; + @override + Set get $primaryKey => {id}; + @override + SessionSetsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionSetsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + setId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}set_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionSets createAlias(String alias) { + return SessionSets(attachedDatabase, alias); + } +} + +class SessionSetsData extends DataClass implements Insertable { + final int id; + final int setId; + final int sessionId; + final int position; + final DateTime createdAt; + const SessionSetsData( + {required this.id, + required this.setId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['set_id'] = Variable(setId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + SessionSetsCompanion toCompanion(bool nullToAbsent) { + return SessionSetsCompanion( + id: Value(id), + setId: Value(setId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory SessionSetsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionSetsData( + id: serializer.fromJson(json['id']), + setId: serializer.fromJson(json['setId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'setId': serializer.toJson(setId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionSetsData copyWith( + {int? id, + int? setId, + int? sessionId, + int? position, + DateTime? createdAt}) => + SessionSetsData( + id: id ?? this.id, + setId: setId ?? this.setId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + SessionSetsData copyWithCompanion(SessionSetsCompanion data) { + return SessionSetsData( + id: data.id.present ? data.id.value : this.id, + setId: data.setId.present ? data.setId.value : this.setId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionSetsData(') + ..write('id: $id, ') + ..write('setId: $setId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, setId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionSetsData && + other.id == this.id && + other.setId == this.setId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class SessionSetsCompanion extends UpdateCompanion { + final Value id; + final Value setId; + final Value sessionId; + final Value position; + final Value createdAt; + const SessionSetsCompanion({ + this.id = const Value.absent(), + this.setId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionSetsCompanion.insert({ + this.id = const Value.absent(), + required int setId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : setId = Value(setId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? setId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (setId != null) 'set_id': setId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionSetsCompanion copyWith( + {Value? id, + Value? setId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return SessionSetsCompanion( + id: id ?? this.id, + setId: setId ?? this.setId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (setId.present) { + map['set_id'] = Variable(setId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionSetsCompanion(') + ..write('id: $id, ') + ..write('setId: $setId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActivityActions extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActivityActions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn actionId = GeneratedColumn( + 'action_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES actions (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, activityId, actionId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activity_actions'; + @override + Set get $primaryKey => {id}; + @override + ActivityActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivityActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + actionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}action_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActivityActions createAlias(String alias) { + return ActivityActions(attachedDatabase, alias); + } +} + +class ActivityActionsData extends DataClass + implements Insertable { + final int id; + final int activityId; + final int actionId; + final int sessionId; + final int position; + final DateTime createdAt; + const ActivityActionsData( + {required this.id, + required this.activityId, + required this.actionId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['activity_id'] = Variable(activityId); + map['action_id'] = Variable(actionId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActivityActionsCompanion toCompanion(bool nullToAbsent) { + return ActivityActionsCompanion( + id: Value(id), + activityId: Value(activityId), + actionId: Value(actionId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActivityActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivityActionsData( + id: serializer.fromJson(json['id']), + activityId: serializer.fromJson(json['activityId']), + actionId: serializer.fromJson(json['actionId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'activityId': serializer.toJson(activityId), + 'actionId': serializer.toJson(actionId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivityActionsData copyWith( + {int? id, + int? activityId, + int? actionId, + int? sessionId, + int? position, + DateTime? createdAt}) => + ActivityActionsData( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActivityActionsData copyWithCompanion(ActivityActionsCompanion data) { + return ActivityActionsData( + id: data.id.present ? data.id.value : this.id, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + actionId: data.actionId.present ? data.actionId.value : this.actionId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivityActionsData(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, activityId, actionId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivityActionsData && + other.id == this.id && + other.activityId == this.activityId && + other.actionId == this.actionId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActivityActionsCompanion extends UpdateCompanion { + final Value id; + final Value activityId; + final Value actionId; + final Value sessionId; + final Value position; + final Value createdAt; + const ActivityActionsCompanion({ + this.id = const Value.absent(), + this.activityId = const Value.absent(), + this.actionId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivityActionsCompanion.insert({ + this.id = const Value.absent(), + required int activityId, + required int actionId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : activityId = Value(activityId), + actionId = Value(actionId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? activityId, + Expression? actionId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (activityId != null) 'activity_id': activityId, + if (actionId != null) 'action_id': actionId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivityActionsCompanion copyWith( + {Value? id, + Value? activityId, + Value? actionId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActivityActionsCompanion( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (actionId.present) { + map['action_id'] = Variable(actionId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivityActionsCompanion(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class MediaItems extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + MediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn reference = GeneratedColumn( + 'reference', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, title, description, reference, type, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'media_items'; + @override + Set get $primaryKey => {id}; + @override + MediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + reference: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}reference'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + MediaItems createAlias(String alias) { + return MediaItems(attachedDatabase, alias); + } +} + +class MediaItemsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final String reference; + final String type; + final DateTime createdAt; + const MediaItemsData( + {required this.id, + required this.title, + required this.description, + required this.reference, + required this.type, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['reference'] = Variable(reference); + map['type'] = Variable(type); + map['created_at'] = Variable(createdAt); + return map; + } + + MediaItemsCompanion toCompanion(bool nullToAbsent) { + return MediaItemsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + reference: Value(reference), + type: Value(type), + createdAt: Value(createdAt), + ); + } + + factory MediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MediaItemsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + reference: serializer.fromJson(json['reference']), + type: serializer.fromJson(json['type']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'reference': serializer.toJson(reference), + 'type': serializer.toJson(type), + 'createdAt': serializer.toJson(createdAt), + }; + } + + MediaItemsData copyWith( + {int? id, + String? title, + String? description, + String? reference, + String? type, + DateTime? createdAt}) => + MediaItemsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + MediaItemsData copyWithCompanion(MediaItemsCompanion data) { + return MediaItemsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + reference: data.reference.present ? data.reference.value : this.reference, + type: data.type.present ? data.type.value : this.type, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('MediaItemsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, description, reference, type, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MediaItemsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.reference == this.reference && + other.type == this.type && + other.createdAt == this.createdAt); +} + +class MediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value reference; + final Value type; + final Value createdAt; + const MediaItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.reference = const Value.absent(), + this.type = const Value.absent(), + this.createdAt = const Value.absent(), + }); + MediaItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required String reference, + required String type, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + reference = Value(reference), + type = Value(type); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? reference, + Expression? type, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (reference != null) 'reference': reference, + if (type != null) 'type': type, + if (createdAt != null) 'created_at': createdAt, + }); + } + + MediaItemsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? reference, + Value? type, + Value? createdAt}) { + return MediaItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (reference.present) { + map['reference'] = Variable(reference.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MediaItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ObjectMediaItems extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ObjectMediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn objectId = GeneratedColumn( + 'object_id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn objectType = GeneratedColumn( + 'object_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn mediaId = GeneratedColumn( + 'media_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES media_items (id) ON DELETE CASCADE')); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744074941')); + @override + List get $columns => + [id, objectId, objectType, mediaId, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'object_media_items'; + @override + Set get $primaryKey => {id}; + @override + ObjectMediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ObjectMediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + objectId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}object_id'])!, + objectType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}object_type'])!, + mediaId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}media_id'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ObjectMediaItems createAlias(String alias) { + return ObjectMediaItems(attachedDatabase, alias); + } +} + +class ObjectMediaItemsData extends DataClass + implements Insertable { + final int id; + final int objectId; + final String objectType; + final int mediaId; + final DateTime createdAt; + const ObjectMediaItemsData( + {required this.id, + required this.objectId, + required this.objectType, + required this.mediaId, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['object_id'] = Variable(objectId); + map['object_type'] = Variable(objectType); + map['media_id'] = Variable(mediaId); + map['created_at'] = Variable(createdAt); + return map; + } + + ObjectMediaItemsCompanion toCompanion(bool nullToAbsent) { + return ObjectMediaItemsCompanion( + id: Value(id), + objectId: Value(objectId), + objectType: Value(objectType), + mediaId: Value(mediaId), + createdAt: Value(createdAt), + ); + } + + factory ObjectMediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ObjectMediaItemsData( + id: serializer.fromJson(json['id']), + objectId: serializer.fromJson(json['objectId']), + objectType: serializer.fromJson(json['objectType']), + mediaId: serializer.fromJson(json['mediaId']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'objectId': serializer.toJson(objectId), + 'objectType': serializer.toJson(objectType), + 'mediaId': serializer.toJson(mediaId), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ObjectMediaItemsData copyWith( + {int? id, + int? objectId, + String? objectType, + int? mediaId, + DateTime? createdAt}) => + ObjectMediaItemsData( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + ObjectMediaItemsData copyWithCompanion(ObjectMediaItemsCompanion data) { + return ObjectMediaItemsData( + id: data.id.present ? data.id.value : this.id, + objectId: data.objectId.present ? data.objectId.value : this.objectId, + objectType: + data.objectType.present ? data.objectType.value : this.objectType, + mediaId: data.mediaId.present ? data.mediaId.value : this.mediaId, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsData(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, objectId, objectType, mediaId, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ObjectMediaItemsData && + other.id == this.id && + other.objectId == this.objectId && + other.objectType == this.objectType && + other.mediaId == this.mediaId && + other.createdAt == this.createdAt); +} + +class ObjectMediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value objectId; + final Value objectType; + final Value mediaId; + final Value createdAt; + const ObjectMediaItemsCompanion({ + this.id = const Value.absent(), + this.objectId = const Value.absent(), + this.objectType = const Value.absent(), + this.mediaId = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ObjectMediaItemsCompanion.insert({ + this.id = const Value.absent(), + required int objectId, + required String objectType, + required int mediaId, + this.createdAt = const Value.absent(), + }) : objectId = Value(objectId), + objectType = Value(objectType), + mediaId = Value(mediaId); + static Insertable custom({ + Expression? id, + Expression? objectId, + Expression? objectType, + Expression? mediaId, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (objectId != null) 'object_id': objectId, + if (objectType != null) 'object_type': objectType, + if (mediaId != null) 'media_id': mediaId, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ObjectMediaItemsCompanion copyWith( + {Value? id, + Value? objectId, + Value? objectType, + Value? mediaId, + Value? createdAt}) { + return ObjectMediaItemsCompanion( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (objectId.present) { + map['object_id'] = Variable(objectId.value); + } + if (objectType.present) { + map['object_type'] = Variable(objectType.value); + } + if (mediaId.present) { + map['media_id'] = Variable(mediaId.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsCompanion(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class DatabaseAtV37 extends GeneratedDatabase { + DatabaseAtV37(QueryExecutor e) : super(e); + late final Sessions sessions = Sessions(this); + late final Activities activities = Activities(this); + late final SessionActivities sessionActivities = SessionActivities(this); + late final Actions actions = Actions(this); + late final Sets sets = Sets(this); + late final SessionSets sessionSets = SessionSets(this); + late final ActivityActions activityActions = ActivityActions(this); + late final MediaItems mediaItems = MediaItems(this); + late final ObjectMediaItems objectMediaItems = ObjectMediaItems(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + sessions, + activities, + sessionActivities, + actions, + sets, + sessionSets, + activityActions, + mediaItems, + objectMediaItems + ]; + @override + int get schemaVersion => 37; +} diff --git a/test/drift/sendtrain/generated/schema_v39.dart b/test/drift/sendtrain/generated/schema_v39.dart new file mode 100644 index 0000000..a17d187 --- /dev/null +++ b/test/drift/sendtrain/generated/schema_v39.dart @@ -0,0 +1,3536 @@ +// dart format width=80 +// GENERATED CODE, DO NOT EDIT BY HAND. +// ignore_for_file: type=lint +import 'package:drift/drift.dart'; + +class Sessions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Sessions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn achievements = GeneratedColumn( + 'achievements', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn address = GeneratedColumn( + 'address', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 256), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn date = GeneratedColumn( + 'date', aliasedName, true, + type: DriftSqlType.dateTime, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, title, content, status, achievements, address, date, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'sessions'; + @override + Set get $primaryKey => {id}; + @override + SessionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + achievements: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}achievements']), + address: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}address']), + date: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}date']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Sessions createAlias(String alias) { + return Sessions(attachedDatabase, alias); + } +} + +class SessionsData extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final String status; + final String? achievements; + final String? address; + final DateTime? date; + final DateTime createdAt; + const SessionsData( + {required this.id, + required this.title, + required this.content, + required this.status, + this.achievements, + this.address, + this.date, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + map['status'] = Variable(status); + if (!nullToAbsent || achievements != null) { + map['achievements'] = Variable(achievements); + } + if (!nullToAbsent || address != null) { + map['address'] = Variable(address); + } + if (!nullToAbsent || date != null) { + map['date'] = Variable(date); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionsCompanion toCompanion(bool nullToAbsent) { + return SessionsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + status: Value(status), + achievements: achievements == null && nullToAbsent + ? const Value.absent() + : Value(achievements), + address: address == null && nullToAbsent + ? const Value.absent() + : Value(address), + date: date == null && nullToAbsent ? const Value.absent() : Value(date), + createdAt: Value(createdAt), + ); + } + + factory SessionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + status: serializer.fromJson(json['status']), + achievements: serializer.fromJson(json['achievements']), + address: serializer.fromJson(json['address']), + date: serializer.fromJson(json['date']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'status': serializer.toJson(status), + 'achievements': serializer.toJson(achievements), + 'address': serializer.toJson(address), + 'date': serializer.toJson(date), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionsData copyWith( + {int? id, + String? title, + String? content, + String? status, + Value achievements = const Value.absent(), + Value address = const Value.absent(), + Value date = const Value.absent(), + DateTime? createdAt}) => + SessionsData( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: + achievements.present ? achievements.value : this.achievements, + address: address.present ? address.value : this.address, + date: date.present ? date.value : this.date, + createdAt: createdAt ?? this.createdAt, + ); + SessionsData copyWithCompanion(SessionsCompanion data) { + return SessionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + status: data.status.present ? data.status.value : this.status, + achievements: data.achievements.present + ? data.achievements.value + : this.achievements, + address: data.address.present ? data.address.value : this.address, + date: data.date.present ? data.date.value : this.date, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, title, content, status, achievements, address, date, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionsData && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.status == this.status && + other.achievements == this.achievements && + other.address == this.address && + other.date == this.date && + other.createdAt == this.createdAt); +} + +class SessionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value status; + final Value achievements; + final Value address; + final Value date; + final Value createdAt; + const SessionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.status = const Value.absent(), + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + required String status, + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title), + content = Value(content), + status = Value(status); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? status, + Expression? achievements, + Expression? address, + Expression? date, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (status != null) 'status': status, + if (achievements != null) 'achievements': achievements, + if (address != null) 'address': address, + if (date != null) 'date': date, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? status, + Value? achievements, + Value? address, + Value? date, + Value? createdAt}) { + return SessionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: achievements ?? this.achievements, + address: address ?? this.address, + date: date ?? this.date, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (achievements.present) { + map['achievements'] = Variable(achievements.value); + } + if (address.present) { + map['address'] = Variable(address.value); + } + if (date.present) { + map['date'] = Variable(date.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Activities extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Activities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 100), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn force = GeneratedColumn( + 'force', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn level = GeneratedColumn( + 'level', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn mechanic = GeneratedColumn( + 'mechanic', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn equipment = GeneratedColumn( + 'equipment', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn primaryMuscles = GeneratedColumn( + 'primary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn secondaryMuscles = GeneratedColumn( + 'secondary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => [ + id, + title, + type, + description, + category, + force, + level, + mechanic, + equipment, + primaryMuscles, + secondaryMuscles, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activities'; + @override + Set get $primaryKey => {id}; + @override + ActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type']), + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body']), + category: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}category']), + force: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}force']), + level: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}level']), + mechanic: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}mechanic']), + equipment: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}equipment']), + primaryMuscles: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}primary_muscles']), + secondaryMuscles: attachedDatabase.typeMapping.read( + DriftSqlType.string, data['${effectivePrefix}secondary_muscles']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Activities createAlias(String alias) { + return Activities(attachedDatabase, alias); + } +} + +class ActivitiesData extends DataClass implements Insertable { + final int id; + final String title; + final String? type; + final String? description; + final String? category; + final String? force; + final String? level; + final String? mechanic; + final String? equipment; + final String? primaryMuscles; + final String? secondaryMuscles; + final DateTime createdAt; + const ActivitiesData( + {required this.id, + required this.title, + this.type, + this.description, + this.category, + this.force, + this.level, + this.mechanic, + this.equipment, + this.primaryMuscles, + this.secondaryMuscles, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + if (!nullToAbsent || type != null) { + map['type'] = Variable(type); + } + if (!nullToAbsent || description != null) { + map['body'] = Variable(description); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + if (!nullToAbsent || force != null) { + map['force'] = Variable(force); + } + if (!nullToAbsent || level != null) { + map['level'] = Variable(level); + } + if (!nullToAbsent || mechanic != null) { + map['mechanic'] = Variable(mechanic); + } + if (!nullToAbsent || equipment != null) { + map['equipment'] = Variable(equipment); + } + if (!nullToAbsent || primaryMuscles != null) { + map['primary_muscles'] = Variable(primaryMuscles); + } + if (!nullToAbsent || secondaryMuscles != null) { + map['secondary_muscles'] = Variable(secondaryMuscles); + } + map['created_at'] = Variable(createdAt); + return map; + } + + ActivitiesCompanion toCompanion(bool nullToAbsent) { + return ActivitiesCompanion( + id: Value(id), + title: Value(title), + type: type == null && nullToAbsent ? const Value.absent() : Value(type), + description: description == null && nullToAbsent + ? const Value.absent() + : Value(description), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + force: + force == null && nullToAbsent ? const Value.absent() : Value(force), + level: + level == null && nullToAbsent ? const Value.absent() : Value(level), + mechanic: mechanic == null && nullToAbsent + ? const Value.absent() + : Value(mechanic), + equipment: equipment == null && nullToAbsent + ? const Value.absent() + : Value(equipment), + primaryMuscles: primaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(primaryMuscles), + secondaryMuscles: secondaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(secondaryMuscles), + createdAt: Value(createdAt), + ); + } + + factory ActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivitiesData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + type: serializer.fromJson(json['type']), + description: serializer.fromJson(json['description']), + category: serializer.fromJson(json['category']), + force: serializer.fromJson(json['force']), + level: serializer.fromJson(json['level']), + mechanic: serializer.fromJson(json['mechanic']), + equipment: serializer.fromJson(json['equipment']), + primaryMuscles: serializer.fromJson(json['primaryMuscles']), + secondaryMuscles: serializer.fromJson(json['secondaryMuscles']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'type': serializer.toJson(type), + 'description': serializer.toJson(description), + 'category': serializer.toJson(category), + 'force': serializer.toJson(force), + 'level': serializer.toJson(level), + 'mechanic': serializer.toJson(mechanic), + 'equipment': serializer.toJson(equipment), + 'primaryMuscles': serializer.toJson(primaryMuscles), + 'secondaryMuscles': serializer.toJson(secondaryMuscles), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivitiesData copyWith( + {int? id, + String? title, + Value type = const Value.absent(), + Value description = const Value.absent(), + Value category = const Value.absent(), + Value force = const Value.absent(), + Value level = const Value.absent(), + Value mechanic = const Value.absent(), + Value equipment = const Value.absent(), + Value primaryMuscles = const Value.absent(), + Value secondaryMuscles = const Value.absent(), + DateTime? createdAt}) => + ActivitiesData( + id: id ?? this.id, + title: title ?? this.title, + type: type.present ? type.value : this.type, + description: description.present ? description.value : this.description, + category: category.present ? category.value : this.category, + force: force.present ? force.value : this.force, + level: level.present ? level.value : this.level, + mechanic: mechanic.present ? mechanic.value : this.mechanic, + equipment: equipment.present ? equipment.value : this.equipment, + primaryMuscles: + primaryMuscles.present ? primaryMuscles.value : this.primaryMuscles, + secondaryMuscles: secondaryMuscles.present + ? secondaryMuscles.value + : this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + ActivitiesData copyWithCompanion(ActivitiesCompanion data) { + return ActivitiesData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + type: data.type.present ? data.type.value : this.type, + description: + data.description.present ? data.description.value : this.description, + category: data.category.present ? data.category.value : this.category, + force: data.force.present ? data.force.value : this.force, + level: data.level.present ? data.level.value : this.level, + mechanic: data.mechanic.present ? data.mechanic.value : this.mechanic, + equipment: data.equipment.present ? data.equipment.value : this.equipment, + primaryMuscles: data.primaryMuscles.present + ? data.primaryMuscles.value + : this.primaryMuscles, + secondaryMuscles: data.secondaryMuscles.present + ? data.secondaryMuscles.value + : this.secondaryMuscles, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivitiesData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, type, description, category, force, + level, mechanic, equipment, primaryMuscles, secondaryMuscles, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivitiesData && + other.id == this.id && + other.title == this.title && + other.type == this.type && + other.description == this.description && + other.category == this.category && + other.force == this.force && + other.level == this.level && + other.mechanic == this.mechanic && + other.equipment == this.equipment && + other.primaryMuscles == this.primaryMuscles && + other.secondaryMuscles == this.secondaryMuscles && + other.createdAt == this.createdAt); +} + +class ActivitiesCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value type; + final Value description; + final Value category; + final Value force; + final Value level; + final Value mechanic; + final Value equipment; + final Value primaryMuscles; + final Value secondaryMuscles; + final Value createdAt; + const ActivitiesCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivitiesCompanion.insert({ + this.id = const Value.absent(), + required String title, + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? type, + Expression? description, + Expression? category, + Expression? force, + Expression? level, + Expression? mechanic, + Expression? equipment, + Expression? primaryMuscles, + Expression? secondaryMuscles, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (type != null) 'type': type, + if (description != null) 'body': description, + if (category != null) 'category': category, + if (force != null) 'force': force, + if (level != null) 'level': level, + if (mechanic != null) 'mechanic': mechanic, + if (equipment != null) 'equipment': equipment, + if (primaryMuscles != null) 'primary_muscles': primaryMuscles, + if (secondaryMuscles != null) 'secondary_muscles': secondaryMuscles, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivitiesCompanion copyWith( + {Value? id, + Value? title, + Value? type, + Value? description, + Value? category, + Value? force, + Value? level, + Value? mechanic, + Value? equipment, + Value? primaryMuscles, + Value? secondaryMuscles, + Value? createdAt}) { + return ActivitiesCompanion( + id: id ?? this.id, + title: title ?? this.title, + type: type ?? this.type, + description: description ?? this.description, + category: category ?? this.category, + force: force ?? this.force, + level: level ?? this.level, + mechanic: mechanic ?? this.mechanic, + equipment: equipment ?? this.equipment, + primaryMuscles: primaryMuscles ?? this.primaryMuscles, + secondaryMuscles: secondaryMuscles ?? this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + if (force.present) { + map['force'] = Variable(force.value); + } + if (level.present) { + map['level'] = Variable(level.value); + } + if (mechanic.present) { + map['mechanic'] = Variable(mechanic.value); + } + if (equipment.present) { + map['equipment'] = Variable(equipment.value); + } + if (primaryMuscles.present) { + map['primary_muscles'] = Variable(primaryMuscles.value); + } + if (secondaryMuscles.present) { + map['secondary_muscles'] = Variable(secondaryMuscles.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivitiesCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionActivities extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionActivities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn results = GeneratedColumn( + 'results', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, sessionId, activityId, position, results, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_activities'; + @override + Set get $primaryKey => {id}; + @override + SessionActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + results: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}results']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionActivities createAlias(String alias) { + return SessionActivities(attachedDatabase, alias); + } +} + +class SessionActivitiesData extends DataClass + implements Insertable { + final int id; + final int sessionId; + final int activityId; + final int position; + final String? results; + final DateTime createdAt; + const SessionActivitiesData( + {required this.id, + required this.sessionId, + required this.activityId, + required this.position, + this.results, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['session_id'] = Variable(sessionId); + map['activity_id'] = Variable(activityId); + map['position'] = Variable(position); + if (!nullToAbsent || results != null) { + map['results'] = Variable(results); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionActivitiesCompanion toCompanion(bool nullToAbsent) { + return SessionActivitiesCompanion( + id: Value(id), + sessionId: Value(sessionId), + activityId: Value(activityId), + position: Value(position), + results: results == null && nullToAbsent + ? const Value.absent() + : Value(results), + createdAt: Value(createdAt), + ); + } + + factory SessionActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionActivitiesData( + id: serializer.fromJson(json['id']), + sessionId: serializer.fromJson(json['sessionId']), + activityId: serializer.fromJson(json['activityId']), + position: serializer.fromJson(json['position']), + results: serializer.fromJson(json['results']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'sessionId': serializer.toJson(sessionId), + 'activityId': serializer.toJson(activityId), + 'position': serializer.toJson(position), + 'results': serializer.toJson(results), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionActivitiesData copyWith( + {int? id, + int? sessionId, + int? activityId, + int? position, + Value results = const Value.absent(), + DateTime? createdAt}) => + SessionActivitiesData( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results.present ? results.value : this.results, + createdAt: createdAt ?? this.createdAt, + ); + SessionActivitiesData copyWithCompanion(SessionActivitiesCompanion data) { + return SessionActivitiesData( + id: data.id.present ? data.id.value : this.id, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + position: data.position.present ? data.position.value : this.position, + results: data.results.present ? data.results.value : this.results, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesData(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, sessionId, activityId, position, results, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionActivitiesData && + other.id == this.id && + other.sessionId == this.sessionId && + other.activityId == this.activityId && + other.position == this.position && + other.results == this.results && + other.createdAt == this.createdAt); +} + +class SessionActivitiesCompanion + extends UpdateCompanion { + final Value id; + final Value sessionId; + final Value activityId; + final Value position; + final Value results; + final Value createdAt; + const SessionActivitiesCompanion({ + this.id = const Value.absent(), + this.sessionId = const Value.absent(), + this.activityId = const Value.absent(), + this.position = const Value.absent(), + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionActivitiesCompanion.insert({ + this.id = const Value.absent(), + required int sessionId, + required int activityId, + required int position, + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }) : sessionId = Value(sessionId), + activityId = Value(activityId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? sessionId, + Expression? activityId, + Expression? position, + Expression? results, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (sessionId != null) 'session_id': sessionId, + if (activityId != null) 'activity_id': activityId, + if (position != null) 'position': position, + if (results != null) 'results': results, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionActivitiesCompanion copyWith( + {Value? id, + Value? sessionId, + Value? activityId, + Value? position, + Value? results, + Value? createdAt}) { + return SessionActivitiesCompanion( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results ?? this.results, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (results.present) { + map['results'] = Variable(results.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesCompanion(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActionSets extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActionSets(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn name = GeneratedColumn( + 'name', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn reps = GeneratedColumn( + 'reps', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn restBeforeSet = GeneratedColumn( + 'rest_before_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSet = GeneratedColumn( + 'rest_after_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => [ + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'action_sets'; + @override + Set get $primaryKey => {id}; + @override + ActionSetsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionSetsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + name: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}name'])!, + reps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}reps'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + restBeforeSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_set']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_set']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActionSets createAlias(String alias) { + return ActionSets(attachedDatabase, alias); + } +} + +class ActionSetsData extends DataClass implements Insertable { + final int id; + final String name; + final int reps; + final int activityId; + final int? restBeforeSet; + final int? restBetweenReps; + final int? restAfterSet; + final String repType; + final int? repLength; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final DateTime createdAt; + const ActionSetsData( + {required this.id, + required this.name, + required this.reps, + required this.activityId, + this.restBeforeSet, + this.restBetweenReps, + this.restAfterSet, + required this.repType, + this.repLength, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + map['reps'] = Variable(reps); + map['activity_id'] = Variable(activityId); + if (!nullToAbsent || restBeforeSet != null) { + map['rest_before_set'] = Variable(restBeforeSet); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSet != null) { + map['rest_after_set'] = Variable(restAfterSet); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['created_at'] = Variable(createdAt); + return map; + } + + ActionSetsCompanion toCompanion(bool nullToAbsent) { + return ActionSetsCompanion( + id: Value(id), + name: Value(name), + reps: Value(reps), + activityId: Value(activityId), + restBeforeSet: restBeforeSet == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSet), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSet: restAfterSet == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSet), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + createdAt: Value(createdAt), + ); + } + + factory ActionSetsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionSetsData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + reps: serializer.fromJson(json['reps']), + activityId: serializer.fromJson(json['activityId']), + restBeforeSet: serializer.fromJson(json['restBeforeSet']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSet: serializer.fromJson(json['restAfterSet']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + 'reps': serializer.toJson(reps), + 'activityId': serializer.toJson(activityId), + 'restBeforeSet': serializer.toJson(restBeforeSet), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSet': serializer.toJson(restAfterSet), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionSetsData copyWith( + {int? id, + String? name, + int? reps, + int? activityId, + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + DateTime? createdAt}) => + ActionSetsData( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: + restBeforeSet.present ? restBeforeSet.value : this.restBeforeSet, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSet: + restAfterSet.present ? restAfterSet.value : this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + createdAt: createdAt ?? this.createdAt, + ); + ActionSetsData copyWithCompanion(ActionSetsCompanion data) { + return ActionSetsData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + reps: data.reps.present ? data.reps.value : this.reps, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + restBeforeSet: data.restBeforeSet.present + ? data.restBeforeSet.value + : this.restBeforeSet, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSet: data.restAfterSet.present + ? data.restAfterSet.value + : this.restAfterSet, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionSetsData(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionSetsData && + other.id == this.id && + other.name == this.name && + other.reps == this.reps && + other.activityId == this.activityId && + other.restBeforeSet == this.restBeforeSet && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSet == this.restAfterSet && + other.repType == this.repType && + other.repLength == this.repLength && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.createdAt == this.createdAt); +} + +class ActionSetsCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value reps; + final Value activityId; + final Value restBeforeSet; + final Value restBetweenReps; + final Value restAfterSet; + final Value repType; + final Value repLength; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value createdAt; + const ActionSetsCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.reps = const Value.absent(), + this.activityId = const Value.absent(), + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionSetsCompanion.insert({ + this.id = const Value.absent(), + required String name, + required int reps, + required int activityId, + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.createdAt = const Value.absent(), + }) : name = Value(name), + reps = Value(reps), + activityId = Value(activityId), + repType = Value(repType); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? reps, + Expression? activityId, + Expression? restBeforeSet, + Expression? restBetweenReps, + Expression? restAfterSet, + Expression? repType, + Expression? repLength, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (reps != null) 'reps': reps, + if (activityId != null) 'activity_id': activityId, + if (restBeforeSet != null) 'rest_before_set': restBeforeSet, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSet != null) 'rest_after_set': restAfterSet, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionSetsCompanion copyWith( + {Value? id, + Value? name, + Value? reps, + Value? activityId, + Value? restBeforeSet, + Value? restBetweenReps, + Value? restAfterSet, + Value? repType, + Value? repLength, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? createdAt}) { + return ActionSetsCompanion( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: restBeforeSet ?? this.restBeforeSet, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSet: restAfterSet ?? this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (reps.present) { + map['reps'] = Variable(reps.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (restBeforeSet.present) { + map['rest_before_set'] = Variable(restBeforeSet.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSet.present) { + map['rest_after_set'] = Variable(restAfterSet.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionSetsCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionSets extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionSets(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn setId = GeneratedColumn( + 'set_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES action_sets (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, setId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_sets'; + @override + Set get $primaryKey => {id}; + @override + SessionSetsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionSetsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + setId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}set_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionSets createAlias(String alias) { + return SessionSets(attachedDatabase, alias); + } +} + +class SessionSetsData extends DataClass implements Insertable { + final int id; + final int setId; + final int sessionId; + final int position; + final DateTime createdAt; + const SessionSetsData( + {required this.id, + required this.setId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['set_id'] = Variable(setId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + SessionSetsCompanion toCompanion(bool nullToAbsent) { + return SessionSetsCompanion( + id: Value(id), + setId: Value(setId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory SessionSetsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionSetsData( + id: serializer.fromJson(json['id']), + setId: serializer.fromJson(json['setId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'setId': serializer.toJson(setId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionSetsData copyWith( + {int? id, + int? setId, + int? sessionId, + int? position, + DateTime? createdAt}) => + SessionSetsData( + id: id ?? this.id, + setId: setId ?? this.setId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + SessionSetsData copyWithCompanion(SessionSetsCompanion data) { + return SessionSetsData( + id: data.id.present ? data.id.value : this.id, + setId: data.setId.present ? data.setId.value : this.setId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionSetsData(') + ..write('id: $id, ') + ..write('setId: $setId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, setId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionSetsData && + other.id == this.id && + other.setId == this.setId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class SessionSetsCompanion extends UpdateCompanion { + final Value id; + final Value setId; + final Value sessionId; + final Value position; + final Value createdAt; + const SessionSetsCompanion({ + this.id = const Value.absent(), + this.setId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionSetsCompanion.insert({ + this.id = const Value.absent(), + required int setId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : setId = Value(setId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? setId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (setId != null) 'set_id': setId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionSetsCompanion copyWith( + {Value? id, + Value? setId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return SessionSetsCompanion( + id: id ?? this.id, + setId: setId ?? this.setId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (setId.present) { + map['set_id'] = Variable(setId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionSetsCompanion(') + ..write('id: $id, ') + ..write('setId: $setId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Actions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Actions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn totalSets = GeneratedColumn( + 'total_sets', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn totalReps = GeneratedColumn( + 'total_reps', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 1, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn restBeforeSets = GeneratedColumn( + 'rest_before_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenSets = GeneratedColumn( + 'rest_between_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSets = GeneratedColumn( + 'rest_after_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repWeights = GeneratedColumn( + 'rep_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression('\'pending\'')); + late final GeneratedColumn state = GeneratedColumn( + 'state', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression( + '\'{"currentSet": 0, "currentRep": 0, "currentActionType": 0, "currentTime": 0, "currentAction": 0}\'')); + late final GeneratedColumn set = GeneratedColumn( + 'set', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => [ + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'actions'; + @override + Set get $primaryKey => {id}; + @override + ActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + totalSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}total_sets'])!, + totalReps: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}total_reps'])!, + restBeforeSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_sets']), + restBetweenSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_sets']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_sets']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + repWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_weights']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + state: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}state'])!, + set: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Actions createAlias(String alias) { + return Actions(attachedDatabase, alias); + } +} + +class ActionsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final int totalSets; + final String totalReps; + final int? restBeforeSets; + final int? restBetweenSets; + final int? restBetweenReps; + final int? restAfterSets; + final String repType; + final int? repLength; + final String? repWeights; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final String status; + final String state; + final String set; + final DateTime createdAt; + const ActionsData( + {required this.id, + required this.title, + required this.description, + required this.totalSets, + required this.totalReps, + this.restBeforeSets, + this.restBetweenSets, + this.restBetweenReps, + this.restAfterSets, + required this.repType, + this.repLength, + this.repWeights, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.status, + required this.state, + required this.set, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['total_sets'] = Variable(totalSets); + map['total_reps'] = Variable(totalReps); + if (!nullToAbsent || restBeforeSets != null) { + map['rest_before_sets'] = Variable(restBeforeSets); + } + if (!nullToAbsent || restBetweenSets != null) { + map['rest_between_sets'] = Variable(restBetweenSets); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSets != null) { + map['rest_after_sets'] = Variable(restAfterSets); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || repWeights != null) { + map['rep_weights'] = Variable(repWeights); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['status'] = Variable(status); + map['state'] = Variable(state); + map['set'] = Variable(set); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionsCompanion toCompanion(bool nullToAbsent) { + return ActionsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + totalSets: Value(totalSets), + totalReps: Value(totalReps), + restBeforeSets: restBeforeSets == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSets), + restBetweenSets: restBetweenSets == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenSets), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSets: restAfterSets == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSets), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + repWeights: repWeights == null && nullToAbsent + ? const Value.absent() + : Value(repWeights), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + status: Value(status), + state: Value(state), + set: Value(set), + createdAt: Value(createdAt), + ); + } + + factory ActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + totalSets: serializer.fromJson(json['totalSets']), + totalReps: serializer.fromJson(json['totalReps']), + restBeforeSets: serializer.fromJson(json['restBeforeSets']), + restBetweenSets: serializer.fromJson(json['restBetweenSets']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSets: serializer.fromJson(json['restAfterSets']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + repWeights: serializer.fromJson(json['repWeights']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + status: serializer.fromJson(json['status']), + state: serializer.fromJson(json['state']), + set: serializer.fromJson(json['set']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'totalSets': serializer.toJson(totalSets), + 'totalReps': serializer.toJson(totalReps), + 'restBeforeSets': serializer.toJson(restBeforeSets), + 'restBetweenSets': serializer.toJson(restBetweenSets), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSets': serializer.toJson(restAfterSets), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'repWeights': serializer.toJson(repWeights), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'status': serializer.toJson(status), + 'state': serializer.toJson(state), + 'set': serializer.toJson(set), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionsData copyWith( + {int? id, + String? title, + String? description, + int? totalSets, + String? totalReps, + Value restBeforeSets = const Value.absent(), + Value restBetweenSets = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSets = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value repWeights = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + String? status, + String? state, + String? set, + DateTime? createdAt}) => + ActionsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: + restBeforeSets.present ? restBeforeSets.value : this.restBeforeSets, + restBetweenSets: restBetweenSets.present + ? restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSets: + restAfterSets.present ? restAfterSets.value : this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + repWeights: repWeights.present ? repWeights.value : this.repWeights, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + ActionsData copyWithCompanion(ActionsCompanion data) { + return ActionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + totalSets: data.totalSets.present ? data.totalSets.value : this.totalSets, + totalReps: data.totalReps.present ? data.totalReps.value : this.totalReps, + restBeforeSets: data.restBeforeSets.present + ? data.restBeforeSets.value + : this.restBeforeSets, + restBetweenSets: data.restBetweenSets.present + ? data.restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSets: data.restAfterSets.present + ? data.restAfterSets.value + : this.restAfterSets, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + repWeights: + data.repWeights.present ? data.repWeights.value : this.repWeights, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + status: data.status.present ? data.status.value : this.status, + state: data.state.present ? data.state.value : this.state, + set: data.set.present ? data.set.value : this.set, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.totalSets == this.totalSets && + other.totalReps == this.totalReps && + other.restBeforeSets == this.restBeforeSets && + other.restBetweenSets == this.restBetweenSets && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSets == this.restAfterSets && + other.repType == this.repType && + other.repLength == this.repLength && + other.repWeights == this.repWeights && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.status == this.status && + other.state == this.state && + other.set == this.set && + other.createdAt == this.createdAt); +} + +class ActionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value totalSets; + final Value totalReps; + final Value restBeforeSets; + final Value restBetweenSets; + final Value restBetweenReps; + final Value restAfterSets; + final Value repType; + final Value repLength; + final Value repWeights; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value status; + final Value state; + final Value set; + final Value createdAt; + const ActionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.totalSets = const Value.absent(), + this.totalReps = const Value.absent(), + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + this.set = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required int totalSets, + required String totalReps, + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + required String set, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + totalSets = Value(totalSets), + totalReps = Value(totalReps), + repType = Value(repType), + set = Value(set); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? totalSets, + Expression? totalReps, + Expression? restBeforeSets, + Expression? restBetweenSets, + Expression? restBetweenReps, + Expression? restAfterSets, + Expression? repType, + Expression? repLength, + Expression? repWeights, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? status, + Expression? state, + Expression? set, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (totalSets != null) 'total_sets': totalSets, + if (totalReps != null) 'total_reps': totalReps, + if (restBeforeSets != null) 'rest_before_sets': restBeforeSets, + if (restBetweenSets != null) 'rest_between_sets': restBetweenSets, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSets != null) 'rest_after_sets': restAfterSets, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (repWeights != null) 'rep_weights': repWeights, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (status != null) 'status': status, + if (state != null) 'state': state, + if (set != null) 'set': set, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? totalSets, + Value? totalReps, + Value? restBeforeSets, + Value? restBetweenSets, + Value? restBetweenReps, + Value? restAfterSets, + Value? repType, + Value? repLength, + Value? repWeights, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? status, + Value? state, + Value? set, + Value? createdAt}) { + return ActionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: restBeforeSets ?? this.restBeforeSets, + restBetweenSets: restBetweenSets ?? this.restBetweenSets, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSets: restAfterSets ?? this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + repWeights: repWeights ?? this.repWeights, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (totalSets.present) { + map['total_sets'] = Variable(totalSets.value); + } + if (totalReps.present) { + map['total_reps'] = Variable(totalReps.value); + } + if (restBeforeSets.present) { + map['rest_before_sets'] = Variable(restBeforeSets.value); + } + if (restBetweenSets.present) { + map['rest_between_sets'] = Variable(restBetweenSets.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSets.present) { + map['rest_after_sets'] = Variable(restAfterSets.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (repWeights.present) { + map['rep_weights'] = Variable(repWeights.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (state.present) { + map['state'] = Variable(state.value); + } + if (set.present) { + map['set'] = Variable(set.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActivityActions extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActivityActions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn actionId = GeneratedColumn( + 'action_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES actions (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, activityId, actionId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activity_actions'; + @override + Set get $primaryKey => {id}; + @override + ActivityActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivityActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + actionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}action_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActivityActions createAlias(String alias) { + return ActivityActions(attachedDatabase, alias); + } +} + +class ActivityActionsData extends DataClass + implements Insertable { + final int id; + final int activityId; + final int actionId; + final int sessionId; + final int position; + final DateTime createdAt; + const ActivityActionsData( + {required this.id, + required this.activityId, + required this.actionId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['activity_id'] = Variable(activityId); + map['action_id'] = Variable(actionId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActivityActionsCompanion toCompanion(bool nullToAbsent) { + return ActivityActionsCompanion( + id: Value(id), + activityId: Value(activityId), + actionId: Value(actionId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActivityActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivityActionsData( + id: serializer.fromJson(json['id']), + activityId: serializer.fromJson(json['activityId']), + actionId: serializer.fromJson(json['actionId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'activityId': serializer.toJson(activityId), + 'actionId': serializer.toJson(actionId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivityActionsData copyWith( + {int? id, + int? activityId, + int? actionId, + int? sessionId, + int? position, + DateTime? createdAt}) => + ActivityActionsData( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActivityActionsData copyWithCompanion(ActivityActionsCompanion data) { + return ActivityActionsData( + id: data.id.present ? data.id.value : this.id, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + actionId: data.actionId.present ? data.actionId.value : this.actionId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivityActionsData(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, activityId, actionId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivityActionsData && + other.id == this.id && + other.activityId == this.activityId && + other.actionId == this.actionId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActivityActionsCompanion extends UpdateCompanion { + final Value id; + final Value activityId; + final Value actionId; + final Value sessionId; + final Value position; + final Value createdAt; + const ActivityActionsCompanion({ + this.id = const Value.absent(), + this.activityId = const Value.absent(), + this.actionId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivityActionsCompanion.insert({ + this.id = const Value.absent(), + required int activityId, + required int actionId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : activityId = Value(activityId), + actionId = Value(actionId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? activityId, + Expression? actionId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (activityId != null) 'activity_id': activityId, + if (actionId != null) 'action_id': actionId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivityActionsCompanion copyWith( + {Value? id, + Value? activityId, + Value? actionId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActivityActionsCompanion( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (actionId.present) { + map['action_id'] = Variable(actionId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivityActionsCompanion(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class MediaItems extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + MediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn reference = GeneratedColumn( + 'reference', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, title, description, reference, type, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'media_items'; + @override + Set get $primaryKey => {id}; + @override + MediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + reference: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}reference'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + MediaItems createAlias(String alias) { + return MediaItems(attachedDatabase, alias); + } +} + +class MediaItemsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final String reference; + final String type; + final DateTime createdAt; + const MediaItemsData( + {required this.id, + required this.title, + required this.description, + required this.reference, + required this.type, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['reference'] = Variable(reference); + map['type'] = Variable(type); + map['created_at'] = Variable(createdAt); + return map; + } + + MediaItemsCompanion toCompanion(bool nullToAbsent) { + return MediaItemsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + reference: Value(reference), + type: Value(type), + createdAt: Value(createdAt), + ); + } + + factory MediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MediaItemsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + reference: serializer.fromJson(json['reference']), + type: serializer.fromJson(json['type']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'reference': serializer.toJson(reference), + 'type': serializer.toJson(type), + 'createdAt': serializer.toJson(createdAt), + }; + } + + MediaItemsData copyWith( + {int? id, + String? title, + String? description, + String? reference, + String? type, + DateTime? createdAt}) => + MediaItemsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + MediaItemsData copyWithCompanion(MediaItemsCompanion data) { + return MediaItemsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + reference: data.reference.present ? data.reference.value : this.reference, + type: data.type.present ? data.type.value : this.type, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('MediaItemsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, description, reference, type, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MediaItemsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.reference == this.reference && + other.type == this.type && + other.createdAt == this.createdAt); +} + +class MediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value reference; + final Value type; + final Value createdAt; + const MediaItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.reference = const Value.absent(), + this.type = const Value.absent(), + this.createdAt = const Value.absent(), + }); + MediaItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required String reference, + required String type, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + reference = Value(reference), + type = Value(type); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? reference, + Expression? type, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (reference != null) 'reference': reference, + if (type != null) 'type': type, + if (createdAt != null) 'created_at': createdAt, + }); + } + + MediaItemsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? reference, + Value? type, + Value? createdAt}) { + return MediaItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (reference.present) { + map['reference'] = Variable(reference.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MediaItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ObjectMediaItems extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ObjectMediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn objectId = GeneratedColumn( + 'object_id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn objectType = GeneratedColumn( + 'object_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn mediaId = GeneratedColumn( + 'media_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES media_items (id) ON DELETE CASCADE')); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744139454')); + @override + List get $columns => + [id, objectId, objectType, mediaId, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'object_media_items'; + @override + Set get $primaryKey => {id}; + @override + ObjectMediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ObjectMediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + objectId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}object_id'])!, + objectType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}object_type'])!, + mediaId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}media_id'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ObjectMediaItems createAlias(String alias) { + return ObjectMediaItems(attachedDatabase, alias); + } +} + +class ObjectMediaItemsData extends DataClass + implements Insertable { + final int id; + final int objectId; + final String objectType; + final int mediaId; + final DateTime createdAt; + const ObjectMediaItemsData( + {required this.id, + required this.objectId, + required this.objectType, + required this.mediaId, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['object_id'] = Variable(objectId); + map['object_type'] = Variable(objectType); + map['media_id'] = Variable(mediaId); + map['created_at'] = Variable(createdAt); + return map; + } + + ObjectMediaItemsCompanion toCompanion(bool nullToAbsent) { + return ObjectMediaItemsCompanion( + id: Value(id), + objectId: Value(objectId), + objectType: Value(objectType), + mediaId: Value(mediaId), + createdAt: Value(createdAt), + ); + } + + factory ObjectMediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ObjectMediaItemsData( + id: serializer.fromJson(json['id']), + objectId: serializer.fromJson(json['objectId']), + objectType: serializer.fromJson(json['objectType']), + mediaId: serializer.fromJson(json['mediaId']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'objectId': serializer.toJson(objectId), + 'objectType': serializer.toJson(objectType), + 'mediaId': serializer.toJson(mediaId), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ObjectMediaItemsData copyWith( + {int? id, + int? objectId, + String? objectType, + int? mediaId, + DateTime? createdAt}) => + ObjectMediaItemsData( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + ObjectMediaItemsData copyWithCompanion(ObjectMediaItemsCompanion data) { + return ObjectMediaItemsData( + id: data.id.present ? data.id.value : this.id, + objectId: data.objectId.present ? data.objectId.value : this.objectId, + objectType: + data.objectType.present ? data.objectType.value : this.objectType, + mediaId: data.mediaId.present ? data.mediaId.value : this.mediaId, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsData(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, objectId, objectType, mediaId, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ObjectMediaItemsData && + other.id == this.id && + other.objectId == this.objectId && + other.objectType == this.objectType && + other.mediaId == this.mediaId && + other.createdAt == this.createdAt); +} + +class ObjectMediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value objectId; + final Value objectType; + final Value mediaId; + final Value createdAt; + const ObjectMediaItemsCompanion({ + this.id = const Value.absent(), + this.objectId = const Value.absent(), + this.objectType = const Value.absent(), + this.mediaId = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ObjectMediaItemsCompanion.insert({ + this.id = const Value.absent(), + required int objectId, + required String objectType, + required int mediaId, + this.createdAt = const Value.absent(), + }) : objectId = Value(objectId), + objectType = Value(objectType), + mediaId = Value(mediaId); + static Insertable custom({ + Expression? id, + Expression? objectId, + Expression? objectType, + Expression? mediaId, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (objectId != null) 'object_id': objectId, + if (objectType != null) 'object_type': objectType, + if (mediaId != null) 'media_id': mediaId, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ObjectMediaItemsCompanion copyWith( + {Value? id, + Value? objectId, + Value? objectType, + Value? mediaId, + Value? createdAt}) { + return ObjectMediaItemsCompanion( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (objectId.present) { + map['object_id'] = Variable(objectId.value); + } + if (objectType.present) { + map['object_type'] = Variable(objectType.value); + } + if (mediaId.present) { + map['media_id'] = Variable(mediaId.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsCompanion(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class DatabaseAtV39 extends GeneratedDatabase { + DatabaseAtV39(QueryExecutor e) : super(e); + late final Sessions sessions = Sessions(this); + late final Activities activities = Activities(this); + late final SessionActivities sessionActivities = SessionActivities(this); + late final ActionSets actionSets = ActionSets(this); + late final SessionSets sessionSets = SessionSets(this); + late final Actions actions = Actions(this); + late final ActivityActions activityActions = ActivityActions(this); + late final MediaItems mediaItems = MediaItems(this); + late final ObjectMediaItems objectMediaItems = ObjectMediaItems(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + sessions, + activities, + sessionActivities, + actionSets, + sessionSets, + actions, + activityActions, + mediaItems, + objectMediaItems + ]; + @override + int get schemaVersion => 39; +} diff --git a/test/drift/sendtrain/generated/schema_v40.dart b/test/drift/sendtrain/generated/schema_v40.dart new file mode 100644 index 0000000..470b924 --- /dev/null +++ b/test/drift/sendtrain/generated/schema_v40.dart @@ -0,0 +1,3341 @@ +// dart format width=80 +// GENERATED CODE, DO NOT EDIT BY HAND. +// ignore_for_file: type=lint +import 'package:drift/drift.dart'; + +class Sessions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Sessions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn achievements = GeneratedColumn( + 'achievements', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn address = GeneratedColumn( + 'address', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 256), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn date = GeneratedColumn( + 'date', aliasedName, true, + type: DriftSqlType.dateTime, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => + [id, title, content, status, achievements, address, date, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'sessions'; + @override + Set get $primaryKey => {id}; + @override + SessionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + achievements: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}achievements']), + address: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}address']), + date: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}date']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Sessions createAlias(String alias) { + return Sessions(attachedDatabase, alias); + } +} + +class SessionsData extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final String status; + final String? achievements; + final String? address; + final DateTime? date; + final DateTime createdAt; + const SessionsData( + {required this.id, + required this.title, + required this.content, + required this.status, + this.achievements, + this.address, + this.date, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + map['status'] = Variable(status); + if (!nullToAbsent || achievements != null) { + map['achievements'] = Variable(achievements); + } + if (!nullToAbsent || address != null) { + map['address'] = Variable(address); + } + if (!nullToAbsent || date != null) { + map['date'] = Variable(date); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionsCompanion toCompanion(bool nullToAbsent) { + return SessionsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + status: Value(status), + achievements: achievements == null && nullToAbsent + ? const Value.absent() + : Value(achievements), + address: address == null && nullToAbsent + ? const Value.absent() + : Value(address), + date: date == null && nullToAbsent ? const Value.absent() : Value(date), + createdAt: Value(createdAt), + ); + } + + factory SessionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + status: serializer.fromJson(json['status']), + achievements: serializer.fromJson(json['achievements']), + address: serializer.fromJson(json['address']), + date: serializer.fromJson(json['date']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'status': serializer.toJson(status), + 'achievements': serializer.toJson(achievements), + 'address': serializer.toJson(address), + 'date': serializer.toJson(date), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionsData copyWith( + {int? id, + String? title, + String? content, + String? status, + Value achievements = const Value.absent(), + Value address = const Value.absent(), + Value date = const Value.absent(), + DateTime? createdAt}) => + SessionsData( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: + achievements.present ? achievements.value : this.achievements, + address: address.present ? address.value : this.address, + date: date.present ? date.value : this.date, + createdAt: createdAt ?? this.createdAt, + ); + SessionsData copyWithCompanion(SessionsCompanion data) { + return SessionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + status: data.status.present ? data.status.value : this.status, + achievements: data.achievements.present + ? data.achievements.value + : this.achievements, + address: data.address.present ? data.address.value : this.address, + date: data.date.present ? data.date.value : this.date, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, title, content, status, achievements, address, date, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionsData && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.status == this.status && + other.achievements == this.achievements && + other.address == this.address && + other.date == this.date && + other.createdAt == this.createdAt); +} + +class SessionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value status; + final Value achievements; + final Value address; + final Value date; + final Value createdAt; + const SessionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.status = const Value.absent(), + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + required String status, + this.achievements = const Value.absent(), + this.address = const Value.absent(), + this.date = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title), + content = Value(content), + status = Value(status); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? status, + Expression? achievements, + Expression? address, + Expression? date, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (status != null) 'status': status, + if (achievements != null) 'achievements': achievements, + if (address != null) 'address': address, + if (date != null) 'date': date, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? status, + Value? achievements, + Value? address, + Value? date, + Value? createdAt}) { + return SessionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + status: status ?? this.status, + achievements: achievements ?? this.achievements, + address: address ?? this.address, + date: date ?? this.date, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (achievements.present) { + map['achievements'] = Variable(achievements.value); + } + if (address.present) { + map['address'] = Variable(address.value); + } + if (date.present) { + map['date'] = Variable(date.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('status: $status, ') + ..write('achievements: $achievements, ') + ..write('address: $address, ') + ..write('date: $date, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Activities extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Activities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 100), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn force = GeneratedColumn( + 'force', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn level = GeneratedColumn( + 'level', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn mechanic = GeneratedColumn( + 'mechanic', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn equipment = GeneratedColumn( + 'equipment', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn primaryMuscles = GeneratedColumn( + 'primary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn secondaryMuscles = GeneratedColumn( + 'secondary_muscles', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => [ + id, + title, + type, + description, + category, + force, + level, + mechanic, + equipment, + primaryMuscles, + secondaryMuscles, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activities'; + @override + Set get $primaryKey => {id}; + @override + ActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type']), + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body']), + category: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}category']), + force: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}force']), + level: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}level']), + mechanic: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}mechanic']), + equipment: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}equipment']), + primaryMuscles: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}primary_muscles']), + secondaryMuscles: attachedDatabase.typeMapping.read( + DriftSqlType.string, data['${effectivePrefix}secondary_muscles']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Activities createAlias(String alias) { + return Activities(attachedDatabase, alias); + } +} + +class ActivitiesData extends DataClass implements Insertable { + final int id; + final String title; + final String? type; + final String? description; + final String? category; + final String? force; + final String? level; + final String? mechanic; + final String? equipment; + final String? primaryMuscles; + final String? secondaryMuscles; + final DateTime createdAt; + const ActivitiesData( + {required this.id, + required this.title, + this.type, + this.description, + this.category, + this.force, + this.level, + this.mechanic, + this.equipment, + this.primaryMuscles, + this.secondaryMuscles, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + if (!nullToAbsent || type != null) { + map['type'] = Variable(type); + } + if (!nullToAbsent || description != null) { + map['body'] = Variable(description); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + if (!nullToAbsent || force != null) { + map['force'] = Variable(force); + } + if (!nullToAbsent || level != null) { + map['level'] = Variable(level); + } + if (!nullToAbsent || mechanic != null) { + map['mechanic'] = Variable(mechanic); + } + if (!nullToAbsent || equipment != null) { + map['equipment'] = Variable(equipment); + } + if (!nullToAbsent || primaryMuscles != null) { + map['primary_muscles'] = Variable(primaryMuscles); + } + if (!nullToAbsent || secondaryMuscles != null) { + map['secondary_muscles'] = Variable(secondaryMuscles); + } + map['created_at'] = Variable(createdAt); + return map; + } + + ActivitiesCompanion toCompanion(bool nullToAbsent) { + return ActivitiesCompanion( + id: Value(id), + title: Value(title), + type: type == null && nullToAbsent ? const Value.absent() : Value(type), + description: description == null && nullToAbsent + ? const Value.absent() + : Value(description), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + force: + force == null && nullToAbsent ? const Value.absent() : Value(force), + level: + level == null && nullToAbsent ? const Value.absent() : Value(level), + mechanic: mechanic == null && nullToAbsent + ? const Value.absent() + : Value(mechanic), + equipment: equipment == null && nullToAbsent + ? const Value.absent() + : Value(equipment), + primaryMuscles: primaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(primaryMuscles), + secondaryMuscles: secondaryMuscles == null && nullToAbsent + ? const Value.absent() + : Value(secondaryMuscles), + createdAt: Value(createdAt), + ); + } + + factory ActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivitiesData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + type: serializer.fromJson(json['type']), + description: serializer.fromJson(json['description']), + category: serializer.fromJson(json['category']), + force: serializer.fromJson(json['force']), + level: serializer.fromJson(json['level']), + mechanic: serializer.fromJson(json['mechanic']), + equipment: serializer.fromJson(json['equipment']), + primaryMuscles: serializer.fromJson(json['primaryMuscles']), + secondaryMuscles: serializer.fromJson(json['secondaryMuscles']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'type': serializer.toJson(type), + 'description': serializer.toJson(description), + 'category': serializer.toJson(category), + 'force': serializer.toJson(force), + 'level': serializer.toJson(level), + 'mechanic': serializer.toJson(mechanic), + 'equipment': serializer.toJson(equipment), + 'primaryMuscles': serializer.toJson(primaryMuscles), + 'secondaryMuscles': serializer.toJson(secondaryMuscles), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivitiesData copyWith( + {int? id, + String? title, + Value type = const Value.absent(), + Value description = const Value.absent(), + Value category = const Value.absent(), + Value force = const Value.absent(), + Value level = const Value.absent(), + Value mechanic = const Value.absent(), + Value equipment = const Value.absent(), + Value primaryMuscles = const Value.absent(), + Value secondaryMuscles = const Value.absent(), + DateTime? createdAt}) => + ActivitiesData( + id: id ?? this.id, + title: title ?? this.title, + type: type.present ? type.value : this.type, + description: description.present ? description.value : this.description, + category: category.present ? category.value : this.category, + force: force.present ? force.value : this.force, + level: level.present ? level.value : this.level, + mechanic: mechanic.present ? mechanic.value : this.mechanic, + equipment: equipment.present ? equipment.value : this.equipment, + primaryMuscles: + primaryMuscles.present ? primaryMuscles.value : this.primaryMuscles, + secondaryMuscles: secondaryMuscles.present + ? secondaryMuscles.value + : this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + ActivitiesData copyWithCompanion(ActivitiesCompanion data) { + return ActivitiesData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + type: data.type.present ? data.type.value : this.type, + description: + data.description.present ? data.description.value : this.description, + category: data.category.present ? data.category.value : this.category, + force: data.force.present ? data.force.value : this.force, + level: data.level.present ? data.level.value : this.level, + mechanic: data.mechanic.present ? data.mechanic.value : this.mechanic, + equipment: data.equipment.present ? data.equipment.value : this.equipment, + primaryMuscles: data.primaryMuscles.present + ? data.primaryMuscles.value + : this.primaryMuscles, + secondaryMuscles: data.secondaryMuscles.present + ? data.secondaryMuscles.value + : this.secondaryMuscles, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivitiesData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, type, description, category, force, + level, mechanic, equipment, primaryMuscles, secondaryMuscles, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivitiesData && + other.id == this.id && + other.title == this.title && + other.type == this.type && + other.description == this.description && + other.category == this.category && + other.force == this.force && + other.level == this.level && + other.mechanic == this.mechanic && + other.equipment == this.equipment && + other.primaryMuscles == this.primaryMuscles && + other.secondaryMuscles == this.secondaryMuscles && + other.createdAt == this.createdAt); +} + +class ActivitiesCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value type; + final Value description; + final Value category; + final Value force; + final Value level; + final Value mechanic; + final Value equipment; + final Value primaryMuscles; + final Value secondaryMuscles; + final Value createdAt; + const ActivitiesCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivitiesCompanion.insert({ + this.id = const Value.absent(), + required String title, + this.type = const Value.absent(), + this.description = const Value.absent(), + this.category = const Value.absent(), + this.force = const Value.absent(), + this.level = const Value.absent(), + this.mechanic = const Value.absent(), + this.equipment = const Value.absent(), + this.primaryMuscles = const Value.absent(), + this.secondaryMuscles = const Value.absent(), + this.createdAt = const Value.absent(), + }) : title = Value(title); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? type, + Expression? description, + Expression? category, + Expression? force, + Expression? level, + Expression? mechanic, + Expression? equipment, + Expression? primaryMuscles, + Expression? secondaryMuscles, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (type != null) 'type': type, + if (description != null) 'body': description, + if (category != null) 'category': category, + if (force != null) 'force': force, + if (level != null) 'level': level, + if (mechanic != null) 'mechanic': mechanic, + if (equipment != null) 'equipment': equipment, + if (primaryMuscles != null) 'primary_muscles': primaryMuscles, + if (secondaryMuscles != null) 'secondary_muscles': secondaryMuscles, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivitiesCompanion copyWith( + {Value? id, + Value? title, + Value? type, + Value? description, + Value? category, + Value? force, + Value? level, + Value? mechanic, + Value? equipment, + Value? primaryMuscles, + Value? secondaryMuscles, + Value? createdAt}) { + return ActivitiesCompanion( + id: id ?? this.id, + title: title ?? this.title, + type: type ?? this.type, + description: description ?? this.description, + category: category ?? this.category, + force: force ?? this.force, + level: level ?? this.level, + mechanic: mechanic ?? this.mechanic, + equipment: equipment ?? this.equipment, + primaryMuscles: primaryMuscles ?? this.primaryMuscles, + secondaryMuscles: secondaryMuscles ?? this.secondaryMuscles, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + if (force.present) { + map['force'] = Variable(force.value); + } + if (level.present) { + map['level'] = Variable(level.value); + } + if (mechanic.present) { + map['mechanic'] = Variable(mechanic.value); + } + if (equipment.present) { + map['equipment'] = Variable(equipment.value); + } + if (primaryMuscles.present) { + map['primary_muscles'] = Variable(primaryMuscles.value); + } + if (secondaryMuscles.present) { + map['secondary_muscles'] = Variable(secondaryMuscles.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivitiesCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('type: $type, ') + ..write('description: $description, ') + ..write('category: $category, ') + ..write('force: $force, ') + ..write('level: $level, ') + ..write('mechanic: $mechanic, ') + ..write('equipment: $equipment, ') + ..write('primaryMuscles: $primaryMuscles, ') + ..write('secondaryMuscles: $secondaryMuscles, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class SessionActivities extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + SessionActivities(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn results = GeneratedColumn( + 'results', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => + [id, sessionId, activityId, position, results, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'session_activities'; + @override + Set get $primaryKey => {id}; + @override + SessionActivitiesData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SessionActivitiesData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + results: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}results']), + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + SessionActivities createAlias(String alias) { + return SessionActivities(attachedDatabase, alias); + } +} + +class SessionActivitiesData extends DataClass + implements Insertable { + final int id; + final int sessionId; + final int activityId; + final int position; + final String? results; + final DateTime createdAt; + const SessionActivitiesData( + {required this.id, + required this.sessionId, + required this.activityId, + required this.position, + this.results, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['session_id'] = Variable(sessionId); + map['activity_id'] = Variable(activityId); + map['position'] = Variable(position); + if (!nullToAbsent || results != null) { + map['results'] = Variable(results); + } + map['created_at'] = Variable(createdAt); + return map; + } + + SessionActivitiesCompanion toCompanion(bool nullToAbsent) { + return SessionActivitiesCompanion( + id: Value(id), + sessionId: Value(sessionId), + activityId: Value(activityId), + position: Value(position), + results: results == null && nullToAbsent + ? const Value.absent() + : Value(results), + createdAt: Value(createdAt), + ); + } + + factory SessionActivitiesData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SessionActivitiesData( + id: serializer.fromJson(json['id']), + sessionId: serializer.fromJson(json['sessionId']), + activityId: serializer.fromJson(json['activityId']), + position: serializer.fromJson(json['position']), + results: serializer.fromJson(json['results']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'sessionId': serializer.toJson(sessionId), + 'activityId': serializer.toJson(activityId), + 'position': serializer.toJson(position), + 'results': serializer.toJson(results), + 'createdAt': serializer.toJson(createdAt), + }; + } + + SessionActivitiesData copyWith( + {int? id, + int? sessionId, + int? activityId, + int? position, + Value results = const Value.absent(), + DateTime? createdAt}) => + SessionActivitiesData( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results.present ? results.value : this.results, + createdAt: createdAt ?? this.createdAt, + ); + SessionActivitiesData copyWithCompanion(SessionActivitiesCompanion data) { + return SessionActivitiesData( + id: data.id.present ? data.id.value : this.id, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + position: data.position.present ? data.position.value : this.position, + results: data.results.present ? data.results.value : this.results, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesData(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, sessionId, activityId, position, results, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SessionActivitiesData && + other.id == this.id && + other.sessionId == this.sessionId && + other.activityId == this.activityId && + other.position == this.position && + other.results == this.results && + other.createdAt == this.createdAt); +} + +class SessionActivitiesCompanion + extends UpdateCompanion { + final Value id; + final Value sessionId; + final Value activityId; + final Value position; + final Value results; + final Value createdAt; + const SessionActivitiesCompanion({ + this.id = const Value.absent(), + this.sessionId = const Value.absent(), + this.activityId = const Value.absent(), + this.position = const Value.absent(), + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }); + SessionActivitiesCompanion.insert({ + this.id = const Value.absent(), + required int sessionId, + required int activityId, + required int position, + this.results = const Value.absent(), + this.createdAt = const Value.absent(), + }) : sessionId = Value(sessionId), + activityId = Value(activityId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? sessionId, + Expression? activityId, + Expression? position, + Expression? results, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (sessionId != null) 'session_id': sessionId, + if (activityId != null) 'activity_id': activityId, + if (position != null) 'position': position, + if (results != null) 'results': results, + if (createdAt != null) 'created_at': createdAt, + }); + } + + SessionActivitiesCompanion copyWith( + {Value? id, + Value? sessionId, + Value? activityId, + Value? position, + Value? results, + Value? createdAt}) { + return SessionActivitiesCompanion( + id: id ?? this.id, + sessionId: sessionId ?? this.sessionId, + activityId: activityId ?? this.activityId, + position: position ?? this.position, + results: results ?? this.results, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (results.present) { + map['results'] = Variable(results.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SessionActivitiesCompanion(') + ..write('id: $id, ') + ..write('sessionId: $sessionId, ') + ..write('activityId: $activityId, ') + ..write('position: $position, ') + ..write('results: $results, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActionSets extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActionSets(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn name = GeneratedColumn( + 'name', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn reps = GeneratedColumn( + 'reps', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn restBeforeSet = GeneratedColumn( + 'rest_before_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSet = GeneratedColumn( + 'rest_after_set', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => [ + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + sessionId, + position, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'action_sets'; + @override + Set get $primaryKey => {id}; + @override + ActionSetsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionSetsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + name: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}name'])!, + reps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}reps'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + restBeforeSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_set']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSet: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_set']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActionSets createAlias(String alias) { + return ActionSets(attachedDatabase, alias); + } +} + +class ActionSetsData extends DataClass implements Insertable { + final int id; + final String name; + final int reps; + final int activityId; + final int? restBeforeSet; + final int? restBetweenReps; + final int? restAfterSet; + final String repType; + final int? repLength; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final int sessionId; + final int position; + final DateTime createdAt; + const ActionSetsData( + {required this.id, + required this.name, + required this.reps, + required this.activityId, + this.restBeforeSet, + this.restBetweenReps, + this.restAfterSet, + required this.repType, + this.repLength, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + map['reps'] = Variable(reps); + map['activity_id'] = Variable(activityId); + if (!nullToAbsent || restBeforeSet != null) { + map['rest_before_set'] = Variable(restBeforeSet); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSet != null) { + map['rest_after_set'] = Variable(restAfterSet); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionSetsCompanion toCompanion(bool nullToAbsent) { + return ActionSetsCompanion( + id: Value(id), + name: Value(name), + reps: Value(reps), + activityId: Value(activityId), + restBeforeSet: restBeforeSet == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSet), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSet: restAfterSet == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSet), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActionSetsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionSetsData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + reps: serializer.fromJson(json['reps']), + activityId: serializer.fromJson(json['activityId']), + restBeforeSet: serializer.fromJson(json['restBeforeSet']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSet: serializer.fromJson(json['restAfterSet']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + 'reps': serializer.toJson(reps), + 'activityId': serializer.toJson(activityId), + 'restBeforeSet': serializer.toJson(restBeforeSet), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSet': serializer.toJson(restAfterSet), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionSetsData copyWith( + {int? id, + String? name, + int? reps, + int? activityId, + Value restBeforeSet = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSet = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + int? sessionId, + int? position, + DateTime? createdAt}) => + ActionSetsData( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: + restBeforeSet.present ? restBeforeSet.value : this.restBeforeSet, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSet: + restAfterSet.present ? restAfterSet.value : this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActionSetsData copyWithCompanion(ActionSetsCompanion data) { + return ActionSetsData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + reps: data.reps.present ? data.reps.value : this.reps, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + restBeforeSet: data.restBeforeSet.present + ? data.restBeforeSet.value + : this.restBeforeSet, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSet: data.restAfterSet.present + ? data.restAfterSet.value + : this.restAfterSet, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionSetsData(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + reps, + activityId, + restBeforeSet, + restBetweenReps, + restAfterSet, + repType, + repLength, + setWeights, + isAlternating, + tempo, + sessionId, + position, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionSetsData && + other.id == this.id && + other.name == this.name && + other.reps == this.reps && + other.activityId == this.activityId && + other.restBeforeSet == this.restBeforeSet && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSet == this.restAfterSet && + other.repType == this.repType && + other.repLength == this.repLength && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActionSetsCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value reps; + final Value activityId; + final Value restBeforeSet; + final Value restBetweenReps; + final Value restAfterSet; + final Value repType; + final Value repLength; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value sessionId; + final Value position; + final Value createdAt; + const ActionSetsCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.reps = const Value.absent(), + this.activityId = const Value.absent(), + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionSetsCompanion.insert({ + this.id = const Value.absent(), + required String name, + required int reps, + required int activityId, + this.restBeforeSet = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSet = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : name = Value(name), + reps = Value(reps), + activityId = Value(activityId), + repType = Value(repType), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? reps, + Expression? activityId, + Expression? restBeforeSet, + Expression? restBetweenReps, + Expression? restAfterSet, + Expression? repType, + Expression? repLength, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (reps != null) 'reps': reps, + if (activityId != null) 'activity_id': activityId, + if (restBeforeSet != null) 'rest_before_set': restBeforeSet, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSet != null) 'rest_after_set': restAfterSet, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionSetsCompanion copyWith( + {Value? id, + Value? name, + Value? reps, + Value? activityId, + Value? restBeforeSet, + Value? restBetweenReps, + Value? restAfterSet, + Value? repType, + Value? repLength, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActionSetsCompanion( + id: id ?? this.id, + name: name ?? this.name, + reps: reps ?? this.reps, + activityId: activityId ?? this.activityId, + restBeforeSet: restBeforeSet ?? this.restBeforeSet, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSet: restAfterSet ?? this.restAfterSet, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (reps.present) { + map['reps'] = Variable(reps.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (restBeforeSet.present) { + map['rest_before_set'] = Variable(restBeforeSet.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSet.present) { + map['rest_after_set'] = Variable(restAfterSet.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionSetsCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('reps: $reps, ') + ..write('activityId: $activityId, ') + ..write('restBeforeSet: $restBeforeSet, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSet: $restAfterSet, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class Actions extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + Actions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn totalSets = GeneratedColumn( + 'total_sets', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn totalReps = GeneratedColumn( + 'total_reps', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 1, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn restBeforeSets = GeneratedColumn( + 'rest_before_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenSets = GeneratedColumn( + 'rest_between_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restBetweenReps = GeneratedColumn( + 'rest_between_reps', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn restAfterSets = GeneratedColumn( + 'rest_after_sets', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repType = GeneratedColumn( + 'rep_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn repLength = GeneratedColumn( + 'rep_length', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + late final GeneratedColumn repWeights = GeneratedColumn( + 'rep_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn setWeights = GeneratedColumn( + 'set_weights', aliasedName, true, + type: DriftSqlType.string, requiredDuringInsert: false); + late final GeneratedColumn isAlternating = GeneratedColumn( + 'is_alternating', aliasedName, false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'CHECK ("is_alternating" IN (0, 1))'), + defaultValue: const CustomExpression('0')); + late final GeneratedColumn tempo = GeneratedColumn( + 'tempo', aliasedName, true, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 36), + type: DriftSqlType.string, + requiredDuringInsert: false); + late final GeneratedColumn status = GeneratedColumn( + 'status', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression('\'pending\'')); + late final GeneratedColumn state = GeneratedColumn( + 'state', aliasedName, false, + type: DriftSqlType.string, + requiredDuringInsert: false, + defaultValue: const CustomExpression( + '\'{"currentSet": 0, "currentRep": 0, "currentActionType": 0, "currentTime": 0, "currentAction": 0}\'')); + late final GeneratedColumn set = GeneratedColumn( + 'set', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => [ + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'actions'; + @override + Set get $primaryKey => {id}; + @override + ActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + totalSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}total_sets'])!, + totalReps: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}total_reps'])!, + restBeforeSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_before_sets']), + restBetweenSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_sets']), + restBetweenReps: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_between_reps']), + restAfterSets: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rest_after_sets']), + repType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_type'])!, + repLength: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}rep_length']), + repWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}rep_weights']), + setWeights: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set_weights']), + isAlternating: attachedDatabase.typeMapping + .read(DriftSqlType.bool, data['${effectivePrefix}is_alternating'])!, + tempo: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}tempo']), + status: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}status'])!, + state: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}state'])!, + set: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}set'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + Actions createAlias(String alias) { + return Actions(attachedDatabase, alias); + } +} + +class ActionsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final int totalSets; + final String totalReps; + final int? restBeforeSets; + final int? restBetweenSets; + final int? restBetweenReps; + final int? restAfterSets; + final String repType; + final int? repLength; + final String? repWeights; + final String? setWeights; + final bool isAlternating; + final String? tempo; + final String status; + final String state; + final String set; + final DateTime createdAt; + const ActionsData( + {required this.id, + required this.title, + required this.description, + required this.totalSets, + required this.totalReps, + this.restBeforeSets, + this.restBetweenSets, + this.restBetweenReps, + this.restAfterSets, + required this.repType, + this.repLength, + this.repWeights, + this.setWeights, + required this.isAlternating, + this.tempo, + required this.status, + required this.state, + required this.set, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['total_sets'] = Variable(totalSets); + map['total_reps'] = Variable(totalReps); + if (!nullToAbsent || restBeforeSets != null) { + map['rest_before_sets'] = Variable(restBeforeSets); + } + if (!nullToAbsent || restBetweenSets != null) { + map['rest_between_sets'] = Variable(restBetweenSets); + } + if (!nullToAbsent || restBetweenReps != null) { + map['rest_between_reps'] = Variable(restBetweenReps); + } + if (!nullToAbsent || restAfterSets != null) { + map['rest_after_sets'] = Variable(restAfterSets); + } + map['rep_type'] = Variable(repType); + if (!nullToAbsent || repLength != null) { + map['rep_length'] = Variable(repLength); + } + if (!nullToAbsent || repWeights != null) { + map['rep_weights'] = Variable(repWeights); + } + if (!nullToAbsent || setWeights != null) { + map['set_weights'] = Variable(setWeights); + } + map['is_alternating'] = Variable(isAlternating); + if (!nullToAbsent || tempo != null) { + map['tempo'] = Variable(tempo); + } + map['status'] = Variable(status); + map['state'] = Variable(state); + map['set'] = Variable(set); + map['created_at'] = Variable(createdAt); + return map; + } + + ActionsCompanion toCompanion(bool nullToAbsent) { + return ActionsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + totalSets: Value(totalSets), + totalReps: Value(totalReps), + restBeforeSets: restBeforeSets == null && nullToAbsent + ? const Value.absent() + : Value(restBeforeSets), + restBetweenSets: restBetweenSets == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenSets), + restBetweenReps: restBetweenReps == null && nullToAbsent + ? const Value.absent() + : Value(restBetweenReps), + restAfterSets: restAfterSets == null && nullToAbsent + ? const Value.absent() + : Value(restAfterSets), + repType: Value(repType), + repLength: repLength == null && nullToAbsent + ? const Value.absent() + : Value(repLength), + repWeights: repWeights == null && nullToAbsent + ? const Value.absent() + : Value(repWeights), + setWeights: setWeights == null && nullToAbsent + ? const Value.absent() + : Value(setWeights), + isAlternating: Value(isAlternating), + tempo: + tempo == null && nullToAbsent ? const Value.absent() : Value(tempo), + status: Value(status), + state: Value(state), + set: Value(set), + createdAt: Value(createdAt), + ); + } + + factory ActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActionsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + totalSets: serializer.fromJson(json['totalSets']), + totalReps: serializer.fromJson(json['totalReps']), + restBeforeSets: serializer.fromJson(json['restBeforeSets']), + restBetweenSets: serializer.fromJson(json['restBetweenSets']), + restBetweenReps: serializer.fromJson(json['restBetweenReps']), + restAfterSets: serializer.fromJson(json['restAfterSets']), + repType: serializer.fromJson(json['repType']), + repLength: serializer.fromJson(json['repLength']), + repWeights: serializer.fromJson(json['repWeights']), + setWeights: serializer.fromJson(json['setWeights']), + isAlternating: serializer.fromJson(json['isAlternating']), + tempo: serializer.fromJson(json['tempo']), + status: serializer.fromJson(json['status']), + state: serializer.fromJson(json['state']), + set: serializer.fromJson(json['set']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'totalSets': serializer.toJson(totalSets), + 'totalReps': serializer.toJson(totalReps), + 'restBeforeSets': serializer.toJson(restBeforeSets), + 'restBetweenSets': serializer.toJson(restBetweenSets), + 'restBetweenReps': serializer.toJson(restBetweenReps), + 'restAfterSets': serializer.toJson(restAfterSets), + 'repType': serializer.toJson(repType), + 'repLength': serializer.toJson(repLength), + 'repWeights': serializer.toJson(repWeights), + 'setWeights': serializer.toJson(setWeights), + 'isAlternating': serializer.toJson(isAlternating), + 'tempo': serializer.toJson(tempo), + 'status': serializer.toJson(status), + 'state': serializer.toJson(state), + 'set': serializer.toJson(set), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActionsData copyWith( + {int? id, + String? title, + String? description, + int? totalSets, + String? totalReps, + Value restBeforeSets = const Value.absent(), + Value restBetweenSets = const Value.absent(), + Value restBetweenReps = const Value.absent(), + Value restAfterSets = const Value.absent(), + String? repType, + Value repLength = const Value.absent(), + Value repWeights = const Value.absent(), + Value setWeights = const Value.absent(), + bool? isAlternating, + Value tempo = const Value.absent(), + String? status, + String? state, + String? set, + DateTime? createdAt}) => + ActionsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: + restBeforeSets.present ? restBeforeSets.value : this.restBeforeSets, + restBetweenSets: restBetweenSets.present + ? restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: restBetweenReps.present + ? restBetweenReps.value + : this.restBetweenReps, + restAfterSets: + restAfterSets.present ? restAfterSets.value : this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength.present ? repLength.value : this.repLength, + repWeights: repWeights.present ? repWeights.value : this.repWeights, + setWeights: setWeights.present ? setWeights.value : this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo.present ? tempo.value : this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + ActionsData copyWithCompanion(ActionsCompanion data) { + return ActionsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + totalSets: data.totalSets.present ? data.totalSets.value : this.totalSets, + totalReps: data.totalReps.present ? data.totalReps.value : this.totalReps, + restBeforeSets: data.restBeforeSets.present + ? data.restBeforeSets.value + : this.restBeforeSets, + restBetweenSets: data.restBetweenSets.present + ? data.restBetweenSets.value + : this.restBetweenSets, + restBetweenReps: data.restBetweenReps.present + ? data.restBetweenReps.value + : this.restBetweenReps, + restAfterSets: data.restAfterSets.present + ? data.restAfterSets.value + : this.restAfterSets, + repType: data.repType.present ? data.repType.value : this.repType, + repLength: data.repLength.present ? data.repLength.value : this.repLength, + repWeights: + data.repWeights.present ? data.repWeights.value : this.repWeights, + setWeights: + data.setWeights.present ? data.setWeights.value : this.setWeights, + isAlternating: data.isAlternating.present + ? data.isAlternating.value + : this.isAlternating, + tempo: data.tempo.present ? data.tempo.value : this.tempo, + status: data.status.present ? data.status.value : this.status, + state: data.state.present ? data.state.value : this.state, + set: data.set.present ? data.set.value : this.set, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActionsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + title, + description, + totalSets, + totalReps, + restBeforeSets, + restBetweenSets, + restBetweenReps, + restAfterSets, + repType, + repLength, + repWeights, + setWeights, + isAlternating, + tempo, + status, + state, + set, + createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActionsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.totalSets == this.totalSets && + other.totalReps == this.totalReps && + other.restBeforeSets == this.restBeforeSets && + other.restBetweenSets == this.restBetweenSets && + other.restBetweenReps == this.restBetweenReps && + other.restAfterSets == this.restAfterSets && + other.repType == this.repType && + other.repLength == this.repLength && + other.repWeights == this.repWeights && + other.setWeights == this.setWeights && + other.isAlternating == this.isAlternating && + other.tempo == this.tempo && + other.status == this.status && + other.state == this.state && + other.set == this.set && + other.createdAt == this.createdAt); +} + +class ActionsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value totalSets; + final Value totalReps; + final Value restBeforeSets; + final Value restBetweenSets; + final Value restBetweenReps; + final Value restAfterSets; + final Value repType; + final Value repLength; + final Value repWeights; + final Value setWeights; + final Value isAlternating; + final Value tempo; + final Value status; + final Value state; + final Value set; + final Value createdAt; + const ActionsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.totalSets = const Value.absent(), + this.totalReps = const Value.absent(), + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + this.repType = const Value.absent(), + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + this.set = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActionsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required int totalSets, + required String totalReps, + this.restBeforeSets = const Value.absent(), + this.restBetweenSets = const Value.absent(), + this.restBetweenReps = const Value.absent(), + this.restAfterSets = const Value.absent(), + required String repType, + this.repLength = const Value.absent(), + this.repWeights = const Value.absent(), + this.setWeights = const Value.absent(), + this.isAlternating = const Value.absent(), + this.tempo = const Value.absent(), + this.status = const Value.absent(), + this.state = const Value.absent(), + required String set, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + totalSets = Value(totalSets), + totalReps = Value(totalReps), + repType = Value(repType), + set = Value(set); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? totalSets, + Expression? totalReps, + Expression? restBeforeSets, + Expression? restBetweenSets, + Expression? restBetweenReps, + Expression? restAfterSets, + Expression? repType, + Expression? repLength, + Expression? repWeights, + Expression? setWeights, + Expression? isAlternating, + Expression? tempo, + Expression? status, + Expression? state, + Expression? set, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (totalSets != null) 'total_sets': totalSets, + if (totalReps != null) 'total_reps': totalReps, + if (restBeforeSets != null) 'rest_before_sets': restBeforeSets, + if (restBetweenSets != null) 'rest_between_sets': restBetweenSets, + if (restBetweenReps != null) 'rest_between_reps': restBetweenReps, + if (restAfterSets != null) 'rest_after_sets': restAfterSets, + if (repType != null) 'rep_type': repType, + if (repLength != null) 'rep_length': repLength, + if (repWeights != null) 'rep_weights': repWeights, + if (setWeights != null) 'set_weights': setWeights, + if (isAlternating != null) 'is_alternating': isAlternating, + if (tempo != null) 'tempo': tempo, + if (status != null) 'status': status, + if (state != null) 'state': state, + if (set != null) 'set': set, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActionsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? totalSets, + Value? totalReps, + Value? restBeforeSets, + Value? restBetweenSets, + Value? restBetweenReps, + Value? restAfterSets, + Value? repType, + Value? repLength, + Value? repWeights, + Value? setWeights, + Value? isAlternating, + Value? tempo, + Value? status, + Value? state, + Value? set, + Value? createdAt}) { + return ActionsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + totalSets: totalSets ?? this.totalSets, + totalReps: totalReps ?? this.totalReps, + restBeforeSets: restBeforeSets ?? this.restBeforeSets, + restBetweenSets: restBetweenSets ?? this.restBetweenSets, + restBetweenReps: restBetweenReps ?? this.restBetweenReps, + restAfterSets: restAfterSets ?? this.restAfterSets, + repType: repType ?? this.repType, + repLength: repLength ?? this.repLength, + repWeights: repWeights ?? this.repWeights, + setWeights: setWeights ?? this.setWeights, + isAlternating: isAlternating ?? this.isAlternating, + tempo: tempo ?? this.tempo, + status: status ?? this.status, + state: state ?? this.state, + set: set ?? this.set, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (totalSets.present) { + map['total_sets'] = Variable(totalSets.value); + } + if (totalReps.present) { + map['total_reps'] = Variable(totalReps.value); + } + if (restBeforeSets.present) { + map['rest_before_sets'] = Variable(restBeforeSets.value); + } + if (restBetweenSets.present) { + map['rest_between_sets'] = Variable(restBetweenSets.value); + } + if (restBetweenReps.present) { + map['rest_between_reps'] = Variable(restBetweenReps.value); + } + if (restAfterSets.present) { + map['rest_after_sets'] = Variable(restAfterSets.value); + } + if (repType.present) { + map['rep_type'] = Variable(repType.value); + } + if (repLength.present) { + map['rep_length'] = Variable(repLength.value); + } + if (repWeights.present) { + map['rep_weights'] = Variable(repWeights.value); + } + if (setWeights.present) { + map['set_weights'] = Variable(setWeights.value); + } + if (isAlternating.present) { + map['is_alternating'] = Variable(isAlternating.value); + } + if (tempo.present) { + map['tempo'] = Variable(tempo.value); + } + if (status.present) { + map['status'] = Variable(status.value); + } + if (state.present) { + map['state'] = Variable(state.value); + } + if (set.present) { + map['set'] = Variable(set.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActionsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('totalSets: $totalSets, ') + ..write('totalReps: $totalReps, ') + ..write('restBeforeSets: $restBeforeSets, ') + ..write('restBetweenSets: $restBetweenSets, ') + ..write('restBetweenReps: $restBetweenReps, ') + ..write('restAfterSets: $restAfterSets, ') + ..write('repType: $repType, ') + ..write('repLength: $repLength, ') + ..write('repWeights: $repWeights, ') + ..write('setWeights: $setWeights, ') + ..write('isAlternating: $isAlternating, ') + ..write('tempo: $tempo, ') + ..write('status: $status, ') + ..write('state: $state, ') + ..write('set: $set, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ActivityActions extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ActivityActions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn activityId = GeneratedColumn( + 'activity_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES activities (id) ON DELETE CASCADE')); + late final GeneratedColumn actionId = GeneratedColumn( + 'action_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES actions (id) ON DELETE CASCADE')); + late final GeneratedColumn sessionId = GeneratedColumn( + 'session_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES sessions (id) ON DELETE CASCADE')); + late final GeneratedColumn position = GeneratedColumn( + 'position', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => + [id, activityId, actionId, sessionId, position, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'activity_actions'; + @override + Set get $primaryKey => {id}; + @override + ActivityActionsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ActivityActionsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + activityId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}activity_id'])!, + actionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}action_id'])!, + sessionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}session_id'])!, + position: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}position'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ActivityActions createAlias(String alias) { + return ActivityActions(attachedDatabase, alias); + } +} + +class ActivityActionsData extends DataClass + implements Insertable { + final int id; + final int activityId; + final int actionId; + final int sessionId; + final int position; + final DateTime createdAt; + const ActivityActionsData( + {required this.id, + required this.activityId, + required this.actionId, + required this.sessionId, + required this.position, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['activity_id'] = Variable(activityId); + map['action_id'] = Variable(actionId); + map['session_id'] = Variable(sessionId); + map['position'] = Variable(position); + map['created_at'] = Variable(createdAt); + return map; + } + + ActivityActionsCompanion toCompanion(bool nullToAbsent) { + return ActivityActionsCompanion( + id: Value(id), + activityId: Value(activityId), + actionId: Value(actionId), + sessionId: Value(sessionId), + position: Value(position), + createdAt: Value(createdAt), + ); + } + + factory ActivityActionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ActivityActionsData( + id: serializer.fromJson(json['id']), + activityId: serializer.fromJson(json['activityId']), + actionId: serializer.fromJson(json['actionId']), + sessionId: serializer.fromJson(json['sessionId']), + position: serializer.fromJson(json['position']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'activityId': serializer.toJson(activityId), + 'actionId': serializer.toJson(actionId), + 'sessionId': serializer.toJson(sessionId), + 'position': serializer.toJson(position), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ActivityActionsData copyWith( + {int? id, + int? activityId, + int? actionId, + int? sessionId, + int? position, + DateTime? createdAt}) => + ActivityActionsData( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + ActivityActionsData copyWithCompanion(ActivityActionsCompanion data) { + return ActivityActionsData( + id: data.id.present ? data.id.value : this.id, + activityId: + data.activityId.present ? data.activityId.value : this.activityId, + actionId: data.actionId.present ? data.actionId.value : this.actionId, + sessionId: data.sessionId.present ? data.sessionId.value : this.sessionId, + position: data.position.present ? data.position.value : this.position, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ActivityActionsData(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, activityId, actionId, sessionId, position, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ActivityActionsData && + other.id == this.id && + other.activityId == this.activityId && + other.actionId == this.actionId && + other.sessionId == this.sessionId && + other.position == this.position && + other.createdAt == this.createdAt); +} + +class ActivityActionsCompanion extends UpdateCompanion { + final Value id; + final Value activityId; + final Value actionId; + final Value sessionId; + final Value position; + final Value createdAt; + const ActivityActionsCompanion({ + this.id = const Value.absent(), + this.activityId = const Value.absent(), + this.actionId = const Value.absent(), + this.sessionId = const Value.absent(), + this.position = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ActivityActionsCompanion.insert({ + this.id = const Value.absent(), + required int activityId, + required int actionId, + required int sessionId, + required int position, + this.createdAt = const Value.absent(), + }) : activityId = Value(activityId), + actionId = Value(actionId), + sessionId = Value(sessionId), + position = Value(position); + static Insertable custom({ + Expression? id, + Expression? activityId, + Expression? actionId, + Expression? sessionId, + Expression? position, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (activityId != null) 'activity_id': activityId, + if (actionId != null) 'action_id': actionId, + if (sessionId != null) 'session_id': sessionId, + if (position != null) 'position': position, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ActivityActionsCompanion copyWith( + {Value? id, + Value? activityId, + Value? actionId, + Value? sessionId, + Value? position, + Value? createdAt}) { + return ActivityActionsCompanion( + id: id ?? this.id, + activityId: activityId ?? this.activityId, + actionId: actionId ?? this.actionId, + sessionId: sessionId ?? this.sessionId, + position: position ?? this.position, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (activityId.present) { + map['activity_id'] = Variable(activityId.value); + } + if (actionId.present) { + map['action_id'] = Variable(actionId.value); + } + if (sessionId.present) { + map['session_id'] = Variable(sessionId.value); + } + if (position.present) { + map['position'] = Variable(position.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ActivityActionsCompanion(') + ..write('id: $id, ') + ..write('activityId: $activityId, ') + ..write('actionId: $actionId, ') + ..write('sessionId: $sessionId, ') + ..write('position: $position, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class MediaItems extends Table with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + MediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 64), + type: DriftSqlType.string, + requiredDuringInsert: true); + late final GeneratedColumn description = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn reference = GeneratedColumn( + 'reference', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn type = GeneratedColumn( + 'type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => + [id, title, description, reference, type, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'media_items'; + @override + Set get $primaryKey => {id}; + @override + MediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + description: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + reference: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}reference'])!, + type: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}type'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + MediaItems createAlias(String alias) { + return MediaItems(attachedDatabase, alias); + } +} + +class MediaItemsData extends DataClass implements Insertable { + final int id; + final String title; + final String description; + final String reference; + final String type; + final DateTime createdAt; + const MediaItemsData( + {required this.id, + required this.title, + required this.description, + required this.reference, + required this.type, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(description); + map['reference'] = Variable(reference); + map['type'] = Variable(type); + map['created_at'] = Variable(createdAt); + return map; + } + + MediaItemsCompanion toCompanion(bool nullToAbsent) { + return MediaItemsCompanion( + id: Value(id), + title: Value(title), + description: Value(description), + reference: Value(reference), + type: Value(type), + createdAt: Value(createdAt), + ); + } + + factory MediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MediaItemsData( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['description']), + reference: serializer.fromJson(json['reference']), + type: serializer.fromJson(json['type']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'description': serializer.toJson(description), + 'reference': serializer.toJson(reference), + 'type': serializer.toJson(type), + 'createdAt': serializer.toJson(createdAt), + }; + } + + MediaItemsData copyWith( + {int? id, + String? title, + String? description, + String? reference, + String? type, + DateTime? createdAt}) => + MediaItemsData( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + MediaItemsData copyWithCompanion(MediaItemsCompanion data) { + return MediaItemsData( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + description: + data.description.present ? data.description.value : this.description, + reference: data.reference.present ? data.reference.value : this.reference, + type: data.type.present ? data.type.value : this.type, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('MediaItemsData(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, description, reference, type, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MediaItemsData && + other.id == this.id && + other.title == this.title && + other.description == this.description && + other.reference == this.reference && + other.type == this.type && + other.createdAt == this.createdAt); +} + +class MediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value description; + final Value reference; + final Value type; + final Value createdAt; + const MediaItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.description = const Value.absent(), + this.reference = const Value.absent(), + this.type = const Value.absent(), + this.createdAt = const Value.absent(), + }); + MediaItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String description, + required String reference, + required String type, + this.createdAt = const Value.absent(), + }) : title = Value(title), + description = Value(description), + reference = Value(reference), + type = Value(type); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? description, + Expression? reference, + Expression? type, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (description != null) 'body': description, + if (reference != null) 'reference': reference, + if (type != null) 'type': type, + if (createdAt != null) 'created_at': createdAt, + }); + } + + MediaItemsCompanion copyWith( + {Value? id, + Value? title, + Value? description, + Value? reference, + Value? type, + Value? createdAt}) { + return MediaItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + description: description ?? this.description, + reference: reference ?? this.reference, + type: type ?? this.type, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (description.present) { + map['body'] = Variable(description.value); + } + if (reference.present) { + map['reference'] = Variable(reference.value); + } + if (type.present) { + map['type'] = Variable(type.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MediaItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('description: $description, ') + ..write('reference: $reference, ') + ..write('type: $type, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class ObjectMediaItems extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + ObjectMediaItems(this.attachedDatabase, [this._alias]); + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn objectId = GeneratedColumn( + 'object_id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + late final GeneratedColumn objectType = GeneratedColumn( + 'object_type', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + late final GeneratedColumn mediaId = GeneratedColumn( + 'media_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES media_items (id) ON DELETE CASCADE')); + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', aliasedName, false, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: const CustomExpression('1744140262')); + @override + List get $columns => + [id, objectId, objectType, mediaId, createdAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'object_media_items'; + @override + Set get $primaryKey => {id}; + @override + ObjectMediaItemsData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ObjectMediaItemsData( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + objectId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}object_id'])!, + objectType: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}object_type'])!, + mediaId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}media_id'])!, + createdAt: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, + ); + } + + @override + ObjectMediaItems createAlias(String alias) { + return ObjectMediaItems(attachedDatabase, alias); + } +} + +class ObjectMediaItemsData extends DataClass + implements Insertable { + final int id; + final int objectId; + final String objectType; + final int mediaId; + final DateTime createdAt; + const ObjectMediaItemsData( + {required this.id, + required this.objectId, + required this.objectType, + required this.mediaId, + required this.createdAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['object_id'] = Variable(objectId); + map['object_type'] = Variable(objectType); + map['media_id'] = Variable(mediaId); + map['created_at'] = Variable(createdAt); + return map; + } + + ObjectMediaItemsCompanion toCompanion(bool nullToAbsent) { + return ObjectMediaItemsCompanion( + id: Value(id), + objectId: Value(objectId), + objectType: Value(objectType), + mediaId: Value(mediaId), + createdAt: Value(createdAt), + ); + } + + factory ObjectMediaItemsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ObjectMediaItemsData( + id: serializer.fromJson(json['id']), + objectId: serializer.fromJson(json['objectId']), + objectType: serializer.fromJson(json['objectType']), + mediaId: serializer.fromJson(json['mediaId']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'objectId': serializer.toJson(objectId), + 'objectType': serializer.toJson(objectType), + 'mediaId': serializer.toJson(mediaId), + 'createdAt': serializer.toJson(createdAt), + }; + } + + ObjectMediaItemsData copyWith( + {int? id, + int? objectId, + String? objectType, + int? mediaId, + DateTime? createdAt}) => + ObjectMediaItemsData( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + ObjectMediaItemsData copyWithCompanion(ObjectMediaItemsCompanion data) { + return ObjectMediaItemsData( + id: data.id.present ? data.id.value : this.id, + objectId: data.objectId.present ? data.objectId.value : this.objectId, + objectType: + data.objectType.present ? data.objectType.value : this.objectType, + mediaId: data.mediaId.present ? data.mediaId.value : this.mediaId, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsData(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, objectId, objectType, mediaId, createdAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ObjectMediaItemsData && + other.id == this.id && + other.objectId == this.objectId && + other.objectType == this.objectType && + other.mediaId == this.mediaId && + other.createdAt == this.createdAt); +} + +class ObjectMediaItemsCompanion extends UpdateCompanion { + final Value id; + final Value objectId; + final Value objectType; + final Value mediaId; + final Value createdAt; + const ObjectMediaItemsCompanion({ + this.id = const Value.absent(), + this.objectId = const Value.absent(), + this.objectType = const Value.absent(), + this.mediaId = const Value.absent(), + this.createdAt = const Value.absent(), + }); + ObjectMediaItemsCompanion.insert({ + this.id = const Value.absent(), + required int objectId, + required String objectType, + required int mediaId, + this.createdAt = const Value.absent(), + }) : objectId = Value(objectId), + objectType = Value(objectType), + mediaId = Value(mediaId); + static Insertable custom({ + Expression? id, + Expression? objectId, + Expression? objectType, + Expression? mediaId, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (objectId != null) 'object_id': objectId, + if (objectType != null) 'object_type': objectType, + if (mediaId != null) 'media_id': mediaId, + if (createdAt != null) 'created_at': createdAt, + }); + } + + ObjectMediaItemsCompanion copyWith( + {Value? id, + Value? objectId, + Value? objectType, + Value? mediaId, + Value? createdAt}) { + return ObjectMediaItemsCompanion( + id: id ?? this.id, + objectId: objectId ?? this.objectId, + objectType: objectType ?? this.objectType, + mediaId: mediaId ?? this.mediaId, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (objectId.present) { + map['object_id'] = Variable(objectId.value); + } + if (objectType.present) { + map['object_type'] = Variable(objectType.value); + } + if (mediaId.present) { + map['media_id'] = Variable(mediaId.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ObjectMediaItemsCompanion(') + ..write('id: $id, ') + ..write('objectId: $objectId, ') + ..write('objectType: $objectType, ') + ..write('mediaId: $mediaId, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +class DatabaseAtV40 extends GeneratedDatabase { + DatabaseAtV40(QueryExecutor e) : super(e); + late final Sessions sessions = Sessions(this); + late final Activities activities = Activities(this); + late final SessionActivities sessionActivities = SessionActivities(this); + late final ActionSets actionSets = ActionSets(this); + late final Actions actions = Actions(this); + late final ActivityActions activityActions = ActivityActions(this); + late final MediaItems mediaItems = MediaItems(this); + late final ObjectMediaItems objectMediaItems = ObjectMediaItems(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + sessions, + activities, + sessionActivities, + actionSets, + actions, + activityActions, + mediaItems, + objectMediaItems + ]; + @override + int get schemaVersion => 40; +}