diff --git a/Makefile b/Makefile index b2d1cf2..76f8620 100644 --- a/Makefile +++ b/Makefile @@ -44,6 +44,9 @@ clean: sqlx-migrate: cd kitchen; cargo sqlx migrate run --database-url $(sqlite_url) +sqlx-add-%: + cd kitchen; cargo sqlx migrate add -r $* + sqlx-revert: cd kitchen; cargo sqlx migrate revert --database-url $(sqlite_url) diff --git a/kitchen/migrations/20230321193852_plan-table.down.sql b/kitchen/migrations/20230321193852_plan-table.down.sql new file mode 100644 index 0000000..c6ac900 --- /dev/null +++ b/kitchen/migrations/20230321193852_plan-table.down.sql @@ -0,0 +1,2 @@ +-- Add down migration script here +drop table plan_table; \ No newline at end of file diff --git a/kitchen/migrations/20230321193852_plan-table.up.sql b/kitchen/migrations/20230321193852_plan-table.up.sql new file mode 100644 index 0000000..c4d2902 --- /dev/null +++ b/kitchen/migrations/20230321193852_plan-table.up.sql @@ -0,0 +1,10 @@ +-- Add up migration script here +create temp table TEMP_plan_dates_deduped AS + select distinct user_id, plan_date from plan_recipes; + +create table plan_table (user_id TEXT NOT NULL, plan_date TEXT NOT NULL, primary key (user_id, plan_date) ); + +insert into plan_table + select user_id, plan_date from TEMP_plan_dates_deduped; + +drop table TEMP_plan_dates_deduped; \ No newline at end of file diff --git a/kitchen/sqlx-data.json b/kitchen/sqlx-data.json index 4ed433e..a1314ae 100644 --- a/kitchen/sqlx-data.json +++ b/kitchen/sqlx-data.json @@ -470,24 +470,6 @@ }, "query": "select\n filtered_ingredients.name,\n filtered_ingredients.form,\n filtered_ingredients.measure_type\nfrom filtered_ingredients\nwhere\n user_id = ?\n and plan_date = ?" }, - "7f4abc448b16e8b6b2bb74f8e810e245e81b38e1407085a20d28bfddfc06891f": { - "describe": { - "columns": [ - { - "name": "plan_date: NaiveDate", - "ordinal": 0, - "type_info": "Date" - } - ], - "nullable": [ - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select distinct plan_date as \"plan_date: NaiveDate\" from plan_recipes\nwhere user_id = ?" - }, "83824ea638cb64c524f5c8984ef6ef28dfe781f0abf168abc4ae9a51e6e0ae88": { "describe": { "columns": [], @@ -643,5 +625,23 @@ } }, "query": "with latest_dates as (\n select user_id, max(date(plan_date)) as plan_date from plan_recipes\n where user_id = ?\n group by user_id\n)\n\nselect\n filtered_ingredients.name,\n filtered_ingredients.form,\n filtered_ingredients.measure_type\nfrom latest_dates\ninner join filtered_ingredients on\n latest_dates.user_id = filtered_ingredients.user_id\n and latest_dates.plan_date = filtered_ingredients.plan_date" + }, + "fd818a6b1c800c2014b5cfe8a923ac9228832b11d7575585cf7930fbf91306d1": { + "describe": { + "columns": [ + { + "name": "plan_date: NaiveDate", + "ordinal": 0, + "type_info": "Text" + } + ], + "nullable": [ + false + ], + "parameters": { + "Right": 1 + } + }, + "query": "select distinct plan_date as \"plan_date: NaiveDate\" from plan_table\nwhere user_id = ?" } } \ No newline at end of file diff --git a/kitchen/src/web/storage/fetch_all_plans.sql b/kitchen/src/web/storage/fetch_all_plans.sql index f988cb8..03d52f1 100644 --- a/kitchen/src/web/storage/fetch_all_plans.sql +++ b/kitchen/src/web/storage/fetch_all_plans.sql @@ -1,2 +1,2 @@ -select distinct plan_date as "plan_date: NaiveDate" from plan_recipes +select distinct plan_date as "plan_date: NaiveDate" from plan_table where user_id = ? \ No newline at end of file diff --git a/kitchen/src/web/storage/init_meal_plan.sql b/kitchen/src/web/storage/init_meal_plan.sql new file mode 100644 index 0000000..998fbbb --- /dev/null +++ b/kitchen/src/web/storage/init_meal_plan.sql @@ -0,0 +1,2 @@ +insert into plan_table (user_id, plan_date) values (?, ?) + on conflict (user_id, plan_date) do nothing; \ No newline at end of file