diff --git a/src/lib/components/AggregatedFood/AggregatedFoodComp.svelte b/src/lib/components/Energy/AggregatedFood/AggregatedFoodComp.svelte similarity index 100% rename from src/lib/components/AggregatedFood/AggregatedFoodComp.svelte rename to src/lib/components/Energy/AggregatedFood/AggregatedFoodComp.svelte diff --git a/src/lib/components/AggregatedFood/AggregatedFoodTable.svelte b/src/lib/components/Energy/AggregatedFood/AggregatedFoodTable.svelte similarity index 96% rename from src/lib/components/AggregatedFood/AggregatedFoodTable.svelte rename to src/lib/components/Energy/AggregatedFood/AggregatedFoodTable.svelte index af61443..2982aa3 100644 --- a/src/lib/components/AggregatedFood/AggregatedFoodTable.svelte +++ b/src/lib/components/Energy/AggregatedFood/AggregatedFoodTable.svelte @@ -1,7 +1,7 @@
+ data-tauri-drag-region> - +
+ + +
- - - diff --git a/src/lib/database/food.ts b/src/lib/database/food.ts index 4a8ce85..1a422a2 100644 --- a/src/lib/database/food.ts +++ b/src/lib/database/food.ts @@ -1,6 +1,6 @@ import { db } from '$lib/database' import type { Err } from '$lib/types' -import { lookbackDaysStore } from '$lib/store/lookbackDaysStore' +import { lookbackDaysStore } from '$lib/store/energy/lookbackDaysStore' import { get } from 'svelte/store' export type Food = { diff --git a/src/lib/database/weight.ts b/src/lib/database/weight.ts new file mode 100644 index 0000000..92dd140 --- /dev/null +++ b/src/lib/database/weight.ts @@ -0,0 +1,77 @@ +import { db } from '$lib/database' +import type { Err } from '$lib/types' +import { lookbackDaysStore } from '$lib/store/energy/lookbackDaysStore' +import { get } from 'svelte/store' + +export type Weight = { + rowid?: number, + date?: Date, + weight: string, +} +export type AggregatedWeight = { + period: string, + amount: number, +} + +const columns = ['rowid', 'date', 'weight'] +const aggColumns = ['period', 'amount'] + +const FoodService = { + async GetAll() { + return await db.select(` +select ${columns.join(', ')} +from food +order by date desc + `) + }, + async GetRecent() { + return await db.select(` +select ${columns.join(', ')} +from weightView +where date > datetime('now', "-${get(lookbackDaysStore)} days") +order by date DESC; +`) + }, + async Create(entry: Weight): Promise<[Weight, Err]> { + if (!entry.weight) return [entry, 'entry.weight is required'] + + const res = await db.execute(`insert into weight (weight) values ($1)`, [entry.weight]) + const rows = await db.select(`select ${columns.join(', ')} from weightView where rowid = $1`, [res.lastInsertId]) + + if (!rows) return [entry, 'no data found'] + if (rows.length == 0) return [entry, 'no data found'] + // Its not undefined mannnnnnnnnnnnnnnnnnnnnnnnnn............ + // @ts-ignore + return [rows[0], null] + }, + async GetDaily(): Promise<[AggregatedWeight[], Err]> { + const rows = await db.select(`select ${aggColumns.join(', ')} from weightDaily limit 100`) + return [rows, null] + }, + async GetWeekly(): Promise<[AggregatedWeight[], Err]> { + const rows = await db.select(`select ${aggColumns.join(', ')} from weightWeekly limit 100`) + return [rows, null] + }, + async GetMonthly(): Promise<[AggregatedWeight[], Err]> { + const rows = await db.select(`select ${aggColumns.join(', ')} from weightMonthly limit 100`) + return [rows, null] + }, + async GetYearly(): Promise<[AggregatedWeight[], Err]> { + const rows = await db.select(`select ${aggColumns.join(', ')} from weightYearly limit 100`) + return [rows, null] + }, + async Update(entry: Weight): Promise<[Weight, Err]> { + await db.execute(` +update weight set +weight = $1, +where rowid = $2 + `, [entry.weight, entry.rowid]) + const res = await db.select(`select ${columns.join(', ')} from weightView where rowid = $1`, [entry.rowid]) + if (!res) return [entry, 'no data found'] + if (res.length == 0) return [entry, 'no data found'] + if (!res[0]) return [entry, 'no data found'] + return [res[0], null] + } +} + +export { FoodService } diff --git a/src/lib/router/Router.svelte b/src/lib/router/Router.svelte index 33e20b4..729f652 100644 --- a/src/lib/router/Router.svelte +++ b/src/lib/router/Router.svelte @@ -1,18 +1,17 @@ diff --git a/src/lib/router/routes/Daily.svelte b/src/lib/router/routes/Daily.svelte deleted file mode 100644 index 21c8fd8..0000000 --- a/src/lib/router/routes/Daily.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/src/lib/router/routes/Energy/Daily.svelte b/src/lib/router/routes/Energy/Daily.svelte new file mode 100644 index 0000000..72966c6 --- /dev/null +++ b/src/lib/router/routes/Energy/Daily.svelte @@ -0,0 +1,11 @@ + + + diff --git a/src/lib/router/routes/Energy/Energy.svelte b/src/lib/router/routes/Energy/Energy.svelte new file mode 100644 index 0000000..17328b7 --- /dev/null +++ b/src/lib/router/routes/Energy/Energy.svelte @@ -0,0 +1,11 @@ + + + diff --git a/src/lib/router/routes/Monthly.svelte b/src/lib/router/routes/Energy/Monthly.svelte similarity index 50% rename from src/lib/router/routes/Monthly.svelte rename to src/lib/router/routes/Energy/Monthly.svelte index 774b43b..926b123 100644 --- a/src/lib/router/routes/Monthly.svelte +++ b/src/lib/router/routes/Energy/Monthly.svelte @@ -1,7 +1,7 @@