public void UpdateTrainingGoal(TrainingGoalDetails goal)
        {
            foreach (var exercise in goal.Exercises)
            {
                exercise.Id = Guid.NewGuid();
            }

            using (var conn = CreateConnection())
                using (var tran = conn.BeginTransaction())
                {
                    try
                    {
                        conn.Execute("DELETE FROM TrainingGoalExercise WHERE TrainingGoalId=@Id", goal, tran);

                        conn.Execute("UPDATE TrainingGoal SET Name=@Name WHERE Id=@Id", goal, tran);
                        conn.Execute("INSERT TrainingGoalExercise(Id,TrainingGoalId,[Index],ExerciseId,Sets,Reps,Frequency) VALUES (@Id,@TrainingGoalId,@index,@ExerciseId,@Sets,@Reps,@Frequency)", goal.Exercises.Select((e, index) => new
                        {
                            e.Id,
                            TrainingGoalId = goal.Id,
                            index,
                            e.ExerciseId,
                            e.Sets,
                            e.Reps,
                            e.Frequency
                        }), tran);
                        tran.Commit();
                    }
                    catch
                    {
                        tran.Rollback();
                        throw;
                    }
                }
        }
        public void CreateTrainingGoal(TrainingGoalDetails goal)
        {
            goal.Id = Guid.NewGuid();
            foreach (var exercise in goal.Exercises)
            {
                exercise.Id = Guid.NewGuid();
            }

            using (var conn = CreateConnection())
                using (var tran = conn.BeginTransaction())
                {
                    try
                    {
                        conn.Execute("INSERT INTO TrainingGoal(Id,UserId,Name,Created) VALUES(@Id,@UserId,@Name,@Created)", goal, tran);
                        conn.Execute("INSERT TrainingGoalExercise(Id,TrainingGoalId,[Index],ExerciseId,Sets,Reps,Frequency) VALUES (@Id,@TrainingGoalId,@index,@ExerciseId,@Sets,@Reps,@Frequency)", goal.Exercises.Select((e, index) => new
                        {
                            e.Id,
                            TrainingGoalId = goal.Id,
                            index,
                            e.ExerciseId,
                            e.Sets,
                            e.Reps,
                            e.Frequency
                        }), tran);
                        tran.Commit();
                    }
                    catch
                    {
                        tran.Rollback();
                        throw;
                    }
                }
        }