-
-
-
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 @@
diff --git a/src/lib/router/routes/Weekly.svelte b/src/lib/router/routes/Energy/Weekly.svelte
similarity index 50%
rename from src/lib/router/routes/Weekly.svelte
rename to src/lib/router/routes/Energy/Weekly.svelte
index 52e7ce5..7fa227f 100644
--- a/src/lib/router/routes/Weekly.svelte
+++ b/src/lib/router/routes/Energy/Weekly.svelte
@@ -1,7 +1,7 @@
diff --git a/src/lib/router/routes/Yearly.svelte b/src/lib/router/routes/Energy/Yearly.svelte
similarity index 50%
rename from src/lib/router/routes/Yearly.svelte
rename to src/lib/router/routes/Energy/Yearly.svelte
index 021fb9a..8755e0c 100644
--- a/src/lib/router/routes/Yearly.svelte
+++ b/src/lib/router/routes/Energy/Yearly.svelte
@@ -1,7 +1,7 @@
diff --git a/src/lib/router/routes/Home.svelte b/src/lib/router/routes/Home.svelte
deleted file mode 100644
index df97312..0000000
--- a/src/lib/router/routes/Home.svelte
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
diff --git a/src/lib/store/dailyFoodStore.ts b/src/lib/store/energy/dailyFoodStore.ts
similarity index 100%
rename from src/lib/store/dailyFoodStore.ts
rename to src/lib/store/energy/dailyFoodStore.ts
diff --git a/src/lib/store/energyStore.ts b/src/lib/store/energy/energyStore.ts
similarity index 100%
rename from src/lib/store/energyStore.ts
rename to src/lib/store/energy/energyStore.ts
diff --git a/src/lib/store/foodStore.ts b/src/lib/store/energy/foodStore.ts
similarity index 100%
rename from src/lib/store/foodStore.ts
rename to src/lib/store/energy/foodStore.ts
diff --git a/src/lib/store/lookbackDaysStore.ts b/src/lib/store/energy/lookbackDaysStore.ts
similarity index 100%
rename from src/lib/store/lookbackDaysStore.ts
rename to src/lib/store/energy/lookbackDaysStore.ts
diff --git a/src/lib/store/monthlyFoodStore.ts b/src/lib/store/energy/monthlyFoodStore.ts
similarity index 100%
rename from src/lib/store/monthlyFoodStore.ts
rename to src/lib/store/energy/monthlyFoodStore.ts
diff --git a/src/lib/store/weeklyFoodStore.ts b/src/lib/store/energy/weeklyFoodStore.ts
similarity index 100%
rename from src/lib/store/weeklyFoodStore.ts
rename to src/lib/store/energy/weeklyFoodStore.ts
diff --git a/src/lib/store/yearlyFoodStore.ts b/src/lib/store/energy/yearlyFoodStore.ts
similarity index 100%
rename from src/lib/store/yearlyFoodStore.ts
rename to src/lib/store/energy/yearlyFoodStore.ts