Skip to content

Commit d6c28c1

Browse files
committed
fix(1158): garmin activity sync fail
1 parent 166453b commit d6c28c1

2 files changed

Lines changed: 40 additions & 14 deletions

File tree

SparkyFitnessServer/models/exerciseEntry.ts

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,22 @@ async function _updateExerciseEntryWithClient(
267267
: currentEntry.distance,
268268
avg_heart_rate:
269269
updateData.avg_heart_rate !== undefined
270-
? updateData.avg_heart_rate
270+
? updateData.avg_heart_rate != null
271+
? Math.round(updateData.avg_heart_rate)
272+
: null
271273
: currentEntry.avg_heart_rate,
272274
sort_order:
273275
updateData.sort_order !== undefined
274-
? updateData.sort_order
276+
? updateData.sort_order != null
277+
? Math.round(updateData.sort_order)
278+
: 0
275279
: currentEntry.sort_order,
280+
steps:
281+
updateData.steps !== undefined
282+
? updateData.steps != null
283+
? Math.round(updateData.steps)
284+
: null
285+
: currentEntry.steps,
276286
// Snapshot fields - these should ideally come from the exercise itself if exercise_id is updated
277287
exercise_name: updateData.exercise_name || currentEntry.exercise_name,
278288
calories_per_hour:
@@ -526,10 +536,12 @@ async function _createExerciseEntryWithClient(
526536
snapshot.instructions,
527537
snapshot.images,
528538
entryData.distance || null, // Ensure distance is not undefined
529-
entryData.avg_heart_rate || null, // Ensure avg_heart_rate is not undefined
539+
entryData.avg_heart_rate != null
540+
? Math.round(entryData.avg_heart_rate)
541+
: null, // Ensure avg_heart_rate is an integer
530542
exercisePresetEntryId, // New parameter
531-
entryData.sort_order || 0,
532-
entryData.steps || null,
543+
entryData.sort_order != null ? Math.round(entryData.sort_order) : 0,
544+
entryData.steps != null ? Math.round(entryData.steps) : null,
533545
]
534546
);
535547
newEntryId = entryResult.rows[0].id;
@@ -646,10 +658,11 @@ async function updateExerciseEntry(
646658
distance = COALESCE($8, distance),
647659
avg_heart_rate = COALESCE($9, avg_heart_rate),
648660
sort_order = COALESCE($10, sort_order),
649-
exercise_name = COALESCE($11, exercise_name),
650-
updated_by_user_id = $12,
661+
steps = COALESCE($11, steps),
662+
exercise_name = COALESCE($12, exercise_name),
663+
updated_by_user_id = $13,
651664
updated_at = now()
652-
WHERE id = $13 AND user_id = $14
665+
WHERE id = $14 AND user_id = $15
653666
RETURNING id`,
654667
[
655668
updateData.exercise_id,
@@ -660,8 +673,13 @@ async function updateExerciseEntry(
660673
updateData.workout_plan_assignment_id || null,
661674
updateData.image_url || null,
662675
updateData.distance || null,
663-
updateData.avg_heart_rate || null,
664-
updateData.sort_order !== undefined ? updateData.sort_order : null,
676+
updateData.avg_heart_rate != null
677+
? Math.round(updateData.avg_heart_rate)
678+
: null,
679+
updateData.sort_order != null
680+
? Math.round(updateData.sort_order)
681+
: null,
682+
updateData.steps != null ? Math.round(updateData.steps) : null,
665683
updateData.exercise_name || null,
666684
actingUserId,
667685
id,

SparkyFitnessServer/services/garminService.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,9 @@ async function processGarminWorkoutSession(
515515
source_id: activity.activityId
516516
? `${activity.activityId}_${exerciseSortOrder}`
517517
: null,
518-
steps: activity.steps || activity.totalSteps || activity.stepCount || 0,
518+
steps: Math.round(
519+
activity.steps || activity.totalSteps || activity.stepCount || 0
520+
),
519521
};
520522
await exerciseEntryRepository.createExerciseEntry(
521523
userId,
@@ -659,14 +661,20 @@ async function processGarminSimpleActivity(
659661
const exerciseEntryData = {
660662
exercise_id: exercise.id,
661663
duration_minutes: activity.duration || 0,
662-
calories_burned: activity.active_calories || 0,
664+
calories_burned: Math.round(activity.active_calories || 0),
663665
entry_date: entryDate,
664666
notes: `Garmin Activity: ${activity.activityName} (${activity.activityType?.typeKey})`,
665667
distance: activity.distance,
666668
avg_heart_rate:
667-
activity.averageHR || activity.averageHeartRateInBeatsPerMinute || null,
669+
activity.averageHR || activity.averageHeartRateInBeatsPerMinute
670+
? Math.round(
671+
activity.averageHR || activity.averageHeartRateInBeatsPerMinute
672+
)
673+
: null,
668674
source_id: activity.activityId?.toString() ?? null,
669-
steps: activity.steps || activity.totalSteps || activity.stepCount || 0,
675+
steps: Math.round(
676+
activity.steps || activity.totalSteps || activity.stepCount || 0
677+
),
670678
};
671679
const newEntry = await exerciseEntryRepository.createExerciseEntry(
672680
userId,

0 commit comments

Comments
 (0)