diff --git a/__pycache__/api.cpython-312.pyc b/__pycache__/api.cpython-312.pyc index f2d8d5b..495adc9 100644 Binary files a/__pycache__/api.cpython-312.pyc and b/__pycache__/api.cpython-312.pyc differ diff --git a/__pycache__/config.cpython-312.pyc b/__pycache__/config.cpython-312.pyc index cc28c84..05684f2 100644 Binary files a/__pycache__/config.cpython-312.pyc and b/__pycache__/config.cpython-312.pyc differ diff --git a/api.py b/api.py index 2c970eb..646cb9d 100644 --- a/api.py +++ b/api.py @@ -1,5 +1,5 @@ from flask import Blueprint, request, render_template, redirect, session, url_for, send_file, jsonify, Response -import psycopg2 +import psycopg2, math from config import config database_api= Blueprint('database_api', __name__) @@ -9,18 +9,58 @@ def pagninate_items(): print("hello") page = int(request.args.get('page', 1)) limit = int(request.args.get('limit', 10)) + search_string = str(request.args.get('search_text', "")) + offset = (page - 1) * limit pantry_inventory = [] + count = 0 database_config = config() with psycopg2.connect(**database_config) as conn: try: with conn.cursor() as cur: - sql = f"SELECT * FROM main_items LIMIT %s OFFSET %s;" - cur.execute(sql, (limit, offset)) - pantry_inventory = cur.fetchall() + if search_string != "": + sql = f"SELECT * FROM main_items LEFT JOIN main_logistics_info ON main_items.logistics_info_id = main_logistics_info.id WHERE search_string LIKE '%{search_string}%' LIMIT {limit} OFFSET {offset};" + cur.execute(sql) + pantry_inventory = cur.fetchall() + cur.execute(f"SELECT COUNT(*) FROM main_items WHERE search_string LIKE '%{search_string}%';") + count = cur.fetchone()[0] + else: + sql = f"SELECT * FROM main_items LEFT JOIN main_logistics_info ON main_items.logistics_info_id = main_logistics_info.id LIMIT %s OFFSET %s;" + cur.execute(sql, (limit, offset)) + pantry_inventory = cur.fetchall() + cur.execute("SELECT COUNT(*) FROM main_items;") + count = cur.fetchone()[0] + + print(sql) + print(count, math.ceil(count/limit)) + except (Exception, psycopg2.DatabaseError) as error: print(error) - return jsonify({'items': pantry_inventory}) \ No newline at end of file + pantry_inventory = sorted(pantry_inventory, key=lambda x: x[2]) + + return jsonify({'items': pantry_inventory, "end": math.ceil(count/limit)}) + +@database_api.route("/getItem") +def get_item(): + id = int(request.args.get('id', 1)) + database_config = config() + site_name = "main" + item = [] + with psycopg2.connect(**database_config) as conn: + try: + with conn.cursor() as cur: + with open(f"sites/{site_name}/sql/unique/select_item_all.sql", "r+") as file: + sql = file.read() + cur.execute(sql, (id, )) + item = list(cur.fetchone()) + item[5] = {'walmart': 'https://www.walmart.com/ip/Ptasie-Mleczko-Chocolate-Covered-Vanilla-Marshmallow-birds-milk-chocolate-13-4-Oz-Includes-Our-Exclusive-HolanDeli-Chocolate-Mints/965551629?classType=REGULAR&from=/search', 'target': 'https://www.target.com/p/hershey-39-s-cookies-39-n-39-cr-232-me-fangs-halloween-candy-snack-size-9-45oz/-/A-79687769#lnk=sametab'} + item[22] = ['test_list', 'main_list'] + item[23] = ['test_recipe',] + item[24] = ['test_group', 'main_group', 'test2_group'] + except (Exception, psycopg2.DatabaseError) as error: + print(error) + + return render_template(f"item_page/index.html", item=item) \ No newline at end of file diff --git a/sites/default/sql/create/item.sql b/sites/default/sql/create/item.sql index 4b2483d..33109d8 100644 --- a/sites/default/sql/create/item.sql +++ b/sites/default/sql/create/item.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS %sitename%_items( item_name VARCHAR(255) NOT NULL, brand INTEGER, tags TEXT [], - links TEXT [], + links JSONB, item_info_id INTEGER NOT NULL, logistics_info_id INTEGER NOT NULL, food_info_id INTEGER, diff --git a/sites/default/sql/create/receipt_items.sql b/sites/default/sql/create/receipt_items.sql new file mode 100644 index 0000000..0b20778 --- /dev/null +++ b/sites/default/sql/create/receipt_items.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS %sitename%_receipt_items ( + id SERIAL PRIMARY KEY, + type VARCHAR(255) NOT NULL, + barcode VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL, + qty FLOAT8 NOT NULL, + data JSONB, + status VARCHAR (64) +) \ No newline at end of file diff --git a/sites/default/sql/create/receipts.sql b/sites/default/sql/create/receipts.sql new file mode 100644 index 0000000..eb9d062 --- /dev/null +++ b/sites/default/sql/create/receipts.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS %sitename%_receipts ( + id SERIAL PRIMARY KEY, + receipt_id INTEGER NOT NULL, + receipt_status VARCHAR (64) NOT NULL, + date_submitted TIMESTAMP NOT NULL, + submitted_by INTEGER NOT NULL, + vendor_id INTEGER, + files JSONB, + UNIQUE(receipt_id) +); \ No newline at end of file diff --git a/sites/default/sql/create/recipes.sql b/sites/default/sql/create/recipes.sql new file mode 100644 index 0000000..7f5bd32 --- /dev/null +++ b/sites/default/sql/create/recipes.sql @@ -0,0 +1,12 @@ +CREATE TABLE IF NOT EXISTS %sitename%_recipes ( + id SERIAL PRIMARY KEY, + name VARCHAR, + author INTEGER, + description TEXT, + creation_date TIMESTAMP, + custom_items JSONB, + pantry_items JSONB, + group_items JSONB, + instructions TEXT [], + picture_path TEXT +); \ No newline at end of file diff --git a/sites/default/sql/create/shopping_lists.sql b/sites/default/sql/create/shopping_lists.sql new file mode 100644 index 0000000..5569a9f --- /dev/null +++ b/sites/default/sql/create/shopping_lists.sql @@ -0,0 +1,13 @@ +CREATE TABLE IF NOT EXISTS %sitename%_shopping_lists ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + description TEXT, + pantry_items JSONB, + custom_items JSONB, + recipes JSONB, + groups JSONB, + author INTEGER, + creation_date TIMESTAMP, + type VARCHAR(64), + UNIQUE(name) +); \ No newline at end of file diff --git a/sites/default/sql/create/vendors.sql b/sites/default/sql/create/vendors.sql new file mode 100644 index 0000000..ea7b7ee --- /dev/null +++ b/sites/default/sql/create/vendors.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS %sitename%_vendors ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + address VARCHAR(255), + creation_date TIMESTAMP NOT NULL, + created_by TIMESTAMP NOT NULL, + phone_number VARCHAR(32) +) \ No newline at end of file diff --git a/sites/default/sql/unique/select_item_all.sql b/sites/default/sql/unique/select_item_all.sql new file mode 100644 index 0000000..bdc2894 --- /dev/null +++ b/sites/default/sql/unique/select_item_all.sql @@ -0,0 +1,44 @@ +SELECT * FROM %sitename%_items + LEFT JOIN %sitename%_logistics_info ON %sitename%_items.logistics_info_id = %sitename%_logistics_info.id + LEFT JOIN %sitename%_item_info ON %sitename%_items.item_info_id = %sitename%_item_info.id + LEFT JOIN %sitename%_food_info ON %sitename%_items.food_info_id = %sitename%_food_info.id +WHERE %sitename%_items.id=%s; + +/* +00 - item_id +01 - barcode +02 - item_name +03 - brand (id) +04 - tags +05 - links +06 - item_info_id +07 - logistics_info_id +08 - food_info_id +09 - row_type +10 - item_type +11 - search_string +12 - logistics_info_id +13 - barcode +14 - primary_location +15 - auto_issue_location +16 - dynamic_locations +17 - location_data +18 - quantity_on_hand +19 - item_info_id +20 - barcode +21 - linked_items +22 - shopping_lists +23 - recipes +24 - groups +25 - packaging +26 - uom +27 - cost +28 - safety_stock +29 - lead_time_days +30 - ai_pick +31 - food_info_id +32 - food_groups +33 - ingrediants +34 - nutrients +35 - expires +*/ \ No newline at end of file diff --git a/sites/main/sql/unique/select_item_all.sql b/sites/main/sql/unique/select_item_all.sql new file mode 100644 index 0000000..42b69ea --- /dev/null +++ b/sites/main/sql/unique/select_item_all.sql @@ -0,0 +1,5 @@ +SELECT * FROM main_items + LEFT JOIN main_logistics_info ON main_items.logistics_info_id = main_logistics_info.id + LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id + LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id +WHERE main_items.id=%s; \ No newline at end of file diff --git a/templates/home.html b/templates/home.html index 6a43ac2..8269b11 100644 --- a/templates/home.html +++ b/templates/home.html @@ -9,72 +9,197 @@
-