@zykeco/sync-server 0.7.3 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +10 -0
- package/dist/app.js.map +1 -1
- package/dist/db/schema.d.ts +710 -0
- package/dist/db/schema.js +50 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/routes/activities.d.ts +3 -0
- package/dist/routes/activities.js +24 -0
- package/dist/routes/activities.js.map +1 -0
- package/dist/routes/activity-heart-rate.d.ts +3 -0
- package/dist/routes/activity-heart-rate.js +24 -0
- package/dist/routes/activity-heart-rate.js.map +1 -0
- package/dist/routes/wipe.d.ts +3 -1
- package/dist/routes/wipe.js +5 -1
- package/dist/routes/wipe.js.map +1 -1
- package/dist/stores/activities.d.ts +3 -0
- package/dist/stores/activities.js +102 -0
- package/dist/stores/activities.js.map +1 -0
- package/dist/stores/activity-heart-rate.d.ts +3 -0
- package/dist/stores/activity-heart-rate.js +29 -0
- package/dist/stores/activity-heart-rate.js.map +1 -0
- package/dist/stores/weekly-metrics.js +2 -0
- package/dist/stores/weekly-metrics.js.map +1 -1
- package/drizzle/0002_weekly_metric_metadata.sql +1 -0
- package/drizzle/0003_real_kate_bishop.sql +49 -0
- package/drizzle/meta/0002_snapshot.json +740 -0
- package/drizzle/meta/0003_snapshot.json +1065 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +3 -3
package/dist/db/schema.js
CHANGED
|
@@ -24,6 +24,7 @@ export const weeklyMetrics = sqliteTable('weekly_metrics', {
|
|
|
24
24
|
weekStartIsoDate: text('week_start_iso_date').notNull(),
|
|
25
25
|
metricKey: text('metric_key').notNull(),
|
|
26
26
|
value: real('value').notNull(),
|
|
27
|
+
metadata: text('metadata', { mode: 'json' }),
|
|
27
28
|
createdAt: integer('created_at').notNull(),
|
|
28
29
|
updatedAt: integer('updated_at').notNull(),
|
|
29
30
|
}, (t) => ({
|
|
@@ -114,4 +115,53 @@ export const hrZoneHistory = sqliteTable('hr_zone_history', {
|
|
|
114
115
|
}, (t) => ({
|
|
115
116
|
uniqueEffective: uniqueIndex('hrzh_unique_effective_idx').on(t.effectiveFromIsoDate),
|
|
116
117
|
}));
|
|
118
|
+
export const activities = sqliteTable('activities', {
|
|
119
|
+
id: integer('id').primaryKey({ autoIncrement: false }),
|
|
120
|
+
type: text('type'),
|
|
121
|
+
source: text('source').notNull(),
|
|
122
|
+
startedAtUtc: integer('started_at_utc').notNull(),
|
|
123
|
+
endedAtUtc: integer('ended_at_utc').notNull(),
|
|
124
|
+
title: text('title'),
|
|
125
|
+
notes: text('notes'),
|
|
126
|
+
sRpe: integer('s_rpe'),
|
|
127
|
+
feelingBefore: integer('feeling_before'),
|
|
128
|
+
feelingAfter: integer('feeling_after'),
|
|
129
|
+
deviceId: text('device_id'),
|
|
130
|
+
indoorOutdoor: text('indoor_outdoor'),
|
|
131
|
+
avgBpm: real('avg_bpm'),
|
|
132
|
+
maxBpm: real('max_bpm'),
|
|
133
|
+
minBpm: real('min_bpm'),
|
|
134
|
+
hrSampleCount: integer('hr_sample_count'),
|
|
135
|
+
trimp: real('trimp'),
|
|
136
|
+
cardioLoad: real('cardio_load'),
|
|
137
|
+
movementLoad: real('movement_load'),
|
|
138
|
+
loadScore: real('load_score'),
|
|
139
|
+
hrSpikes: integer('hr_spikes'),
|
|
140
|
+
calories: real('calories'),
|
|
141
|
+
hrZoneDistribution: text('hr_zone_distribution'),
|
|
142
|
+
accelEnergyTotal: real('accel_energy_total'),
|
|
143
|
+
recoveryHrBpm: real('recovery_hr_bpm'),
|
|
144
|
+
distanceMeters: real('distance_meters'),
|
|
145
|
+
avgPaceSecPerKm: real('avg_pace_sec_per_km'),
|
|
146
|
+
elevationGainMeters: real('elevation_gain_meters'),
|
|
147
|
+
weatherTempCelsius: real('weather_temp_celsius'),
|
|
148
|
+
weatherHumidityPct: real('weather_humidity_pct'),
|
|
149
|
+
weatherCondition: text('weather_condition'),
|
|
150
|
+
weatherWindSpeedMs: real('weather_wind_speed_ms'),
|
|
151
|
+
isDeleted: integer('is_deleted').notNull().default(0),
|
|
152
|
+
createdAt: integer('created_at').notNull(),
|
|
153
|
+
updatedAt: integer('updated_at').notNull(),
|
|
154
|
+
}, (t) => ({
|
|
155
|
+
updatedIdx: index('act_updated_idx').on(t.updatedAt),
|
|
156
|
+
isDeletedIdx: index('act_is_deleted_idx').on(t.isDeleted),
|
|
157
|
+
}));
|
|
158
|
+
export const activityHeartRate = sqliteTable('activity_heart_rate', {
|
|
159
|
+
id: integer('id').primaryKey({ autoIncrement: false }),
|
|
160
|
+
activityId: integer('activity_id').notNull(),
|
|
161
|
+
offsetMs: integer('offset_ms').notNull(),
|
|
162
|
+
bpm: real('bpm').notNull(),
|
|
163
|
+
}, (t) => ({
|
|
164
|
+
activityIdx: index('ahr_activity_idx').on(t.activityId),
|
|
165
|
+
uniqueActivityOffset: uniqueIndex('ahr_unique_activity_offset_idx').on(t.activityId, t.offsetMs),
|
|
166
|
+
}));
|
|
117
167
|
//# sourceMappingURL=schema.js.map
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActivitiesBatchWrite, DeletionsBatchWrite } from '@zykeco/sync-protocol';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { requireAuth } from './auth.js';
|
|
4
|
+
import { parseJsonBody } from './validate.js';
|
|
5
|
+
export function activitiesRoutes(store, auth) {
|
|
6
|
+
const app = new Hono();
|
|
7
|
+
app.post('/batch', requireAuth('write', auth), async (c) => {
|
|
8
|
+
const body = await parseJsonBody(c, ActivitiesBatchWrite);
|
|
9
|
+
if (body instanceof Response)
|
|
10
|
+
return body;
|
|
11
|
+
const serverNowMs = Date.now();
|
|
12
|
+
const stored = await store.upsertBatch(body.rows, serverNowMs);
|
|
13
|
+
return c.json({ stored, serverNowMs });
|
|
14
|
+
});
|
|
15
|
+
app.post('/delete', requireAuth('write', auth), async (c) => {
|
|
16
|
+
const body = await parseJsonBody(c, DeletionsBatchWrite);
|
|
17
|
+
if (body instanceof Response)
|
|
18
|
+
return body;
|
|
19
|
+
const deleted = await store.deleteBatch(body.ids);
|
|
20
|
+
return c.json({ deleted, serverNowMs: Date.now() });
|
|
21
|
+
});
|
|
22
|
+
return app;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=activities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/routes/activities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,KAAsB,EAAE,IAAgB;IACvE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACzD,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActivityHeartRatesBatchWrite, DeletionsBatchWrite } from '@zykeco/sync-protocol';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { requireAuth } from './auth.js';
|
|
4
|
+
import { parseJsonBody } from './validate.js';
|
|
5
|
+
export function activityHeartRateRoutes(store, auth) {
|
|
6
|
+
const app = new Hono();
|
|
7
|
+
app.post('/batch', requireAuth('write', auth), async (c) => {
|
|
8
|
+
const body = await parseJsonBody(c, ActivityHeartRatesBatchWrite);
|
|
9
|
+
if (body instanceof Response)
|
|
10
|
+
return body;
|
|
11
|
+
const serverNowMs = Date.now();
|
|
12
|
+
const stored = await store.upsertBatch(body.rows, serverNowMs);
|
|
13
|
+
return c.json({ stored, serverNowMs });
|
|
14
|
+
});
|
|
15
|
+
app.post('/delete', requireAuth('write', auth), async (c) => {
|
|
16
|
+
const body = await parseJsonBody(c, DeletionsBatchWrite);
|
|
17
|
+
if (body instanceof Response)
|
|
18
|
+
return body;
|
|
19
|
+
const deleted = await store.deleteBatch(body.ids);
|
|
20
|
+
return c.json({ deleted, serverNowMs: Date.now() });
|
|
21
|
+
});
|
|
22
|
+
return app;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=activity-heart-rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-heart-rate.js","sourceRoot":"","sources":["../../src/routes/activity-heart-rate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,uBAAuB,CAAC,KAA6B,EAAE,IAAgB;IACrF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAClE,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACzD,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/routes/wipe.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AuthConfig, DailyMetricsStore, DailyStressBurdenStore, HeartRateMinuteStore, HrZoneHistoryStore, SleepSessionsStore, UserProfileStore, UserTimezonesStore, WeeklyMetricsStore } from '@zykeco/server-core';
|
|
1
|
+
import type { ActivitiesStore, ActivityHeartRateStore, AuthConfig, DailyMetricsStore, DailyStressBurdenStore, HeartRateMinuteStore, HrZoneHistoryStore, SleepSessionsStore, UserProfileStore, UserTimezonesStore, WeeklyMetricsStore } from '@zykeco/server-core';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
3
|
export declare function wipeRoutes(stores: {
|
|
4
4
|
dailyMetrics: DailyMetricsStore;
|
|
@@ -9,4 +9,6 @@ export declare function wipeRoutes(stores: {
|
|
|
9
9
|
dailyStressBurden: DailyStressBurdenStore;
|
|
10
10
|
heartRateMinute: HeartRateMinuteStore;
|
|
11
11
|
hrZoneHistory: HrZoneHistoryStore;
|
|
12
|
+
activities: ActivitiesStore;
|
|
13
|
+
activityHeartRate: ActivityHeartRateStore;
|
|
12
14
|
}, auth: AuthConfig): Hono;
|
package/dist/routes/wipe.js
CHANGED
|
@@ -8,7 +8,7 @@ export function wipeRoutes(stores, auth) {
|
|
|
8
8
|
const body = await parseJsonBody(c, WipeRequest);
|
|
9
9
|
if (body instanceof Response)
|
|
10
10
|
return body;
|
|
11
|
-
const [dailyMetrics, weeklyMetrics, sleepSessions, userTimezones, userProfile, dailyStressBurden, heartRateMinute, hrZoneHistory,] = await Promise.all([
|
|
11
|
+
const [dailyMetrics, weeklyMetrics, sleepSessions, userTimezones, userProfile, dailyStressBurden, heartRateMinute, hrZoneHistory, activities, activityHeartRate,] = await Promise.all([
|
|
12
12
|
stores.dailyMetrics.wipeAll(),
|
|
13
13
|
stores.weeklyMetrics.wipeAll(),
|
|
14
14
|
stores.sleepSessions.wipeAll(),
|
|
@@ -17,6 +17,8 @@ export function wipeRoutes(stores, auth) {
|
|
|
17
17
|
stores.dailyStressBurden.wipeAll(),
|
|
18
18
|
stores.heartRateMinute.wipeAll(),
|
|
19
19
|
stores.hrZoneHistory.wipeAll(),
|
|
20
|
+
stores.activities.wipeAll(),
|
|
21
|
+
stores.activityHeartRate.wipeAll(),
|
|
20
22
|
]);
|
|
21
23
|
return c.json({
|
|
22
24
|
wiped: {
|
|
@@ -28,6 +30,8 @@ export function wipeRoutes(stores, auth) {
|
|
|
28
30
|
dailyStressBurden,
|
|
29
31
|
heartRateMinute,
|
|
30
32
|
hrZoneHistory,
|
|
33
|
+
activities,
|
|
34
|
+
activityHeartRate,
|
|
31
35
|
},
|
|
32
36
|
serverNowMs: Date.now(),
|
|
33
37
|
});
|
package/dist/routes/wipe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wipe.js","sourceRoot":"","sources":["../../src/routes/wipe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wipe.js","sourceRoot":"","sources":["../../src/routes/wipe.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,UAAU,CACxB,MAWC,EACD,IAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,IAAI,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,CACJ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,UAAU,EACV,iBAAiB,EAClB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;YAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9B,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAClC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAChC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9B,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE;gBACL,YAAY;gBACZ,aAAa;gBACb,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,iBAAiB;gBACjB,eAAe;gBACf,aAAa;gBACb,UAAU;gBACV,iBAAiB;aAClB;YACD,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { inArray, sql } from 'drizzle-orm';
|
|
2
|
+
import { activities } from '../db/schema.js';
|
|
3
|
+
export function createActivitiesStore(db) {
|
|
4
|
+
return {
|
|
5
|
+
async upsertBatch(rows, _serverNowMs) {
|
|
6
|
+
if (rows.length === 0)
|
|
7
|
+
return [];
|
|
8
|
+
const values = rows.map((r) => ({
|
|
9
|
+
id: r.id,
|
|
10
|
+
type: r.type,
|
|
11
|
+
source: r.source,
|
|
12
|
+
startedAtUtc: r.startedAtUtc,
|
|
13
|
+
endedAtUtc: r.endedAtUtc,
|
|
14
|
+
title: r.title,
|
|
15
|
+
notes: r.notes,
|
|
16
|
+
sRpe: r.sRpe,
|
|
17
|
+
feelingBefore: r.feelingBefore,
|
|
18
|
+
feelingAfter: r.feelingAfter,
|
|
19
|
+
deviceId: r.deviceId,
|
|
20
|
+
indoorOutdoor: r.indoorOutdoor,
|
|
21
|
+
avgBpm: r.avgBpm,
|
|
22
|
+
maxBpm: r.maxBpm,
|
|
23
|
+
minBpm: r.minBpm,
|
|
24
|
+
hrSampleCount: r.hrSampleCount,
|
|
25
|
+
trimp: r.trimp,
|
|
26
|
+
cardioLoad: r.cardioLoad,
|
|
27
|
+
movementLoad: r.movementLoad,
|
|
28
|
+
loadScore: r.loadScore,
|
|
29
|
+
hrSpikes: r.hrSpikes,
|
|
30
|
+
calories: r.calories,
|
|
31
|
+
hrZoneDistribution: r.hrZoneDistribution,
|
|
32
|
+
accelEnergyTotal: r.accelEnergyTotal,
|
|
33
|
+
recoveryHrBpm: r.recoveryHrBpm,
|
|
34
|
+
distanceMeters: r.distanceMeters,
|
|
35
|
+
avgPaceSecPerKm: r.avgPaceSecPerKm,
|
|
36
|
+
elevationGainMeters: r.elevationGainMeters,
|
|
37
|
+
weatherTempCelsius: r.weatherTempCelsius,
|
|
38
|
+
weatherHumidityPct: r.weatherHumidityPct,
|
|
39
|
+
weatherCondition: r.weatherCondition,
|
|
40
|
+
weatherWindSpeedMs: r.weatherWindSpeedMs,
|
|
41
|
+
isDeleted: r.isDeleted,
|
|
42
|
+
createdAt: r.createdAt,
|
|
43
|
+
updatedAt: r.updatedAt,
|
|
44
|
+
}));
|
|
45
|
+
await db
|
|
46
|
+
.insert(activities)
|
|
47
|
+
.values(values)
|
|
48
|
+
.onConflictDoUpdate({
|
|
49
|
+
target: activities.id,
|
|
50
|
+
set: {
|
|
51
|
+
type: sql `excluded.type`,
|
|
52
|
+
source: sql `excluded.source`,
|
|
53
|
+
startedAtUtc: sql `excluded.started_at_utc`,
|
|
54
|
+
endedAtUtc: sql `excluded.ended_at_utc`,
|
|
55
|
+
title: sql `excluded.title`,
|
|
56
|
+
notes: sql `excluded.notes`,
|
|
57
|
+
sRpe: sql `excluded.s_rpe`,
|
|
58
|
+
feelingBefore: sql `excluded.feeling_before`,
|
|
59
|
+
feelingAfter: sql `excluded.feeling_after`,
|
|
60
|
+
deviceId: sql `excluded.device_id`,
|
|
61
|
+
indoorOutdoor: sql `excluded.indoor_outdoor`,
|
|
62
|
+
avgBpm: sql `excluded.avg_bpm`,
|
|
63
|
+
maxBpm: sql `excluded.max_bpm`,
|
|
64
|
+
minBpm: sql `excluded.min_bpm`,
|
|
65
|
+
hrSampleCount: sql `excluded.hr_sample_count`,
|
|
66
|
+
trimp: sql `excluded.trimp`,
|
|
67
|
+
cardioLoad: sql `excluded.cardio_load`,
|
|
68
|
+
movementLoad: sql `excluded.movement_load`,
|
|
69
|
+
loadScore: sql `excluded.load_score`,
|
|
70
|
+
hrSpikes: sql `excluded.hr_spikes`,
|
|
71
|
+
calories: sql `excluded.calories`,
|
|
72
|
+
hrZoneDistribution: sql `excluded.hr_zone_distribution`,
|
|
73
|
+
accelEnergyTotal: sql `excluded.accel_energy_total`,
|
|
74
|
+
recoveryHrBpm: sql `excluded.recovery_hr_bpm`,
|
|
75
|
+
distanceMeters: sql `excluded.distance_meters`,
|
|
76
|
+
avgPaceSecPerKm: sql `excluded.avg_pace_sec_per_km`,
|
|
77
|
+
elevationGainMeters: sql `excluded.elevation_gain_meters`,
|
|
78
|
+
weatherTempCelsius: sql `excluded.weather_temp_celsius`,
|
|
79
|
+
weatherHumidityPct: sql `excluded.weather_humidity_pct`,
|
|
80
|
+
weatherCondition: sql `excluded.weather_condition`,
|
|
81
|
+
weatherWindSpeedMs: sql `excluded.weather_wind_speed_ms`,
|
|
82
|
+
isDeleted: sql `excluded.is_deleted`,
|
|
83
|
+
createdAt: sql `excluded.created_at`,
|
|
84
|
+
updatedAt: sql `excluded.updated_at`,
|
|
85
|
+
},
|
|
86
|
+
where: sql `excluded.updated_at > ${activities.updatedAt}`,
|
|
87
|
+
});
|
|
88
|
+
return rows.map((r) => r.id);
|
|
89
|
+
},
|
|
90
|
+
async deleteBatch(ids) {
|
|
91
|
+
if (ids.length === 0)
|
|
92
|
+
return [];
|
|
93
|
+
await db.delete(activities).where(inArray(activities.id, [...ids]));
|
|
94
|
+
return [...ids];
|
|
95
|
+
},
|
|
96
|
+
async wipeAll() {
|
|
97
|
+
const result = await db.delete(activities);
|
|
98
|
+
return result.rowsAffected;
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=activities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/stores/activities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { inArray } from 'drizzle-orm';
|
|
2
|
+
import { activityHeartRate } from '../db/schema.js';
|
|
3
|
+
export function createActivityHeartRateStore(db) {
|
|
4
|
+
return {
|
|
5
|
+
async upsertBatch(rows, _serverNowMs) {
|
|
6
|
+
if (rows.length === 0)
|
|
7
|
+
return [];
|
|
8
|
+
const values = rows.map((r) => ({
|
|
9
|
+
id: r.id,
|
|
10
|
+
activityId: r.activityId,
|
|
11
|
+
offsetMs: r.offsetMs,
|
|
12
|
+
bpm: r.bpm,
|
|
13
|
+
}));
|
|
14
|
+
await db.insert(activityHeartRate).values(values).onConflictDoNothing();
|
|
15
|
+
return rows.map((r) => r.id);
|
|
16
|
+
},
|
|
17
|
+
async deleteBatch(ids) {
|
|
18
|
+
if (ids.length === 0)
|
|
19
|
+
return [];
|
|
20
|
+
await db.delete(activityHeartRate).where(inArray(activityHeartRate.id, [...ids]));
|
|
21
|
+
return [...ids];
|
|
22
|
+
},
|
|
23
|
+
async wipeAll() {
|
|
24
|
+
const result = await db.delete(activityHeartRate);
|
|
25
|
+
return result.rowsAffected;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=activity-heart-rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-heart-rate.js","sourceRoot":"","sources":["../../src/stores/activity-heart-rate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,UAAU,4BAA4B,CAAC,EAAM;IACjD,OAAO;QACL,KAAK,CAAC,WAAW,CACf,IAAuC,EACvC,YAAoB;YAEpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC,CAAC,CAAC;YACJ,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,GAAsB;YACtC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,7 @@ export function createWeeklyMetricsStore(db) {
|
|
|
10
10
|
weekStartIsoDate: r.weekStartIsoDate,
|
|
11
11
|
metricKey: r.metricKey,
|
|
12
12
|
value: r.value,
|
|
13
|
+
metadata: r.metadata ?? null,
|
|
13
14
|
createdAt: r.createdAt,
|
|
14
15
|
updatedAt: r.updatedAt,
|
|
15
16
|
}));
|
|
@@ -22,6 +23,7 @@ export function createWeeklyMetricsStore(db) {
|
|
|
22
23
|
weekStartIsoDate: sql `excluded.week_start_iso_date`,
|
|
23
24
|
metricKey: sql `excluded.metric_key`,
|
|
24
25
|
value: sql `excluded.value`,
|
|
26
|
+
metadata: sql `excluded.metadata`,
|
|
25
27
|
createdAt: sql `excluded.created_at`,
|
|
26
28
|
updatedAt: sql `excluded.updated_at`,
|
|
27
29
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-metrics.js","sourceRoot":"","sources":["../../src/stores/weekly-metrics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,wBAAwB,CAAC,EAAM;IAC7C,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,IAAkC,EAAE,YAAoB;YACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,EAAE;iBACL,MAAM,CAAC,aAAa,CAAC;iBACrB,MAAM,CAAC,MAAM,CAAC;iBACd,kBAAkB,CAAC;gBAClB,MAAM,EAAE,aAAa,CAAC,EAAE;gBACxB,GAAG,EAAE;oBACH,gBAAgB,EAAE,GAAG,CAAA,8BAA8B;oBACnD,SAAS,EAAE,GAAG,CAAA,qBAAqB;oBACnC,KAAK,EAAE,GAAG,CAAA,gBAAgB;oBAC1B,SAAS,EAAE,GAAG,CAAA,qBAAqB;oBACnC,SAAS,EAAE,GAAG,CAAA,qBAAqB;iBACpC;gBACD,KAAK,EAAE,GAAG,CAAA,yBAAyB,aAAa,CAAC,SAAS,EAAE;aAC7D,CAAC,CAAC;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,GAAsB;YACtC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"weekly-metrics.js","sourceRoot":"","sources":["../../src/stores/weekly-metrics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,wBAAwB,CAAC,EAAM;IAC7C,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,IAAkC,EAAE,YAAoB;YACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,EAAE;iBACL,MAAM,CAAC,aAAa,CAAC;iBACrB,MAAM,CAAC,MAAM,CAAC;iBACd,kBAAkB,CAAC;gBAClB,MAAM,EAAE,aAAa,CAAC,EAAE;gBACxB,GAAG,EAAE;oBACH,gBAAgB,EAAE,GAAG,CAAA,8BAA8B;oBACnD,SAAS,EAAE,GAAG,CAAA,qBAAqB;oBACnC,KAAK,EAAE,GAAG,CAAA,gBAAgB;oBAC1B,QAAQ,EAAE,GAAG,CAAA,mBAAmB;oBAChC,SAAS,EAAE,GAAG,CAAA,qBAAqB;oBACnC,SAAS,EAAE,GAAG,CAAA,qBAAqB;iBACpC;gBACD,KAAK,EAAE,GAAG,CAAA,yBAAyB,aAAa,CAAC,SAAS,EAAE;aAC7D,CAAC,CAAC;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,GAAsB;YACtC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE `weekly_metrics` ADD `metadata` text;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
CREATE TABLE `activities` (
|
|
2
|
+
`id` integer PRIMARY KEY NOT NULL,
|
|
3
|
+
`type` text,
|
|
4
|
+
`source` text NOT NULL,
|
|
5
|
+
`started_at_utc` integer NOT NULL,
|
|
6
|
+
`ended_at_utc` integer NOT NULL,
|
|
7
|
+
`title` text,
|
|
8
|
+
`notes` text,
|
|
9
|
+
`s_rpe` integer,
|
|
10
|
+
`feeling_before` integer,
|
|
11
|
+
`feeling_after` integer,
|
|
12
|
+
`device_id` text,
|
|
13
|
+
`indoor_outdoor` text,
|
|
14
|
+
`avg_bpm` real,
|
|
15
|
+
`max_bpm` real,
|
|
16
|
+
`min_bpm` real,
|
|
17
|
+
`hr_sample_count` integer,
|
|
18
|
+
`trimp` real,
|
|
19
|
+
`cardio_load` real,
|
|
20
|
+
`movement_load` real,
|
|
21
|
+
`load_score` real,
|
|
22
|
+
`hr_spikes` integer,
|
|
23
|
+
`calories` real,
|
|
24
|
+
`hr_zone_distribution` text,
|
|
25
|
+
`accel_energy_total` real,
|
|
26
|
+
`recovery_hr_bpm` real,
|
|
27
|
+
`distance_meters` real,
|
|
28
|
+
`avg_pace_sec_per_km` real,
|
|
29
|
+
`elevation_gain_meters` real,
|
|
30
|
+
`weather_temp_celsius` real,
|
|
31
|
+
`weather_humidity_pct` real,
|
|
32
|
+
`weather_condition` text,
|
|
33
|
+
`weather_wind_speed_ms` real,
|
|
34
|
+
`is_deleted` integer DEFAULT 0 NOT NULL,
|
|
35
|
+
`created_at` integer NOT NULL,
|
|
36
|
+
`updated_at` integer NOT NULL
|
|
37
|
+
);
|
|
38
|
+
--> statement-breakpoint
|
|
39
|
+
CREATE INDEX `act_updated_idx` ON `activities` (`updated_at`);--> statement-breakpoint
|
|
40
|
+
CREATE INDEX `act_is_deleted_idx` ON `activities` (`is_deleted`);--> statement-breakpoint
|
|
41
|
+
CREATE TABLE `activity_heart_rate` (
|
|
42
|
+
`id` integer PRIMARY KEY NOT NULL,
|
|
43
|
+
`activity_id` integer NOT NULL,
|
|
44
|
+
`offset_ms` integer NOT NULL,
|
|
45
|
+
`bpm` real NOT NULL
|
|
46
|
+
);
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
CREATE INDEX `ahr_activity_idx` ON `activity_heart_rate` (`activity_id`);--> statement-breakpoint
|
|
49
|
+
CREATE UNIQUE INDEX `ahr_unique_activity_offset_idx` ON `activity_heart_rate` (`activity_id`,`offset_ms`);
|