exclude lift-assisted ski types from ascent totals

This commit is contained in:
Vincent van der Wal
2026-07-22 16:08:36 +02:00
parent a24eef807c
commit 91775c4099
4 changed files with 28 additions and 6 deletions
+8 -2
View File
@@ -3,6 +3,12 @@ import fs from 'node:fs';
import path from 'node:path';
import { PEAKS } from './peaks-seed';
import { assignMinzoom, scorePeak } from './peak-score';
import { LIFT_ASSISTED_TYPES } from '$lib/activity-rules';
// SQL fragment: elevation gain that counts toward ascent totals
// (lift-assisted downhill types contribute 0)
const LIFT_LIST = LIFT_ASSISTED_TYPES.map((t) => `'${t}'`).join(', ');
export const COUNTED_GAIN = `CASE WHEN lower(trim(type)) IN (${LIFT_LIST}) THEN 0 ELSE elev_gain_m END`;
const DATA_DIR = process.env.STREBA_DATA_DIR ?? 'data';
fs.mkdirSync(DATA_DIR, { recursive: true });
@@ -234,7 +240,7 @@ export function userStats(userId: number): {
.prepare(
`SELECT count(*) activities,
coalesce(sum(distance_m), 0) distance_m,
coalesce(sum(elev_gain_m), 0) elev_gain_m,
coalesce(sum(${COUNTED_GAIN}), 0) elev_gain_m,
coalesce(sum(coalesce(moving_s, duration_s, 0)), 0) moving_s
FROM activities WHERE user_id = ?`
)
@@ -252,7 +258,7 @@ export function communityTotals(): {
`SELECT (SELECT count(*) FROM users) users,
count(*) activities,
coalesce(sum(distance_m), 0) distance_m,
coalesce(sum(elev_gain_m), 0) elev_gain_m
coalesce(sum(${COUNTED_GAIN}), 0) elev_gain_m
FROM activities`
)
.get() as { users: number; activities: number; distance_m: number; elev_gain_m: number };