health: smart-scale columns, deduped body measurement imports, quick-add form
All checks were successful
Deploy production / deploy (push) Successful in 2m32s
All checks were successful
Deploy production / deploy (push) Successful in 2m32s
This commit is contained in:
@@ -7,8 +7,9 @@
|
||||
* add --dry-run to validate without writing
|
||||
*
|
||||
* Column names are the snake_case DB columns (see src/lib/health/tables.ts). Rows with an
|
||||
* `id` update that row; nutrition_daily and sleep upsert on `date`; everything else is
|
||||
* inserted (importing the same file twice duplicates those rows). All-or-nothing: if any
|
||||
* `id` update that row; nutrition_daily and sleep upsert on `date`; body_measurements dedupe
|
||||
* on measured_at or (date, weight_kg) and fill smart-scale columns from the notes, so
|
||||
* re-importing is a no-op; everything else is inserted (importing twice duplicates those). All-or-nothing: if any
|
||||
* row is invalid, nothing is written. Uses DB_URL (the app role on prod, personal_dev on dev).
|
||||
*/
|
||||
import { readFile } from 'node:fs/promises';
|
||||
@@ -66,7 +67,7 @@ const client = postgres(process.env.DB_URL, { max: 1, onnotice: () => {} });
|
||||
try {
|
||||
const counts = await writeRows(drizzle({ client }), clean);
|
||||
for (const [t, c] of Object.entries(counts))
|
||||
console.log(`${t}: ${c.inserted} inserted, ${c.updated} updated`);
|
||||
console.log(`${t}: ${c.inserted} inserted, ${c.updated} updated, ${c.unchanged} unchanged`);
|
||||
} finally {
|
||||
await client.end();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user