From c5faa833d226120df79b72191eb48fc8f929bbea Mon Sep 17 00:00:00 2001 From: Jadowyne Ulve Date: Thu, 14 Aug 2025 20:43:53 -0500 Subject: [PATCH] Did alot of testing and fixes pre mitigation for items --- .../database_payloads.cpython-313.pyc | Bin 28481 -> 28808 bytes .../administration/sql/CREATE/food_info.sql | 2 +- .../administration/sql/CREATE/item.sql | 2 +- .../administration/sql/CREATE/item_info.sql | 4 +- .../sql/CREATE/logistics_info.sql | 2 +- application/database_payloads.py | 16 +- .../database_items.cpython-313.pyc | Bin 62057 -> 62244 bytes .../__pycache__/items_API.cpython-313.pyc | Bin 35177 -> 35177 bytes .../items_processes.cpython-313.pyc | Bin 11239 -> 11383 bytes application/items/database_items.py | 1 + application/items/items_processes.py | 13 +- application/items/sql/getItemAllByID.sql | 19 +- application/items/sql/insertItemTuple.sql | 6 +- application/items/static/itemEditHandler.js | 17 -- application/receipts/sql/GetItemAllByUUID.sql | 19 +- .../recipe_processes.cpython-313.pyc | Bin 9926 -> 10045 bytes application/recipes/recipe_processes.py | 5 +- application/recipes/sql/insertItemTuple.sql | 6 +- .../__pycache__/shoplist_api.cpython-313.pyc | Bin 13023 -> 13022 bytes application/shoppinglists/shoplist_api.py | 2 +- .../sql/insertShoppingListsTuple.sql | 4 +- logs/database.log | 124 ++++++++++++- logs/process.log | 173 ++++++++++++++++++ 23 files changed, 341 insertions(+), 74 deletions(-) diff --git a/application/__pycache__/database_payloads.cpython-313.pyc b/application/__pycache__/database_payloads.cpython-313.pyc index 243c2285c0c0f72bbde2c8a245ad34b78821b1bb..28a5704c869ff166e576e95dbf7bb56e8c983d68 100644 GIT binary patch delta 4504 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 diff --git a/application/administration/sql/CREATE/food_info.sql b/application/administration/sql/CREATE/food_info.sql index 49d1ec7..98e51d1 100644 --- a/application/administration/sql/CREATE/food_info.sql +++ b/application/administration/sql/CREATE/food_info.sql @@ -1,6 +1,6 @@ CREATE TABLE IF NOT EXISTS %%site_name%%_food_info ( id SERIAL PRIMARY KEY, - food_info_uuid UUID gen_random_uuid(), + food_info_uuid UUID DEFAULT uuid_generate_v4(), food_groups TEXT [], ingrediants TEXT [], nutrients JSONB, diff --git a/application/administration/sql/CREATE/item.sql b/application/administration/sql/CREATE/item.sql index 85db086..f659fb5 100644 --- a/application/administration/sql/CREATE/item.sql +++ b/application/administration/sql/CREATE/item.sql @@ -1,6 +1,6 @@ CREATE TABLE IF NOT EXISTS %%site_name%%_items( id SERIAL PRIMARY KEY, - item_uuid UUID DEFAULT gen_random_uuid(), + item_uuid UUID DEFAULT uuid_generate_v4(), barcode VARCHAR(255), item_name VARCHAR(255) NOT NULL, brand INTEGER, diff --git a/application/administration/sql/CREATE/item_info.sql b/application/administration/sql/CREATE/item_info.sql index 3cedeb0..45546f2 100644 --- a/application/administration/sql/CREATE/item_info.sql +++ b/application/administration/sql/CREATE/item_info.sql @@ -1,6 +1,6 @@ CREATE TABLE IF NOt EXISTS %%site_name%%_item_info ( id SERIAL PRIMARY KEY, - item_info_uuid UUID gen_random_uuid(), + item_info_uuid UUID DEFAULT uuid_generate_v4(), barcode VARCHAR(255), packaging VARCHAR(255), uom_quantity FLOAT8, @@ -9,6 +9,6 @@ CREATE TABLE IF NOt EXISTS %%site_name%%_item_info ( safety_stock FLOAT8, lead_time_days FLOAT8, ai_pick BOOLEAN, - prefixes INTEGER [] + prefixes INTEGER [], UNIQUE(item_info_uuid) ); \ No newline at end of file diff --git a/application/administration/sql/CREATE/logistics_info.sql b/application/administration/sql/CREATE/logistics_info.sql index bc53c31..df92cfe 100644 --- a/application/administration/sql/CREATE/logistics_info.sql +++ b/application/administration/sql/CREATE/logistics_info.sql @@ -1,6 +1,6 @@ CREATE TABLE IF NOT EXISTS %%site_name%%_logistics_info( id SERIAL PRIMARY KEY, - logistics_info_uuid UUID gen_random_uuid(), + logistics_info_uuid UUID DEFAULT uuid_generate_v4(), barcode VARCHAR(255), primary_location INTEGER NOT NULL, primary_zone INTEGER NOT NULL, diff --git a/application/database_payloads.py b/application/database_payloads.py index 6ef9049..37b28c5 100644 --- a/application/database_payloads.py +++ b/application/database_payloads.py @@ -79,11 +79,14 @@ class FoodInfoPayload: @dataclass class ItemsPayload: - barcode: str - item_name: str item_info_id: int + item_info_uuid: str logistics_info_id: int + logistics_info_uuid: str food_info_id: int + food_info_uuid: str + barcode: str = "" + item_name: str = "" brand: int = 0 description: str = "" tags: list = field(default_factory=list) @@ -102,8 +105,11 @@ class ItemsPayload: lst2pgarr(self.tags), json.dumps(self.links), self.item_info_id, + self.item_info_uuid, self.logistics_info_id, + self.logistics_info_uuid, self.food_info_id, + self.food_info_uuid, self.row_type, self.item_type, self.search_string @@ -329,8 +335,9 @@ class ShoppingListPayload: name: str description: str author: int - type: str = "plain" + sub_type: str = "plain" creation_date: datetime.datetime = field(init=False) + list_type: str = "temporary" def __post_init__(self): self.creation_date = datetime.datetime.now() @@ -341,7 +348,8 @@ class ShoppingListPayload: self.description, self.author, self.creation_date, - self.type + self.sub_type, + self.list_type ) diff --git a/application/items/__pycache__/database_items.cpython-313.pyc b/application/items/__pycache__/database_items.cpython-313.pyc index 49e3d4fce448d760a3b324890ab696564b68085c..967bc447847b99faf6b1f99138b92c1228efbdd6 100644 GIT binary patch delta 2898 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 Uzt@9*qtPeD^6bbGqe71V0~C=DP5=M^ diff --git a/application/items/__pycache__/items_API.cpython-313.pyc b/application/items/__pycache__/items_API.cpython-313.pyc index edd7e52125047db8d77d6aba95a02d34d58c80e5..f0e653495d023f94765f2dbfb78da99d8180bacc 100644 GIT binary patch delta 22 ccmaDkiRtAeChpI?yj%=Gz&l~yM((&y09URC`v3p{ delta 22 ccmaDkiRtAeChpI?yj%=GaHxC6M((&y09<7Ur2qf` diff --git a/application/items/__pycache__/items_processes.cpython-313.pyc b/application/items/__pycache__/items_processes.cpython-313.pyc index 4c88f16c194e7bbb5a37b4b7298b33ac70524420..bfa9945205de269f45705d2af87cac5179eb488d 100644 GIT binary patch delta 1562 zcmZWpO>7%g5cczbY{zyId!5+%S;wiGwM(nE5>cAA3L=CCl8~~snj*E9;nRzy9RBZX1nQvxi z_kA<#y~}^h2OqV!`)u&}rdrBr!_*4KAu_nA>&l_nZD{4C zqH1}J>VmmeQKbM4z-_EH-mIK2saD`gUrnJsnC*C~HSlo(6M-k~flC0zKJd=FXg_%M zeebG0L`87v074RgZTr*Y2>Z@IMkMywzv;UMWEcF5x%#cZx8!oCaC>d*L?hC@Eo@CU zqW#`ax!VxA(dK6$FJwM^B^GL`d!TvIL;ADrU0issNVzx>{CrYI)Svibhp~UrKR;6i-Jlvgzo>ffBkYgfhU#cG?Zba#t%# z-c)IteH~4NGnhVx@C?Fnwii81#@LV`kr6g4ba%dl^veJ+yIJ%{*s9PMpFuYQV6_|7 zQm(M96_wl@`Z676p9y2}tC$H^;AqoY`E^y9g5{wbKpJ&t?Cmyx0WV)hSYq#sn!AXu z!u}RdcOOb&J#N1!iu5X*Or9g(u+8KPu^Mobmzq*IvhoDgfS@bv=VWYyH{~L=7pj!1 z<-%GHSFcrrg(5;zSM*R;$!oQlT1hp`e5rD%0AEMCguwgq32>Pgk>dj+bOe0Mk8{iw zH}Y#LH7Gw19|dYo6@;S*I>Io*96}mEiqk3>%K>{pUqto-!qbyMZVc6 zQO_%uLo1tf5(^ys;Y{||U;^eRq}1q1q}>Qp2+eV_+o^cpCd5|Qr1`RuFPNHM&Y=Qy z8p~$b_o+TNf6g21msFAzSYT)>gkz<~fACdZ8G6Oxu3Y~Y)??pc7I%9%5C z5Hl#@dRuEzfs~P4LDEO{H~DOU#Wh{`^UcR;0W*Yk{1x$5sJf`Fs>XWDgKP}4lAV4C z#&WLcT3K?^c^g}hVxc3z8BPFL8{C`sB+>N|gaZ3iI*8W5lgO;p)s*@eg!CM{pFR&; z|9kq`3#X9a+TTR)7J%hcw1P?Tzk}~^Qvqzr=SOSk@s0PME$K?NsGg@g%*>paxJF3g up5vhn?M|U-zla?0_}6jABq1I9bM`BQgm*3-*w8+_ZugR&dk}%)o&N=ELy(vN delta 1430 zcmYjRO>7%g5cc!`&pNi__$PK8+ldR^xK$KYq0pqI&@^cvl)}~|X%DXL-6Y%EUia;~ zjjdJzA@wKakmyywp{jZTm9r75#EmloaRFBTNEuERzPMgp@20X^8#cTqY?NbloOt_OBx^>(PRkc-BH`Iz=RO>5RQI$=B z*Zd!?Xqvp2V}4*L*!J^b z@4{3^3I1XCorUfc)ud@Q7fI(Az%}g^O*d#ivWozs&vf-}Ak+Qz+mTHEV=OA;mz>v> zx~x&trK~qps_6Wy6jh~o1^PbwGxAaTGP*+uR{*}V(l{8?*=)!qL!mjg5KRUTVEQ$L z*AWh~>(Oa4$-a+@WP<$_jrY$WeHuU%=o$1Um^+qA%%M8~VEXlDtyo!8t8($Gwnj(T z+p(#{1C2*;NAhV&Y>QvD!v3uDg@qH;Eb=*lwvc^bkgE!?O`72FIm3pOB#2wnL!NPsI zVu-SeZqs9^HAOc{wZ^^zd=#jR!29wEI54ar@PQFJ0lw+OITouMrItc<%J0KRftu42 zLKdNlFoN(NLJmMoPzuJh!5+|ekbM{70K&e>U^oe222Y`^_&euHt*Ta%O`BRb=t(TF z@xxtZo1;mX-?yVmB#*Qc;S@q|oGg<|q&|b#3>vgl*Gm;c)#^o5fX-ss99zt#ocx@( zSv!{{m)L{cd;rHv8+-7i^D6hD&56^Xh0grJF|v^czwIhRPx;s}n#2rB*!Ju$Dv%!_ zxr(HhYS;N}fWx$mq^&lIAtZ1cQfHCctHMK6+TfseAe{0Z3lTlqK69D;mL`#b1u z0+@DLtr!&lAovdV6u_2zev}KqH{Ly6)8uAVIYGZ+_Cw<{7YRu|vOTk)eO&3;Cj&b? he$lqh5)yiT&bmxU@bUQ_3)*MbtZp*+2qG}N^MCdmVRrxk diff --git a/application/items/database_items.py b/application/items/database_items.py index 1837c0a..a87d390 100644 --- a/application/items/database_items.py +++ b/application/items/database_items.py @@ -51,6 +51,7 @@ def getItemAllByID(site:str, payload: tuple, convert:bool=True): with open('application/items/sql/getItemAllByID.sql', 'r+') as file: sql = file.read().replace("%%site_name%%", site) record = () + print(sql) try: with psycopg2.connect(**database_config) as conn: with conn.cursor() as cur: diff --git a/application/items/items_processes.py b/application/items/items_processes.py index 2b78f40..c4e85a4 100644 --- a/application/items/items_processes.py +++ b/application/items/items_processes.py @@ -64,11 +64,14 @@ def postNewBlankItem(site_name: str, user_id: int, data: dict, conn=None): item = dbPayloads.ItemsPayload( - data['barcode'], - data['name'], - item_info['id'], - logistics_info['id'], - food_info['id'], + barcode = data['barcode'], + item_name = data['name'], + item_info_id=item_info['id'], + item_info_uuid=item_info['item_info_uuid'], + logistics_info_id=logistics_info['id'], + logistics_info_uuid=logistics_info['logistics_info_uuid'], + food_info_id=food_info['id'], + food_info_uuid=food_info['food_info_uuid'], brand=brand_id, row_type="single", item_type=data['subtype'], diff --git a/application/items/sql/getItemAllByID.sql b/application/items/sql/getItemAllByID.sql index 709c3ce..ad96fc1 100644 --- a/application/items/sql/getItemAllByID.sql +++ b/application/items/sql/getItemAllByID.sql @@ -1,4 +1,4 @@ -WITH passed_id AS (SELECT %s AS passed_id), +WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM %%site_name%%_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( @@ -20,25 +20,14 @@ WITH passed_id AS (SELECT %s AS passed_id), LEFT JOIN units ON %%site_name%%_item_info.uom = units.id WHERE %%site_name%%_item_info.id = (SELECT item_info_id FROM info_id) ), - cte_groups AS ( - SELECT - %%site_name%%_groups.*, - %%site_name%%_group_items.uuid, - %%site_name%%_group_items.item_type, - %%site_name%%_group_items.qty - FROM %%site_name%%_groups - JOIN %%site_name%%_group_items ON %%site_name%%_groups.id = %%site_name%%_group_items.gr_id - WHERE %%site_name%%_group_items.item_id = (SELECT passed_id FROM passed_id) - ), cte_shopping_lists AS ( SELECT %%site_name%%_shopping_lists.*, - %%site_name%%_shopping_list_items.uuid, %%site_name%%_shopping_list_items.item_type, %%site_name%%_shopping_list_items.qty FROM %%site_name%%_shopping_lists - JOIN %%site_name%%_shopping_list_items ON %%site_name%%_shopping_lists.id = %%site_name%%_shopping_list_items.sl_id - WHERE %%site_name%%_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) + JOIN %%site_name%%_shopping_list_items ON %%site_name%%_shopping_lists.list_uuid = %%site_name%%_shopping_list_items.list_uuid + WHERE %%site_name%%_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM %%site_name%%_itemlinks WHERE link=(SELECT passed_id FROM passed_id) @@ -80,7 +69,6 @@ SELECT row_to_json(%%site_name%%_food_info.*) as food_info, row_to_json(%%site_name%%_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, - (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, @@ -90,7 +78,6 @@ FROM %%site_name%%_items LEFT JOIN %%site_name%%_food_info ON %%site_name%%_items.food_info_id = %%site_name%%_food_info.id LEFT JOIN %%site_name%%_brands ON %%site_name%%_items.brand = %%site_name%%_brands.id LEFT JOIN units ON %%site_name%%_item_info.uom = units.id - LEFT JOIN cte_groups ON %%site_name%%_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON %%site_name%%_items.id = cte_shopping_lists.id WHERE %%site_name%%_items.id=(SELECT passed_id FROM passed_id) GROUP BY diff --git a/application/items/sql/insertItemTuple.sql b/application/items/sql/insertItemTuple.sql index 4c9b940..a8d0113 100644 --- a/application/items/sql/insertItemTuple.sql +++ b/application/items/sql/insertItemTuple.sql @@ -1,5 +1,5 @@ INSERT INTO %%site_name%%_items -(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, -food_info_id, row_type, item_type, search_string) -VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) +(barcode, item_name, brand, description, tags, links, item_info_id, item_info_uuid, +logistics_info_id, logistics_info_uuid, food_info_id, food_info_uuid, row_type, item_type, search_string) +VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *; \ No newline at end of file diff --git a/application/items/static/itemEditHandler.js b/application/items/static/itemEditHandler.js index 6e43377..fc44f00 100644 --- a/application/items/static/itemEditHandler.js +++ b/application/items/static/itemEditHandler.js @@ -2,7 +2,6 @@ var item; var linked_items; var tags = new Set(); var weblinks; -var groups; var shopping_lists; var food_groups = new Set(); var ingrediants = new Set(); @@ -324,21 +323,6 @@ async function updatePrefixModalTableBody(prefixes) { async function updateReferenceTable(){ let referenceTableBody = document.getElementById('referenceTableBody') referenceTableBody.innerHTML = ""; - for(let i=0; i < groups.length; i++){ - let tableRow = document.createElement('tr') - - let typeCell = document.createElement('td') - typeCell.innerHTML = `group` - let nameCell = document.createElement('td') - nameCell.innerHTML = `${groups[i].name}` - nameCell.classList.add('uk-text-truncate') - nameCell.classList.add('uk-table-expand') - nameCell.classList.add('uk-width-3-4') - - tableRow.append(typeCell) - tableRow.append(nameCell) - referenceTableBody.append(tableRow) - } for(let i=0; i < shopping_lists.length; i++){ let tableRow = document.createElement('tr') @@ -1130,7 +1114,6 @@ async function fetchItem() { item = data.item; tags = new Set(item.tags); weblinks = item.links; - groups = item.item_groups; shopping_lists = item.item_shopping_lists; food_groups = new Set(item.food_info.food_groups); ingrediants = new Set(item.food_info.ingrediants); diff --git a/application/receipts/sql/GetItemAllByUUID.sql b/application/receipts/sql/GetItemAllByUUID.sql index d3c033a..326c17c 100644 --- a/application/receipts/sql/GetItemAllByUUID.sql +++ b/application/receipts/sql/GetItemAllByUUID.sql @@ -1,4 +1,4 @@ -WITH passed_id AS (SELECT id AS passed_id FROM %%site_name%%_items WHERE item_uuid=%s), +WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM %%site_name%%_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( @@ -9,25 +9,14 @@ WITH passed_id AS (SELECT id AS passed_id FROM %%site_name%%_items WHERE item_uu LEFT JOIN units ON %%site_name%%_item_info.uom = units.id WHERE %%site_name%%_item_info.id = (SELECT item_info_id FROM info_id) ), - cte_groups AS ( - SELECT - %%site_name%%_groups.*, - %%site_name%%_group_items.uuid, - %%site_name%%_group_items.item_type, - %%site_name%%_group_items.qty - FROM %%site_name%%_groups - JOIN %%site_name%%_group_items ON %%site_name%%_groups.id = %%site_name%%_group_items.gr_id - WHERE %%site_name%%_group_items.item_id = (SELECT passed_id FROM passed_id) - ), cte_shopping_lists AS ( SELECT %%site_name%%_shopping_lists.*, - %%site_name%%_shopping_list_items.uuid, %%site_name%%_shopping_list_items.item_type, %%site_name%%_shopping_list_items.qty FROM %%site_name%%_shopping_lists - JOIN %%site_name%%_shopping_list_items ON %%site_name%%_shopping_lists.id = %%site_name%%_shopping_list_items.sl_id - WHERE %%site_name%%_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) + JOIN %%site_name%%_shopping_list_items ON %%site_name%%_shopping_lists.list_uuid = %%site_name%%_shopping_list_items.list_uuid + WHERE %%site_name%%_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM %%site_name%%_itemlinks WHERE link=(SELECT passed_id FROM passed_id) @@ -59,7 +48,6 @@ SELECT row_to_json(%%site_name%%_food_info.*) as food_info, row_to_json(%%site_name%%_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, - (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations @@ -68,7 +56,6 @@ FROM %%site_name%%_items LEFT JOIN %%site_name%%_food_info ON %%site_name%%_items.food_info_id = %%site_name%%_food_info.id LEFT JOIN %%site_name%%_brands ON %%site_name%%_items.brand = %%site_name%%_brands.id LEFT JOIN units ON %%site_name%%_item_info.uom = units.id - LEFT JOIN cte_groups ON %%site_name%%_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON %%site_name%%_items.id = cte_shopping_lists.id WHERE %%site_name%%_items.id=(SELECT passed_id FROM passed_id) GROUP BY diff --git a/application/recipes/__pycache__/recipe_processes.cpython-313.pyc b/application/recipes/__pycache__/recipe_processes.cpython-313.pyc index 8096fd1fc6d78430c758311595a868b2dd5156fa..e49bf37313a0ad8771d75c3c3e2d0f444603169f 100644 GIT binary patch delta 479 zcmX@+yVsBJGcPX}0}ym{%*&8d*~n)r!7TvfG6V5v1-8j?f{BbulMe{mZ2ltA&ScFU zEW!$u3FQhFhSH*7ng`0~2^ItMg+c{_#Y35bCBQu4U`b2f$@8R}*`-1m_!xqvH*3gv zGV;rSB!gvx<$~oy8G{ujH^@dZDo(y7+s>%GIY~~4v7RrpBsDiaGcPSazO*zm<(6L$5 zTna=Kfh7?p0VRtWm>3u~ZVk-kFDW5E;B+OO;VpdPqQYz${4rKNNak1LwrAq4< zHN_P!C>mZAH@YFEu|njcl->;)tqa-?7iAo8h|0|s zwJJ7@Tq@e$_ROd4xqNshA6BiG2N_+Y10sY$1SmpoaoFVMr6oT%oa7|X~g Vy}~d;{~r+5pRffkFTP delta 364 zcmdn%cg&aXGcPX}0}vctHanw0c_W{#1UD~`%M8SyIoKx02_`biPd*@Mv-yieJCib3 zurMo7CX@$C3xx^`JVQ2;QEu`l*>*;S%~f(jjJ9mWnR)3sskhjROOr|}3sN2tNe-!2B z;c9UCBDML8iVY)|gtoUa^J!x)AI8a6YW0j$Cht;{Wt=tnhMJ3F6eFYb0_P75AbNu` Pgx(SI4a_eR2HFV#{=H$N diff --git a/application/recipes/recipe_processes.py b/application/recipes/recipe_processes.py index 1b52075..3aebafb 100644 --- a/application/recipes/recipe_processes.py +++ b/application/recipes/recipe_processes.py @@ -188,9 +188,12 @@ def postNewSkuFromRecipe(site_name: str, user_id: int, data: dict, conn=None): item = database_payloads.ItemsPayload( barcode=None, item_name=data['name'], - item_info_id=item_info['id'], + item_info_id=item_info['id'], + item_info_uuid=item_info['item_info_uuid'], logistics_info_id=logistics_info['id'], + logistics_info_uuid=logistics_info['logistics_info_uuid'], food_info_id=food_info['id'], + food_info_uuid=food_info['food_info_uuid'], links=links, brand=brand_id, row_type="single", diff --git a/application/recipes/sql/insertItemTuple.sql b/application/recipes/sql/insertItemTuple.sql index 4c9b940..a8d0113 100644 --- a/application/recipes/sql/insertItemTuple.sql +++ b/application/recipes/sql/insertItemTuple.sql @@ -1,5 +1,5 @@ INSERT INTO %%site_name%%_items -(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, -food_info_id, row_type, item_type, search_string) -VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) +(barcode, item_name, brand, description, tags, links, item_info_id, item_info_uuid, +logistics_info_id, logistics_info_uuid, food_info_id, food_info_uuid, row_type, item_type, search_string) +VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *; \ No newline at end of file diff --git a/application/shoppinglists/__pycache__/shoplist_api.cpython-313.pyc b/application/shoppinglists/__pycache__/shoplist_api.cpython-313.pyc index e462cdfb1b972b72c891e240e0caca2c0a23c4e9..61161c52244637942be30a354faa5a59990c0731 100644 GIT binary patch delta 879 zcmaKqPiqrV6vg{yn#sQgi%o1vY!jJGH8E*u5Q>u8Aegk+#;w7H!~KC zrIu=|7P@%|uG|z9p)TZs8$W`sbT^>+5LpOai0?i`Efi<*}U9eG&_nqi@^E87>DhynntZ;Syf$(GUkK`_71VaeQe;ob1;uG#ZiPRXUs$ET7b&x z1hMFpnj|Z1O>L5ne{J-xmf_tu+G(=NzG|vO*65Fu8d+z(r}ju9&tq)GTGZ!E19~u1 zvfIV6Hu%lKH}a?;Jra*A_z-OHUlk>rOpg~NO$=MY@;L+s*-}-vo#i>G)O7ezS?$*0sS5i;f8Tl95OBRlMKvY(J5Z4K;>iIo<+Dps+EHt|bWP^}`? e5u1n|j<;=a7Bw!p?aI{Zy0u`OhnKs}l>7_Dr_EIW delta 900 zcmaKq&rcIU6vvs}vi(7uR4fz=vDLQfA_ZDwjHVimrnH7?Q6QpXDcu#tP$+~uAU-BQw|t8TrOAA2?RPoy zcPd3lrb*o2s%RiJn)Ry^GMB+mb9Oh7+%!&2l6xK}L z!Xpq)0!{-a04D&~NOyYzm1&{NOT!t^JI3LQe94@KrBCLoRYMaVs&*WLs$EKP4H95<3L7AMI0o@u^5x(J znkKn$49(Jdcmuir${Num&%TNtMRoci8kW#Q^8IiW&C!k{Z&6p8_h3r3q7^J1xABE4 zF`Kx}JYW2C&^Psh0vqr={~;}2<~9q{dcR>>8U6;mK#QH1q>wOLf~r#h=*c8QWA^a^ zE>3AW`PdbHfctn@b>XK_@(4;A%~GCwu*Pgw!bD7Fmf!(Gp#Y9YSb` yY<4ea#F&pkQcPwUl=$1Tpz44*zye^2<8=c*2^yxJIg*o8TD7E~!7rBAd*q+|*4hgI diff --git a/application/shoppinglists/shoplist_api.py b/application/shoppinglists/shoplist_api.py index 39ba613..4c7f673 100644 --- a/application/shoppinglists/shoplist_api.py +++ b/application/shoppinglists/shoplist_api.py @@ -44,7 +44,7 @@ def addList(): name=list_name, description=list_description, author=user_id, - type=list_type + sub_type=list_type ) shoplist_database.insertShoppingListsTuple(site_name, shopping_list.payload()) return jsonify({'error': False, 'message': 'List added!!'}) diff --git a/application/shoppinglists/sql/insertShoppingListsTuple.sql b/application/shoppinglists/sql/insertShoppingListsTuple.sql index 6816ef5..a659d57 100644 --- a/application/shoppinglists/sql/insertShoppingListsTuple.sql +++ b/application/shoppinglists/sql/insertShoppingListsTuple.sql @@ -1,4 +1,4 @@ INSERT INTO %%site_name%%_shopping_lists -(name, description, author, creation_date, type) -VALUES (%s, %s, %s, %s, %s) +(name, description, author, creation_date, sub_type, list_type) +VALUES (%s, %s, %s, %s, %s, %s) RETURNING *; \ No newline at end of file diff --git a/logs/database.log b/logs/database.log index 42739b5..dc803c6 100644 --- a/logs/database.log +++ b/logs/database.log @@ -398,4 +398,126 @@ sql='WITH sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand) AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id)SELECT main_items.*, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_infoFROM main_itemsLEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.idLEFT JOIN units ON units.id = main_item_info.uomLEFT JOIN sum_cte ON main_items.id = sum_cte.idWHERE main_item_info.safety_stock > COALESCE(sum_cte.total_sum, 0);') 2025-08-14 18:15:24.034419 --- ERROR --- DatabaseError(message='missing FROM-clause entry for table "item_info"LINE 8: COALESCE(row_to_json(item_info.*), '{}') AS item_info ^', payload=None, - sql='WITH sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand) AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id)SELECT main_items.*, COALESCE(row_to_json(item_info.*), '{}') AS item_infoFROM main_itemsLEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.idLEFT JOIN units ON units.id = main_item_info.uomLEFT JOIN sum_cte ON main_items.id = sum_cte.idWHERE main_item_info.safety_stock > COALESCE(sum_cte.total_sum, 0);') \ No newline at end of file + sql='WITH sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand) AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id)SELECT main_items.*, COALESCE(row_to_json(item_info.*), '{}') AS item_infoFROM main_itemsLEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.idLEFT JOIN units ON units.id = main_item_info.uomLEFT JOIN sum_cte ON main_items.id = sum_cte.idWHERE main_item_info.safety_stock > COALESCE(sum_cte.total_sum, 0);') +2025-08-14 18:26:50.593711 --- ERROR --- DatabaseError(message='column "type" of relation "main_shopping_lists" does not existLINE 2: (name, description, author, creation_date, type) ^', + payload=('Planned Dinners', 'test', 1, datetime.datetime(2025, 8, 14, 18, 26, 50, 576115), 'plain'), + sql='INSERT INTO main_shopping_lists(name, description, author, creation_date, type) VALUES (%s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 19:29:53.965745 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: food_info_uuid UUID gen_random_uuid(), ^', + payload=CREATE TABLE IF NOT EXISTS teast_food_info ( + id SERIAL PRIMARY KEY, + food_info_uuid UUID gen_random_uuid(), + food_groups TEXT [], + ingrediants TEXT [], + nutrients JSONB, + expires BOOLEAN, + default_expiration FLOAT8, + UNIQUE(food_info_uuid) +);, + sql='food_info') +2025-08-14 19:34:05.734175 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: item_info_uuid UUID gen_random_uuid(), ^', + payload=CREATE TABLE IF NOt EXISTS teat_item_info ( + id SERIAL PRIMARY KEY, + item_info_uuid UUID gen_random_uuid(), + barcode VARCHAR(255), + packaging VARCHAR(255), + uom_quantity FLOAT8, + uom INTEGER, + cost FLOAT8, + safety_stock FLOAT8, + lead_time_days FLOAT8, + ai_pick BOOLEAN, + prefixes INTEGER [] + UNIQUE(item_info_uuid) +);, + sql='item_info') +2025-08-14 19:34:50.879543 --- ERROR --- DatabaseError(message='syntax error at or near "("LINE 13: UNIQUE(item_info_uuid) ^', + payload=CREATE TABLE IF NOt EXISTS teat_item_info ( + id SERIAL PRIMARY KEY, + item_info_uuid UUID DEFAULT gen_random_uuid() NOT NULL, + barcode VARCHAR(255), + packaging VARCHAR(255), + uom_quantity FLOAT8, + uom INTEGER, + cost FLOAT8, + safety_stock FLOAT8, + lead_time_days FLOAT8, + ai_pick BOOLEAN, + prefixes INTEGER [] + UNIQUE(item_info_uuid) +);, + sql='item_info') +2025-08-14 19:35:21.231158 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: logistics_info_uuid UUID gen_random_uuid(), ^', + payload=CREATE TABLE IF NOT EXISTS tet_logistics_info( + id SERIAL PRIMARY KEY, + logistics_info_uuid UUID gen_random_uuid(), + barcode VARCHAR(255), + primary_location INTEGER NOT NULL, + primary_zone INTEGER NOT NULL, + auto_issue_location INTEGER NOT NULL, + auto_issue_zone INTEGER NOT NULL, + UNIQUE(logistics_info_uuid), + CONSTRAINT fk_primary_location + FOREIGN KEY(primary_location) + REFERENCES tet_locations(id), + CONSTRAINT fk_primary_zone + FOREIGN KEY(primary_zone) + REFERENCES tet_zones(id), + CONSTRAINT fk_auto_issue_location + FOREIGN KEY(auto_issue_location) + REFERENCES tet_locations(id), + CONSTRAINT fk_auto_issue_zone + FOREIGN KEY(auto_issue_zone) + REFERENCES tet_zones(id) +);, + sql='logistics_info') +2025-08-14 19:37:59.688952 --- ERROR --- DatabaseError(message='null value in column "item_info_uuid" of relation "tet_items" violates not-null constraintDETAIL: Failing row contains (1, 89f132f4-78b2-4d34-bdf0-ade0f15b7d35, null, test, 1, , {}, {"main": ""}, 1, null, 1, null, 1, null, single, FOOD, &&test&&).', + payload=(None, 'test', 1, '', '{}', '{"main": ""}', 1, 1, 1, 'single', 'FOOD', '&&test&&'), + sql='INSERT INTO tet_items(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, food_info_id, row_type, item_type, search_string) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 19:48:30.781212 --- ERROR --- DatabaseError(message='null value in column "item_info_uuid" of relation "tet_items" violates not-null constraintDETAIL: Failing row contains (1, 2ec1ebdf-0794-4e3a-9dfa-d284bfb703af, null, tet, 1, , {}, {"main": ""}, 1, null, 1, null, 1, null, single, FOOD, &&tet&&).', + payload=(None, 'tet', 1, '', '{}', '{"main": ""}', 1, 1, 1, 'single', 'FOOD', '&&tet&&'), + sql='INSERT INTO tet_items(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, food_info_id, row_type, item_type, search_string) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 20:08:32.492285 --- ERROR --- DatabaseError(message='null value in column "item_info_uuid" of relation "tet_items" violates not-null constraintDETAIL: Failing row contains (2, 62f23dd1-8af8-48a0-a95f-fb1582d1028f, null, tet, 1, , {}, {"main": ""}, 2, null, 2, null, 2, null, single, FOOD, &&tet&&).', + payload=(None, 'tet', 1, '', '{}', '{"main": ""}', 2, 2, 2, 'single', 'FOOD', '&&tet&&'), + sql='INSERT INTO tet_items(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, food_info_id, row_type, item_type, search_string) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 20:08:55.912521 --- ERROR --- DatabaseError(message='null value in column "item_info_uuid" of relation "tet_items" violates not-null constraintDETAIL: Failing row contains (3, f2c4fa98-7758-44af-b38c-dacc7e52e57a, null, rwar, 1, , {}, {"main": ""}, 3, null, 3, null, 3, null, single, FOOD, &&rwar&&).', + payload=(None, 'rwar', 1, '', '{}', '{"main": ""}', 3, 3, 3, 'single', 'FOOD', '&&rwar&&'), + sql='INSERT INTO tet_items(barcode, item_name, brand, description, tags, links, item_info_id, logistics_info_id, food_info_id, row_type, item_type, search_string) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 20:09:48.986654 --- ERROR --- DatabaseError(message='tuple index out of range', + payload=(None, 'rwar', 1, '', '{}', '{"main": ""}', 4, 4, 4, 'single', 'FOOD', '&&rwar&&'), + sql='INSERT INTO tet_items(barcode, item_name, brand, description, tags, links, item_info_id, item_info_uuid, logistics_info_id, logistics_info_uuid, food_info_id, food_info_uuid, row_type, item_type, search_string) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING *;') +2025-08-14 20:19:34.321246 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 29: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=('7152448a-39b7-4fcc-8b7b-5689f1ea598b',), + sql='WITH passed_id AS (SELECT id AS passed_id FROM tet_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT tet_groups.*, tet_group_items.uuid, tet_group_items.item_type, tet_group_items.qty FROM tet_groups JOIN tet_group_items ON tet_groups.id = tet_group_items.gr_id WHERE tet_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:22:56.053977 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 19: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=('7152448a-39b7-4fcc-8b7b-5689f1ea598b',), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM tet_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:23:56.287364 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.uuid does not existLINE 15: tet_shopping_list_items.uuid, ^', + payload=('7152448a-39b7-4fcc-8b7b-5689f1ea598b',), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM tet_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:24:28.412448 --- ERROR --- DatabaseError(message='relation "cte_groups" does not existLINE 60: LEFT JOIN cte_groups ON tet_items.id = cte_groups.id ^', + payload=('7152448a-39b7-4fcc-8b7b-5689f1ea598b',), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM tet_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:25:02.052879 --- ERROR --- DatabaseError(message='relation "cte_groups" does not existLINE 59: LEFT JOIN cte_groups ON tet_items.id = cte_groups.id ^', + payload=('7152448a-39b7-4fcc-8b7b-5689f1ea598b',), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM tet_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:25:41.026376 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 40: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT tet_groups.*, tet_group_items.uuid, tet_group_items.item_type, tet_group_items.qty FROM tet_groups JOIN tet_group_items ON tet_groups.id = tet_group_items.gr_id WHERE tet_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:26:28.764969 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 40: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT tet_groups.*, tet_group_items.uuid, tet_group_items.item_type, tet_group_items.qty FROM tet_groups JOIN tet_group_items ON tet_groups.id = tet_group_items.gr_id WHERE tet_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:30:56.312900 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 40: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT tet_groups.*, tet_group_items.uuid, tet_group_items.item_type, tet_group_items.qty FROM tet_groups JOIN tet_group_items ON tet_groups.id = tet_group_items.gr_id WHERE tet_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_groups ON tet_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:31:47.355307 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.sl_id does not existLINE 30: ...et_shopping_list_items ON tet_shopping_lists.id = tet_shoppi... ^', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.uuid, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.id = tet_shopping_list_items.sl_id WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:34:42.067464 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.item_id does not existLINE 30: WHERE tet_shopping_list_items.item_id = (SELECT pass... ^HINT: Perhaps you meant to reference the column "tet_shopping_list_items.item_uuid".', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:35:41.885979 --- ERROR --- DatabaseError(message='column tet_shopping_list_items.item_id does not existLINE 30: WHERE tet_shopping_list_items.item_id = (SELECT pass... ^HINT: Perhaps you meant to reference the column "tet_shopping_list_items.item_uuid".', + payload=(4,), + sql='WITH passed_id AS (SELECT %s AS passed_id), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') +2025-08-14 20:38:39.613355 --- ERROR --- DatabaseError(message='column "item_id" does not existLINE 1: ...id, item_uuid as passed_uuid FROM tet_items WHERE item_id=4)... ^HINT: Perhaps you meant to reference the column "tet_items.item_uuid".', + payload=(4,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM tet_items WHERE item_id=%s), logistics_id AS (SELECT logistics_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM tet_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT tet_conversions.id as conv_id, tet_conversions.conv_factor as conv_factor, units.* as uom FROM tet_conversions LEFT JOIN units ON tet_conversions.uom_id = units.id WHERE tet_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT tet_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM tet_sku_prefix as p WHERE p.id = ANY(tet_item_info.prefixes)), '[]'::json) as prefixes FROM tet_item_info LEFT JOIN units ON tet_item_info.uom = units.id WHERE tet_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT tet_shopping_lists.*, tet_shopping_list_items.item_type, tet_shopping_list_items.qty FROM tet_shopping_lists JOIN tet_shopping_list_items ON tet_shopping_lists.list_uuid = tet_shopping_list_items.list_uuid WHERE tet_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM tet_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM tet_item_locations LEFT JOIN tet_locations ON tet_locations.id = tet_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM tet_logistics_info AS li LEFT JOIN tet_locations AS pl ON li.primary_location = pl.id LEFT JOIN tet_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN tet_zones AS pz ON li.primary_zone = pz.id LEFT JOIN tet_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM tet_barcodes AS barcode LEFT JOIN tet_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, tet_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(tet_food_info.*) as food_info, row_to_json(tet_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM tet_items LEFT JOIN tet_item_info ON tet_items.item_info_id = tet_item_info.id LEFT JOIN tet_food_info ON tet_items.food_info_id = tet_food_info.id LEFT JOIN tet_brands ON tet_items.brand = tet_brands.id LEFT JOIN units ON tet_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON tet_items.id = cte_shopping_lists.idWHERE tet_items.id=(SELECT passed_id FROM passed_id)GROUP BY tet_items.id, tet_item_info.id, tet_food_info.id, tet_brands.id;') \ No newline at end of file diff --git a/logs/process.log b/logs/process.log index b5329cd..c325ed1 100644 --- a/logs/process.log +++ b/logs/process.log @@ -728,3 +728,176 @@ 2025-08-09 16:19:19.975659 --- INFO --- conversions DROPPED! 2025-08-09 16:19:19.979690 --- INFO --- sku_prefix DROPPED! 2025-08-09 16:19:19.983693 --- INFO --- barcodes DROPPED! +2025-08-14 19:29:53.905799 --- INFO --- logins Created! +2025-08-14 19:29:53.913684 --- INFO --- sites Created! +2025-08-14 19:29:53.921143 --- INFO --- roles Created! +2025-08-14 19:29:53.927994 --- INFO --- units Created! +2025-08-14 19:29:53.938165 --- INFO --- cost_layers Created! +2025-08-14 19:29:53.948815 --- INFO --- linked_items Created! +2025-08-14 19:29:53.957434 --- INFO --- brands Created! +2025-08-14 19:29:53.969109 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: food_info_uuid UUID gen_random_uuid(), ^', payload=CREATE TABLE IF NOT EXISTS teast_food_info ( + id SERIAL PRIMARY KEY, + food_info_uuid UUID gen_random_uuid(), + food_groups TEXT [], + ingrediants TEXT [], + nutrients JSONB, + expires BOOLEAN, + default_expiration FLOAT8, + UNIQUE(food_info_uuid) +);, sql='food_info') +2025-08-14 19:34:05.685135 --- INFO --- logins Created! +2025-08-14 19:34:05.689988 --- INFO --- sites Created! +2025-08-14 19:34:05.694012 --- INFO --- roles Created! +2025-08-14 19:34:05.697705 --- INFO --- units Created! +2025-08-14 19:34:05.704841 --- INFO --- cost_layers Created! +2025-08-14 19:34:05.712139 --- INFO --- linked_items Created! +2025-08-14 19:34:05.718040 --- INFO --- brands Created! +2025-08-14 19:34:05.725611 --- INFO --- food_info Created! +2025-08-14 19:34:05.737597 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: item_info_uuid UUID gen_random_uuid(), ^', payload=CREATE TABLE IF NOt EXISTS teat_item_info ( + id SERIAL PRIMARY KEY, + item_info_uuid UUID gen_random_uuid(), + barcode VARCHAR(255), + packaging VARCHAR(255), + uom_quantity FLOAT8, + uom INTEGER, + cost FLOAT8, + safety_stock FLOAT8, + lead_time_days FLOAT8, + ai_pick BOOLEAN, + prefixes INTEGER [] + UNIQUE(item_info_uuid) +);, sql='item_info') +2025-08-14 19:34:50.829663 --- INFO --- logins Created! +2025-08-14 19:34:50.834886 --- INFO --- sites Created! +2025-08-14 19:34:50.839194 --- INFO --- roles Created! +2025-08-14 19:34:50.843224 --- INFO --- units Created! +2025-08-14 19:34:50.850921 --- INFO --- cost_layers Created! +2025-08-14 19:34:50.858422 --- INFO --- linked_items Created! +2025-08-14 19:34:50.863795 --- INFO --- brands Created! +2025-08-14 19:34:50.870953 --- INFO --- food_info Created! +2025-08-14 19:34:50.883113 --- ERROR --- DatabaseError(message='syntax error at or near "("LINE 13: UNIQUE(item_info_uuid) ^', payload=CREATE TABLE IF NOt EXISTS teat_item_info ( + id SERIAL PRIMARY KEY, + item_info_uuid UUID DEFAULT gen_random_uuid() NOT NULL, + barcode VARCHAR(255), + packaging VARCHAR(255), + uom_quantity FLOAT8, + uom INTEGER, + cost FLOAT8, + safety_stock FLOAT8, + lead_time_days FLOAT8, + ai_pick BOOLEAN, + prefixes INTEGER [] + UNIQUE(item_info_uuid) +);, sql='item_info') +2025-08-14 19:35:21.145030 --- INFO --- logins Created! +2025-08-14 19:35:21.150356 --- INFO --- sites Created! +2025-08-14 19:35:21.154977 --- INFO --- roles Created! +2025-08-14 19:35:21.159169 --- INFO --- units Created! +2025-08-14 19:35:21.167029 --- INFO --- cost_layers Created! +2025-08-14 19:35:21.174711 --- INFO --- linked_items Created! +2025-08-14 19:35:21.180712 --- INFO --- brands Created! +2025-08-14 19:35:21.188182 --- INFO --- food_info Created! +2025-08-14 19:35:21.199559 --- INFO --- item_info Created! +2025-08-14 19:35:21.210793 --- INFO --- zones Created! +2025-08-14 19:35:21.221603 --- INFO --- locations Created! +2025-08-14 19:35:21.235380 --- ERROR --- DatabaseError(message='syntax error at or near "gen_random_uuid"LINE 3: logistics_info_uuid UUID gen_random_uuid(), ^', payload=CREATE TABLE IF NOT EXISTS tet_logistics_info( + id SERIAL PRIMARY KEY, + logistics_info_uuid UUID gen_random_uuid(), + barcode VARCHAR(255), + primary_location INTEGER NOT NULL, + primary_zone INTEGER NOT NULL, + auto_issue_location INTEGER NOT NULL, + auto_issue_zone INTEGER NOT NULL, + UNIQUE(logistics_info_uuid), + CONSTRAINT fk_primary_location + FOREIGN KEY(primary_location) + REFERENCES tet_locations(id), + CONSTRAINT fk_primary_zone + FOREIGN KEY(primary_zone) + REFERENCES tet_zones(id), + CONSTRAINT fk_auto_issue_location + FOREIGN KEY(auto_issue_location) + REFERENCES tet_locations(id), + CONSTRAINT fk_auto_issue_zone + FOREIGN KEY(auto_issue_zone) + REFERENCES tet_zones(id) +);, sql='logistics_info') +2025-08-14 19:35:53.264323 --- INFO --- logins Created! +2025-08-14 19:35:53.269766 --- INFO --- sites Created! +2025-08-14 19:35:53.274221 --- INFO --- roles Created! +2025-08-14 19:35:53.278186 --- INFO --- units Created! +2025-08-14 19:35:53.286015 --- INFO --- cost_layers Created! +2025-08-14 19:35:53.293742 --- INFO --- linked_items Created! +2025-08-14 19:35:53.299834 --- INFO --- brands Created! +2025-08-14 19:35:53.307312 --- INFO --- food_info Created! +2025-08-14 19:35:53.314780 --- INFO --- item_info Created! +2025-08-14 19:35:53.322039 --- INFO --- zones Created! +2025-08-14 19:35:53.328841 --- INFO --- locations Created! +2025-08-14 19:35:53.339467 --- INFO --- logistics_info Created! +2025-08-14 19:35:53.350521 --- INFO --- transactions Created! +2025-08-14 19:35:53.362940 --- INFO --- item Created! +2025-08-14 19:35:53.372902 --- INFO --- vendors Created! +2025-08-14 19:35:53.383192 --- INFO --- groups Created! +2025-08-14 19:35:53.394254 --- INFO --- group_items Created! +2025-08-14 19:35:53.404915 --- INFO --- receipts Created! +2025-08-14 19:35:53.414635 --- INFO --- receipt_items Created! +2025-08-14 19:35:53.424929 --- INFO --- recipes Created! +2025-08-14 19:35:53.434896 --- INFO --- recipe_items Created! +2025-08-14 19:35:53.445431 --- INFO --- shopping_lists Created! +2025-08-14 19:35:53.455619 --- INFO --- shopping_list_items Created! +2025-08-14 19:35:53.467104 --- INFO --- item_locations Created! +2025-08-14 19:35:53.476479 --- INFO --- conversions Created! +2025-08-14 19:35:53.486471 --- INFO --- sku_prefix Created! +2025-08-14 19:35:53.494002 --- INFO --- barcodes Created! +2025-08-14 19:35:53.498636 --- INFO --- Admin User Created! +2025-08-14 19:47:18.752121 --- INFO --- item_info DROPPED! +2025-08-14 19:47:18.763169 --- INFO --- items DROPPED! +2025-08-14 19:47:18.771525 --- INFO --- cost_layers DROPPED! +2025-08-14 19:47:18.779844 --- INFO --- linked_items DROPPED! +2025-08-14 19:47:18.787643 --- INFO --- transactions DROPPED! +2025-08-14 19:47:18.795036 --- INFO --- brands DROPPED! +2025-08-14 19:47:18.802983 --- INFO --- food_info DROPPED! +2025-08-14 19:47:18.811352 --- INFO --- logistics_info DROPPED! +2025-08-14 19:47:18.818889 --- INFO --- zones DROPPED! +2025-08-14 19:47:18.826319 --- INFO --- locations DROPPED! +2025-08-14 19:47:18.833208 --- INFO --- vendors DROPPED! +2025-08-14 19:47:18.840648 --- INFO --- group_items DROPPED! +2025-08-14 19:47:18.847262 --- INFO --- groups DROPPED! +2025-08-14 19:47:18.854357 --- INFO --- receipt_items DROPPED! +2025-08-14 19:47:18.861218 --- INFO --- receipts DROPPED! +2025-08-14 19:47:18.868511 --- INFO --- recipe_items DROPPED! +2025-08-14 19:47:18.876124 --- INFO --- recipes DROPPED! +2025-08-14 19:47:18.882823 --- INFO --- shopping_list_items DROPPED! +2025-08-14 19:47:18.890711 --- INFO --- shopping_lists DROPPED! +2025-08-14 19:47:18.897792 --- INFO --- item_locations DROPPED! +2025-08-14 19:47:18.905273 --- INFO --- conversions DROPPED! +2025-08-14 19:47:18.911977 --- INFO --- sku_prefix DROPPED! +2025-08-14 19:47:18.919101 --- INFO --- barcodes DROPPED! +2025-08-14 19:48:11.092829 --- INFO --- logins Created! +2025-08-14 19:48:11.097983 --- INFO --- sites Created! +2025-08-14 19:48:11.102722 --- INFO --- roles Created! +2025-08-14 19:48:11.107103 --- INFO --- units Created! +2025-08-14 19:48:11.115720 --- INFO --- cost_layers Created! +2025-08-14 19:48:11.123721 --- INFO --- linked_items Created! +2025-08-14 19:48:11.129515 --- INFO --- brands Created! +2025-08-14 19:48:11.137977 --- INFO --- food_info Created! +2025-08-14 19:48:11.149504 --- INFO --- item_info Created! +2025-08-14 19:48:11.157006 --- INFO --- zones Created! +2025-08-14 19:48:11.164004 --- INFO --- locations Created! +2025-08-14 19:48:11.175285 --- INFO --- logistics_info Created! +2025-08-14 19:48:11.182147 --- INFO --- transactions Created! +2025-08-14 19:48:11.191631 --- INFO --- item Created! +2025-08-14 19:48:11.198138 --- INFO --- vendors Created! +2025-08-14 19:48:11.206077 --- INFO --- groups Created! +2025-08-14 19:48:11.214252 --- INFO --- group_items Created! +2025-08-14 19:48:11.222024 --- INFO --- receipts Created! +2025-08-14 19:48:11.228913 --- INFO --- receipt_items Created! +2025-08-14 19:48:11.236880 --- INFO --- recipes Created! +2025-08-14 19:48:11.243995 --- INFO --- recipe_items Created! +2025-08-14 19:48:11.252122 --- INFO --- shopping_lists Created! +2025-08-14 19:48:11.259184 --- INFO --- shopping_list_items Created! +2025-08-14 19:48:11.267776 --- INFO --- item_locations Created! +2025-08-14 19:48:11.274118 --- INFO --- conversions Created! +2025-08-14 19:48:11.281552 --- INFO --- sku_prefix Created! +2025-08-14 19:48:11.286512 --- INFO --- barcodes Created! +2025-08-14 19:48:11.290933 --- INFO --- Admin User Created!