From a57b8a20448d259a238249cf59bec709864e75d5 Mon Sep 17 00:00:00 2001 From: Jadowyne Ulve Date: Sat, 23 Aug 2025 11:31:51 -0500 Subject: [PATCH] Began new database migration codebase --- .../database_payloads.cpython-313.pyc | Bin 28895 -> 28897 bytes application/administration/sql/logins.sql | 25 ++ application/administration/sql/roles.sql | 11 + application/administration/sql/sites.sql | 12 + application/administration/sql/units.sql | 10 + application/database_payloads.py | 6 +- .../database_postgres/BarcodesModel.py | 15 ++ application/database_postgres/BaseModel.py | 227 ++++++++++++++++++ application/database_postgres/BrandsModel.py | 11 + .../database_postgres/ConversionsModel.py | 12 + .../database_postgres/CostLayersModel.py | 17 ++ .../database_postgres/FoodInfoModel.py | 24 ++ .../database_postgres/ItemInfoModel.py | 24 ++ .../database_postgres/ItemLocationsModel.py | 18 ++ application/database_postgres/ItemsModel.py | 31 +++ .../database_postgres/LocationsModel.py | 13 + .../database_postgres/LogisticsInfoModel.py | 15 ++ .../database_postgres/PlanEventsModel.py | 20 ++ application/database_postgres/PlansModel.py | 12 + .../database_postgres/ReceiptItemsModel.py | 24 ++ .../database_postgres/ReceiptsModel.py | 25 ++ .../database_postgres/RecipeItemsModel.py | 23 ++ application/database_postgres/RecipesModel.py | 24 ++ .../database_postgres/SKUPrefixModel.py | 12 + .../ShoppingListItemsModel.py | 22 ++ .../database_postgres/ShoppingListsModel.py | 18 ++ .../database_postgres/TransactionsModel.py | 25 ++ application/database_postgres/VendorsModel.py | 18 ++ application/database_postgres/ZonesModel.py | 12 + application/database_postgres/__init__.py | 0 .../__pycache__/BarcodeModel.cpython-313.pyc | Bin 0 -> 3168 bytes .../__pycache__/BarcodesModel.cpython-313.pyc | Bin 0 -> 1019 bytes .../__pycache__/BaseModel.cpython-313.pyc | Bin 0 -> 13675 bytes .../__pycache__/BrandsModel.cpython-313.pyc | Bin 0 -> 862 bytes .../ConversionsModel.cpython-313.pyc | Bin 0 -> 944 bytes .../CostLayersModel.cpython-313.pyc | Bin 0 -> 1137 bytes .../__pycache__/FoodInfoModel.cpython-313.pyc | Bin 0 -> 1688 bytes .../__pycache__/ItemInfoModel.cpython-313.pyc | Bin 0 -> 1685 bytes .../ItemLocationsModel.cpython-313.pyc | Bin 0 -> 1470 bytes .../__pycache__/ItemsModel.cpython-313.pyc | Bin 0 -> 1975 bytes .../LocationsModel.cpython-313.pyc | Bin 0 -> 924 bytes .../LogisticsInfoModel.cpython-313.pyc | Bin 0 -> 1033 bytes .../PlanEventsModel.cpython-313.pyc | Bin 0 -> 1214 bytes .../__pycache__/PlansModel.cpython-313.pyc | Bin 0 -> 935 bytes .../ReceiptItemsModel.cpython-313.pyc | Bin 0 -> 1628 bytes .../__pycache__/ReceiptsModel.cpython-313.pyc | Bin 0 -> 1894 bytes .../RecipeItemsModel.cpython-313.pyc | Bin 0 -> 1571 bytes .../__pycache__/RecipesModel.cpython-313.pyc | Bin 0 -> 1810 bytes .../SKUPrefixModel.cpython-313.pyc | Bin 0 -> 925 bytes .../ShoppingListItemsModel.cpython-313.pyc | Bin 0 -> 1564 bytes .../ShoppingListsModel.cpython-313.pyc | Bin 0 -> 1437 bytes .../TransactionsModel.cpython-313.pyc | Bin 0 -> 1647 bytes .../__pycache__/VendorsModel.cpython-313.pyc | Bin 0 -> 1382 bytes .../__pycache__/ZonesModel.cpython-313.pyc | Bin 0 -> 902 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 177 bytes .../database_postgres/sql/CREATE/barcodes.sql | 7 + .../database_postgres/sql/CREATE/brands.sql | 4 + .../sql/CREATE/conversions.sql | 7 + .../sql/CREATE/cost_layers.sql | 9 + .../sql/CREATE/food_info.sql | 10 + .../sql/CREATE/item_info.sql | 14 ++ .../sql/CREATE/item_locations.sql | 16 ++ .../database_postgres/sql/CREATE/items.sql | 36 +++ .../sql/CREATE/locations.sql | 10 + .../sql/CREATE/logistics_info.sql | 22 ++ .../sql/CREATE/plan_events.sql | 14 ++ .../database_postgres/sql/CREATE/plans.sql | 6 + .../sql/CREATE/receipt_items.sql | 16 ++ .../database_postgres/sql/CREATE/receipts.sql | 13 + .../sql/CREATE/recipe_items.sql | 19 ++ .../database_postgres/sql/CREATE/recipes.sql | 11 + .../sql/CREATE/shopping_list_items.sql | 12 + .../sql/CREATE/shopping_lists.sql | 11 + .../sql/CREATE/sku_prefix.sql | 7 + .../sql/CREATE/transactions.sql | 16 ++ .../database_postgres/sql/CREATE/vendors.sql | 8 + .../database_postgres/sql/CREATE/zones.sql | 6 + .../database_postgres/sql/DROP/barcodes.sql | 1 + .../database_postgres/sql/DROP/brands.sql | 1 + .../sql/DROP/conversions.sql | 1 + .../sql/DROP/cost_layers.sql | 1 + .../database_postgres/sql/DROP/food_info.sql | 1 + .../database_postgres/sql/DROP/item_info.sql | 1 + .../sql/DROP/item_locations.sql | 1 + .../database_postgres/sql/DROP/items.sql | 1 + .../database_postgres/sql/DROP/locations.sql | 1 + .../sql/DROP/logistics_info.sql | 1 + .../sql/DROP/plan_events.sql | 1 + .../database_postgres/sql/DROP/plans.sql | 1 + .../sql/DROP/receipt_items.sql | 1 + .../database_postgres/sql/DROP/receipts.sql | 1 + .../sql/DROP/recipe_items.sql | 1 + .../database_postgres/sql/DROP/recipes.sql | 1 + .../sql/DROP/shopping_list_items.sql | 1 + .../sql/DROP/shopping_lists.sql | 1 + .../database_postgres/sql/DROP/sku_prefix.sql | 1 + .../sql/DROP/transactions.sql | 1 + .../database_postgres/sql/DROP/vendors.sql | 1 + .../database_postgres/sql/DROP/zones.sql | 1 + .../database_postgres/sql/INSERT/barcodes.sql | 4 + .../database_postgres/sql/INSERT/brands.sql | 4 + .../sql/INSERT/conversions.sql | 4 + .../sql/INSERT/cost_layers.sql | 4 + .../sql/INSERT/food_info.sql | 4 + .../sql/INSERT/item_info.sql | 4 + .../sql/INSERT/item_locations.sql | 4 + .../database_postgres/sql/INSERT/items.sql | 7 + .../sql/INSERT/locations.sql | 4 + .../sql/INSERT/logistics_info.sql | 4 + .../sql/INSERT/plan_events.sql | 6 + .../database_postgres/sql/INSERT/plans.sql | 4 + .../sql/INSERT/receipt_items.sql | 5 + .../database_postgres/sql/INSERT/receipts.sql | 4 + .../sql/INSERT/recipe_items.sql | 4 + .../database_postgres/sql/INSERT/recipes.sql | 4 + .../sql/INSERT/shopping_list_items.sql | 6 + .../sql/INSERT/shopping_lists.sql | 4 + .../sql/INSERT/sku_prefix.sql | 4 + .../sql/INSERT/transactions.sql | 6 + .../database_postgres/sql/INSERT/vendors.sql | 4 + .../database_postgres/sql/INSERT/zones.sql | 4 + .../recipe_processes.cpython-313.pyc | Bin 10234 -> 10199 bytes application/recipes/recipe_processes.py | 1 - .../sql/insertLocationsTuple.sql | 2 +- logs/database.log | 47 +++- 125 files changed, 1145 insertions(+), 5 deletions(-) create mode 100644 application/administration/sql/logins.sql create mode 100644 application/administration/sql/roles.sql create mode 100644 application/administration/sql/sites.sql create mode 100644 application/administration/sql/units.sql create mode 100644 application/database_postgres/BarcodesModel.py create mode 100644 application/database_postgres/BaseModel.py create mode 100644 application/database_postgres/BrandsModel.py create mode 100644 application/database_postgres/ConversionsModel.py create mode 100644 application/database_postgres/CostLayersModel.py create mode 100644 application/database_postgres/FoodInfoModel.py create mode 100644 application/database_postgres/ItemInfoModel.py create mode 100644 application/database_postgres/ItemLocationsModel.py create mode 100644 application/database_postgres/ItemsModel.py create mode 100644 application/database_postgres/LocationsModel.py create mode 100644 application/database_postgres/LogisticsInfoModel.py create mode 100644 application/database_postgres/PlanEventsModel.py create mode 100644 application/database_postgres/PlansModel.py create mode 100644 application/database_postgres/ReceiptItemsModel.py create mode 100644 application/database_postgres/ReceiptsModel.py create mode 100644 application/database_postgres/RecipeItemsModel.py create mode 100644 application/database_postgres/RecipesModel.py create mode 100644 application/database_postgres/SKUPrefixModel.py create mode 100644 application/database_postgres/ShoppingListItemsModel.py create mode 100644 application/database_postgres/ShoppingListsModel.py create mode 100644 application/database_postgres/TransactionsModel.py create mode 100644 application/database_postgres/VendorsModel.py create mode 100644 application/database_postgres/ZonesModel.py create mode 100644 application/database_postgres/__init__.py create mode 100644 application/database_postgres/__pycache__/BarcodeModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/BarcodesModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/BaseModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/BrandsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ConversionsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/CostLayersModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/FoodInfoModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ItemInfoModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ItemLocationsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ItemsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/LocationsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/LogisticsInfoModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/PlanEventsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/PlansModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ReceiptItemsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ReceiptsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/RecipeItemsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/RecipesModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/SKUPrefixModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ShoppingListItemsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ShoppingListsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/TransactionsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/VendorsModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/ZonesModel.cpython-313.pyc create mode 100644 application/database_postgres/__pycache__/__init__.cpython-313.pyc create mode 100644 application/database_postgres/sql/CREATE/barcodes.sql create mode 100644 application/database_postgres/sql/CREATE/brands.sql create mode 100644 application/database_postgres/sql/CREATE/conversions.sql create mode 100644 application/database_postgres/sql/CREATE/cost_layers.sql create mode 100644 application/database_postgres/sql/CREATE/food_info.sql create mode 100644 application/database_postgres/sql/CREATE/item_info.sql create mode 100644 application/database_postgres/sql/CREATE/item_locations.sql create mode 100644 application/database_postgres/sql/CREATE/items.sql create mode 100644 application/database_postgres/sql/CREATE/locations.sql create mode 100644 application/database_postgres/sql/CREATE/logistics_info.sql create mode 100644 application/database_postgres/sql/CREATE/plan_events.sql create mode 100644 application/database_postgres/sql/CREATE/plans.sql create mode 100644 application/database_postgres/sql/CREATE/receipt_items.sql create mode 100644 application/database_postgres/sql/CREATE/receipts.sql create mode 100644 application/database_postgres/sql/CREATE/recipe_items.sql create mode 100644 application/database_postgres/sql/CREATE/recipes.sql create mode 100644 application/database_postgres/sql/CREATE/shopping_list_items.sql create mode 100644 application/database_postgres/sql/CREATE/shopping_lists.sql create mode 100644 application/database_postgres/sql/CREATE/sku_prefix.sql create mode 100644 application/database_postgres/sql/CREATE/transactions.sql create mode 100644 application/database_postgres/sql/CREATE/vendors.sql create mode 100644 application/database_postgres/sql/CREATE/zones.sql create mode 100644 application/database_postgres/sql/DROP/barcodes.sql create mode 100644 application/database_postgres/sql/DROP/brands.sql create mode 100644 application/database_postgres/sql/DROP/conversions.sql create mode 100644 application/database_postgres/sql/DROP/cost_layers.sql create mode 100644 application/database_postgres/sql/DROP/food_info.sql create mode 100644 application/database_postgres/sql/DROP/item_info.sql create mode 100644 application/database_postgres/sql/DROP/item_locations.sql create mode 100644 application/database_postgres/sql/DROP/items.sql create mode 100644 application/database_postgres/sql/DROP/locations.sql create mode 100644 application/database_postgres/sql/DROP/logistics_info.sql create mode 100644 application/database_postgres/sql/DROP/plan_events.sql create mode 100644 application/database_postgres/sql/DROP/plans.sql create mode 100644 application/database_postgres/sql/DROP/receipt_items.sql create mode 100644 application/database_postgres/sql/DROP/receipts.sql create mode 100644 application/database_postgres/sql/DROP/recipe_items.sql create mode 100644 application/database_postgres/sql/DROP/recipes.sql create mode 100644 application/database_postgres/sql/DROP/shopping_list_items.sql create mode 100644 application/database_postgres/sql/DROP/shopping_lists.sql create mode 100644 application/database_postgres/sql/DROP/sku_prefix.sql create mode 100644 application/database_postgres/sql/DROP/transactions.sql create mode 100644 application/database_postgres/sql/DROP/vendors.sql create mode 100644 application/database_postgres/sql/DROP/zones.sql create mode 100644 application/database_postgres/sql/INSERT/barcodes.sql create mode 100644 application/database_postgres/sql/INSERT/brands.sql create mode 100644 application/database_postgres/sql/INSERT/conversions.sql create mode 100644 application/database_postgres/sql/INSERT/cost_layers.sql create mode 100644 application/database_postgres/sql/INSERT/food_info.sql create mode 100644 application/database_postgres/sql/INSERT/item_info.sql create mode 100644 application/database_postgres/sql/INSERT/item_locations.sql create mode 100644 application/database_postgres/sql/INSERT/items.sql create mode 100644 application/database_postgres/sql/INSERT/locations.sql create mode 100644 application/database_postgres/sql/INSERT/logistics_info.sql create mode 100644 application/database_postgres/sql/INSERT/plan_events.sql create mode 100644 application/database_postgres/sql/INSERT/plans.sql create mode 100644 application/database_postgres/sql/INSERT/receipt_items.sql create mode 100644 application/database_postgres/sql/INSERT/receipts.sql create mode 100644 application/database_postgres/sql/INSERT/recipe_items.sql create mode 100644 application/database_postgres/sql/INSERT/recipes.sql create mode 100644 application/database_postgres/sql/INSERT/shopping_list_items.sql create mode 100644 application/database_postgres/sql/INSERT/shopping_lists.sql create mode 100644 application/database_postgres/sql/INSERT/sku_prefix.sql create mode 100644 application/database_postgres/sql/INSERT/transactions.sql create mode 100644 application/database_postgres/sql/INSERT/vendors.sql create mode 100644 application/database_postgres/sql/INSERT/zones.sql diff --git a/application/__pycache__/database_payloads.cpython-313.pyc b/application/__pycache__/database_payloads.cpython-313.pyc index 278919b291d7d068c3e53c641cfe8f418b2b420b..6d92e3df1bae93eca22fdafb3b87baebd4fa6655 100644 GIT binary patch delta 170 zcmccrkn!O|M&8f7yj%=GaQfxS4C{@&K3R;?lcTbFCjZXr5M?dMNz5z0#SNn3Q_E8G zN{TflCr`|_6urfrUX)*25T99+np=E}4a_N?d@5U>EtHXgp(t$f`)u*a+&P{SaQ&lbf?GCtu8#mk(oPU?>U&5#b;r0z^cDh$s*dJ((-VM?zMX zt%KzXhvX+4NogRfm%m69XmL^OrV$B_6C0b=F+amw0WBaauI@Jge}?5wlL zdUmg83~_Wqd4fbi!WOZTdjSLz7r))z3rM^G;SV@tq^$bPVZ;Ngww1nqOB}Rrg^-gF>Lq{&xG;2NEHF$3fV{8guw?5;WIzl69 zp7JV=`B@=rM$+mSl+fPR=KjS@l1Z*bnW?a-Y&6*DNwx$!)Z#(ly!J(m6APG zw7g>3G3ok@X?bP3ZUvtSXnj9(Fy10LLOGq#h|W=7k5C~e`UrVID2zvfCF8aAG^#6z zTbFXND}o;DB5w(Aaa7i2s;r1woF!g2sRh7%aL;3~jKyvSBKHJ{+Q!M@(icDsk{p20 zBSSFbbG*+*K_=8Wu|69`PM5j}l@Jh(0T_8j0WfXH!Hj;>TrZW){PQ@1l4_usT=eW! zV{NUNXYrzA*te})rn6$RM0w3S8Yy|(wP>*dzO*=4A2!?t{trihY?0;qT$U`>ToNWjtQ<^D!8bnvZd*(Ido;NVmcmOzvxlZ`c7`uEIKD8 zW~EXpS|%QN4&w%c!Kjp7Z-v@!?t}{}>#U^`xWWHs5F>2pgi_51q{1mh7=ko?e{xp1VI+ zg)VbH1KqPk&rYJpXL@%My*ROOf8ih=ZBq_Nv_YZ0ux=Z&UBLiw%vIYkm|_^K<@{O+ z`GjG-y=InbGfjq3C{oue6&>3t!!+-Dl!4TAoU-R1z6(;Z03q(tZm>=JfUtJMaB@F*9ev7 zGVe$)ldLd|y3q1h2w4tTpl1co012y-6I-q)+gYIl^_CkW+1M2K8s`YQm=#Kh#BaLj zM6<%89FC9r(0YV8a#mhMx14Hk(y%_N1T-2>O~Wv>;V4-p+?n|@1T$YBrC^^;;YzTA z@p`IdmGC=`xR5+%2~Zzd%7YKG3V1b&ziopwMqZ&S<9QN2XR6he|?j&wx z^y$SV^+slCLA|qW)GWIHm+fy|pUY0`>hNF)P;*Dr!Qnc{+VBWyAUF;-kQ@W-YU<+j zQg$(OBlCuO;cH77t&v5ovQsFouvo=ihljz+mze|-$F@ACm}_3yDzB~CfOrYiO!DGk9M~s^Q zbLz1c6sgvtPbG0|GU=x%FPO+SYkb-cR;CUV1!pK*+f{ z9%$1%e~&*9I^>B@T2p%i!|z@E#l>G<+GyHK^*u`s{V6rHle+rk5|9m{I`GPd@UW@c zqi)Fi&Fzo6H@hG9{`_1u+4?BH8Gk(a=cHCmbv=4#^PQi3e?tIsKYe4b_wxIbzh3xY z;de{Bz3I)FPue?wHB{~G-f2?NcT%N>4Qj`7vdxoqu|@V=Br2F)0G?CxRA%fQr)rFhI{CIgexz2vgue0rwGJ zLlldqU+C#8I3<*da0yMKP(#v>q<*PTd{FxYqs)B`$PY-hx%+N|2f<%PCS9*fbRYL3+#M8Fp1V6<}N`85gR^_Z8rdg?*)vz%6jmo8annU8m$Lh z_$V5!Kc6YyN`5^1xj;v8=mS5w85a9`a4}z_X;9(d@1mo?^BngvY5FS}{tM~+2g&b{ W{Kur>Q(>H&*!b#a@Zg*9;r|zzndJch literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/BarcodesModel.cpython-313.pyc b/application/database_postgres/__pycache__/BarcodesModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da0f144e9f2ff0049e7935b9f479034835d5db4c GIT binary patch literal 1019 zcmZWo%}d-s6rXH9_d~^xRoQL93L>G@n>`fiK`68F7Z?P4G=zxOfod-Hpld~U8m@cH)r>g0vGKV}8; z=Ljx|M?CF-^fb^m6s{fAdOGMm1B?x_PBw|BcZg^B#;#tj19M=y)~#|}P1gHNupnlf zyEWO|XFPnz#&OE}vaX!BX+MmEa$#w$%E|W-ToRvv<`JlQ8t7gP3{MBsw+dbZc}?HG z=iRLqg5z0GAK0!V=k^%{$iNGlTLUYkb5zBoU7;EJ>JTJ<{eXUp_=azKwQbB4NH36u zF=L9%Y1UH6v%wxXZe6x#TG^>YxOK1w)F@;<65)`JMp0ijqlAVZgA5;mFROXT}kFMOq{pRq*1_?Z9}occo+C9@Hh zWpNY~+xzM-IKp|;EahSVA@^tX$i~vHG=Ub9C|&qtG@r@M;>vkzvb=geKWTTaoz7&n zd+l^5D{EgDpo1j9yHEd9SMY%^u zA$87j-$x4B_ePcREi|9VWU+hJn=EzD4sOi(yP9dPUp&nTesY~y3%LrEJE+Bnt|gn( zOAzvcRBrz#&dvjIcBWUO>`vXtvXj~Fq_bC!{3UE+30`Ev*UPx# literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/BaseModel.cpython-313.pyc b/application/database_postgres/__pycache__/BaseModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9378289bc44c49fcbd4e2702732ea5253a7b6d83 GIT binary patch literal 13675 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 X_b9mCvj-TuWt#mhe2`1)FX4XyrrXc| literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/BrandsModel.cpython-313.pyc b/application/database_postgres/__pycache__/BrandsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9d87cbf70c0f633c7cf8a72b8ce0486acb5798e GIT binary patch literal 862 zcmZWn&x_MQ6rRbi{&HJeSzX0L6=VrwZ!03=LGaSWBIFtvrfICfG^uZuSFgY+h3#jEcn*`;Lz^Ue3(Jll!XjYgSu))U1Zf)&4s-0|_w7ZkZMSR94 zDBTo-0wGLWh($hIrNnOt@o^>7dZj1Cy9AU@lPu11T(*@4gISqnxt2P~GlkiGArwWC zkXl1BUFjIp&_%@p2Q$Iz=V6407%pX|Vf{pdj6Q@5nPj^exm>16RPGznl}z#Q#WGiV z4zUWiT`kw9Q9FYUN{~C%K={JWyZx^%xQ!eR2&j#T-+~?mHwpR#0|e7X4fIWRfle75 zg0gI%7}Zu=-62K-CD2u=A;M?&qks3)_}uMYSlk_)JT4ech0VNPL5ZrE>L$KtI#=&3 zR;8Xf+_F5nW_fh=`l`lAwrXOxG1Gie-QY{OkH2sniW>f7bIyOV2fx|)!g2ZF#Q)21 HDx3Nb@2=DC literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/ConversionsModel.cpython-313.pyc b/application/database_postgres/__pycache__/ConversionsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..119103d9f43761908d826aa91d99f7355fef034a GIT binary patch literal 944 zcmZWo&1=*^6rX%=yRF@|E!HjQT96XNJy{VI4~my979kf8fnl1>uEA`wzL^#F=1C8| z^wK|~|B#dcvEaqtgw(t5C24KlK;Hb`*ZkhRH&ZMxFEadEzmDHOGZ_0x%Ejl@pm>bn zhy^S#c3Iy5qf6M_HTxD=eH-j9+hAKPusSTTLwm=n^1vB6zI#TBZ|H@AP$Ei&l)kB( zFNKWXidmYAfnFfxO+JXzs7kD)TPwvA1V=1nU<3@zzyK>S!491(obCnZPMri^;6P*K z`krpR%Ck=~$Ry8X$#Q06kZwl*%-4A9>RItpxtR+u4OTNC?b`^G28PSy1{uS#xdu5k@Imrn5Kl6IR7{mY3*6z ze3*b#X_CcRj&3W-lt!z_vRny8Cq}C?#5OCv&bcIG#D!9j>`zsUUT9%K1^!IGd;K(w za17x@WC~^v6^Q6VI2K8E-6AHFG>OXXLmKKnj*m}rsYVdXaPH)jnfB__Llb$Z1M(({ zuk5tFcCd8PT0LlS*M%bOd^l2316 zX+dwU1-;ArTop#os4C)mVY>0W8te>n7oDJw`CZ{cXsaw>z~`6v3WTA!*D5! F`U{@r@4^58 literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/CostLayersModel.cpython-313.pyc b/application/database_postgres/__pycache__/CostLayersModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..baaeffd8266690a513c0b76902569431680d9e94 GIT binary patch literal 1137 zcmZ`(&ui2`6rTLf?zUaFwcWO0-4;v9ioF#@qzA>zR*RT}m%xx_(>0h)wlA~d-o%3z zdf7|=i2euu2cA5Xf?Y<0f(PkMNWJ?eNlSlVV88j^d-LXd^Y$g__;{J%^Yz=on=cX} zzl3rAXaz~vk?a$j*wO}RNgy=@mp5dPaaA^ymI`W11Fb=3$r7>Ed17mhwx;Cypm$_T zKNW^0@lxAmt{1vVvT4b@^2AO2m+l~p-8L@?<3-%|Lod(FQ7?@2A(DOK5Rhzw(h?}P z4637Lq6&(tj(#q>RwRL8YhZSC%iz_gal)Rv10Rx1L!onc(qZq@c5M@Ev=NNLMC}ysx zCBcxkjsGv>O2PnYLRJYP29ttKQ<{j49(5UmV5`r3%z!D3rT8QK^|MEghcn^y@G>yC z&%pKGI$bx2u6o>FFATg)(h(!Jg|kF^c<&D0%DLXT-hdlL_n?9@qJzl;gwNz;Zt-}o zc{tZRGMl5x`d)Q3F|}72)#s1Q`O!>$S05_qTefzM;p}m3>9Dr+-Lzlz@eB^+LN>^PDNL$fVRA@~vizUmAonUZnGvi2< z)1IKmTq*&Vy>3tJ-@so$6rl|R5+IOJZ;P^f=RN0Rn{*Cu-p6m|y?GxqC>HYsmif!Y zXU920{zhTEx=iJ|LY2Bo)e5;q)`%sQ zh$Y)f4erH7wU%fqm&lqT*F86N8==b>mz#kfdWU9?7d~*A|FL@-#;(V86h4YQKjeDI z(sz=UOKAg-kC!rH2JZoLPHaL2i%`)LASjVaww#5LgD|8QVbn&4sA|a&l47d7xEIIX ze$U)73rHt!QJEegS>>gMBuabcJtOd7Zi!Y8Z$}Dag#8E>S zTVcm!VSxuf0XZk1PHacyo(QU$RU6r-aO0$2!A@}F8k2k474wK)Bj6=#;Az|VG+5`R zEhvH3xURK?s=N-Jd1%V?2AJsrl0_shAz1=qYE(sjV&~H5ERMMBwNDZ@3l_M<{IJRJ z$rXNd_qN@DZnhK1Iz4?mrEcR3`@{{RX^opCVbI7DZR3m_!xT74%u=Wrv!{!mobttF zI4+JCG_W`>)Ou?gHENCObtFEKeF)?M`DbP8(b5xhr)%!?R&M`3EtOXv-v8nLBk4!u z!swN^`>(D%-2HyHzwySCjXT|qJO34wCF3bkipBu$A{XS)T;Q7HMDB_2I6Ut-C$ZNK zk)Ly%FWYW7vdlY9GoUODgUF9!$D!B>TnYo0W;x~naHA+rvve>3V8mR)x4y_WmyY8& z%nAg53H%)?Eg|ft<1jqgaNHC+{J5R^ctsg(bQ#Gjh*C%Cp+%5zde}aYZ^>WFtB=>a z%iCv#&L=%>`_~z)$G$shy>sR_?EF{;ZY0yW7(?pG&H43_WeZ zm6_v1Q>U+?u!5w5WEBX{L!lu-m=}uUMDg>b*)g2`nV>1gnGqZhRsr%2=`SolsQ)P& z&qPBuI&TgLY=az8<_D-4#*zIFIxkE05xqIbeu*niB-!53=EYSY}LxhI8 literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/ItemInfoModel.cpython-313.pyc b/application/database_postgres/__pycache__/ItemInfoModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caa025cd78ae21ec16dc2061e721a42dae56120e GIT binary patch literal 1685 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 literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/LocationsModel.cpython-313.pyc b/application/database_postgres/__pycache__/LocationsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..894d7f02ea58020a1b9b5130e4b645cfb4ac16c5 GIT binary patch literal 924 zcmZWo&ui2`6n^==KiaLUt=1~o3R;5LQ!66kLGZHGA_N2>Fidyj8q6l^o9tmddD4R* zz4VXhe^f?jYom zxO@9^@5JexnU=G1@Sp%13Jct&f`uxW&Clzd%Eo)IXZ~=I8(b literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/LogisticsInfoModel.cpython-313.pyc b/application/database_postgres/__pycache__/LogisticsInfoModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12c07075a7273c0813c348df5e36595043fb1014 GIT binary patch literal 1033 zcmZuw&x_MQ6rTJ}_ow?)TesL1WC>z#DUsJ7^z{dgke?V#AFCw! zT}4iaPkilwv^3Bf$n^ugWq{E#!EBIg2mQAiS+1Da$Z6LFTxrD^6}mPT@e^+iTw z&im27C988uTy;tgJy*JvrmP!LDi)`DaTYunGg^k^+lv=u&(sy>PO_O$M*x=M9^cYfWaLBEPNAmS)5+X zuwE~Ti`@lyJdV^spuLQX4n#cok5#>abV|EmQB6Y2_zeZ0$l2QF=cQ4tK6LA&?ds62 zj_Qq}+Za`MzPUSaU9EvS0;)XpDzJgUCc+lNwgS1JBq(pt62KDxCc>nxh75a)zuH0O zOaYG*Zz%XkMr*t8TW8kFxo%nYFSm1|Ub#W+)f^K=Gxi;Nwp^TDiHJ|;$-Oy8nwK1D z&MrzJ496BCE((+GgW@Ycgk7~nU2DRxD)?<^n)ZY2{vxe&v!d0%R{s$7nuz)fFf0zk literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/PlanEventsModel.cpython-313.pyc b/application/database_postgres/__pycache__/PlanEventsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8eaf5a1f327d628252846385bc2ccb7d28389783 GIT binary patch literal 1214 zcmaJ>OKaOe5MD`^EI$%Av`J()O`Sj+glTSpQc9qOTpSugb?8N~Y@}@>s>tf@y5L(+ z?IBQd3G^@I=L8>OwiE(Al+a7S>Aka(V)B3rJp0Ye&U`b&tjAMRRRrI~pX0qpIzqpc za`l-77_S33LLTz8P1Mzx)>c^G)R_*av1xQmtkgA`*+vdpMqa6fJkvMVj69xMySi(g zE5+4hB_x6bG2wj6)n)B9;dGk};vNZQMJaE3A&rAPGM84NjGqHILOx=ehk#mRhNrWV zZ)T(hkd}Pwigc|AVr9={_O9iYWn()g$;Ky|2%eFgtHiRFf)&%ue1o>A9*w`>p?!jU zp!M_>@MOrCpi+jcxAlVm+5r*ff4x@bEyKO?B%eJ&l?kdU8e0Frq}rS*%JGQGkgMEZXS{3b)uCv_Dqkm+v-S z_yMeypOQqd!85@~@WJ0FQF7Bl(lm~OjK)`6x&!No(;gSQjB@|>nA3qQ7o%o1pi$%I zuRwf7XZPn0rbo?%p}jDAxHz;IN3G@4R_CPE8QPtZ(>`_F6UQCe?&!h%L1Q%Q3~gsL z*BshSFnnvUHe_MTN~k7adTd@PjuK5JS|DTd&n5gcO!S&gwWZ&Yr>*4SrnpcwuOo_7g4rK#kw1ds&*&oWtlZf+MT#ACFl% A-2eap literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/PlansModel.cpython-313.pyc b/application/database_postgres/__pycache__/PlansModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c031a55b08f653489ef6edfc282a33178bba3efd GIT binary patch literal 935 zcmZWo&1=;_5TAU$*H`;#rLQf;Do6=pPgX=kLGbd5rI>4A+2+O9V4B3)?cv=#=}mg+ zAJM<3m$D!hJQXiu>fM+~5VC7vgOtQEMY^2{R)pG(z5CK{tpdDK1gf_a7ca77(8u?^%84*vX=9&M`v(dJ8-eJCJ z<`ZhKK%L9|#LU+EFi|n4rA~|7^kPh;PKIK4d<@$`*K~#8twNZd5c|dOAY*(-h))MH zYdteUd`MC0EX|X=Ah)A58nVhfFSO*uimhp`%{?I$n_?lg#&q{UC*;FfDzBm+%=@=5 zqL@Yyl`_{jexgyvAESMl<~J>}EVDGOlSe$zT^gMz3#CVxsOZ`Wlw;FrPXQ;1flor+ zCGi!``YR{hmDAcVQXyGb{!cinkw zq}*}>qg=uv5<*B^n*-u+seCbyO0Cob%B_-%=#iP-jcJG_&(6%7k2k;h?T#yz62ss1 zCr5XGlNozL#>r31mGLc94w=bJX^pidklHfH4YK7m1r&TLYie5qtzCdZgDtQoGu1_A zYF1%Y$!b7xTW%GO$!N*K@SMbPLx*#rZ3TYlt)sJi%i;d#&Tbexo-oMxH1_<^%?f0) zkQ?K-Q8{E51Ic6{n-bna2G!Ei-U{|s|LeV)CqdEFK;JI3ieh@hcm1H3e3JNGp0+ur z(xL*H-wx>DRBQF5^)IM={lDgynT5?w`3jy{1=N&OBcD3aw24+A%`8IE(lJ6$Edz|S zMk$RdHJMd5%kM}qWtA~zDvhZ?C5@?))nPXzv$n`~bf}u=pw?mUOK|QIYfX##nemo$ zV2=&V6l${D^F?VgtS5?_4!8)nFlchS-w!;YMo!n?#(4Za{Xi)9l3k(tj(b-q{kYqb zM9uTJoPL%7-CA!KUcwgQwX;Y0LYL3ZFozlZ z8j9z8?BV>adn*8*ghAv-F&-;C0fAm8ieg+ij>pLxAQ&@P z7~gVys}rD`0WB1nf{>^9LYX85xmhW?J`jIXK?LUw6yLGYbYrjmSgSshtJ>1RwK2oTSYd_Q zm>gL$<+XHCo_tJwp0y){;bj!!$_s>BK0~d_Y}z+Sr@0VY4># z)ujFoBW~)9pqT$_j>aq}@i@*+A;(bGrN!ND+S-@I3T(s7= z-5_x4kRUI)W0|k-94T~^x$F4#2B2RwE!Le4yX6IZ!>$Dl*r76ej;N7lyvPxCN7Q9^ z;&Zlk%$+c6Q6HV0Fc#Of$~^KFu1#hrtA;9d$~thj9jW?_uYmBU7YWDP5R}A>tlqk2 z)v&>=rtJr?^F{!6?F(z$cKyK;InjN?e-=el%$HwH%h6pwhJ8KZ>=8nws@RAdD zoXc~A3Q;NM2b4}>KH?0LUG}&<`=GqoDK9=KFL%nz-SXA;&0llVJ-lQC;1L`lcw5Na zQ1;mgd><#O>{A@!7#?4_6E`tiiwB4tMyt%KY)y})lYJ>FR#h<-YP+g}&6QY%)5sf| z)I_W4fE;c1CzjXU8ewE(v6EY(;Y+RF+HQ)zx(X$syv$#W< zv@ZTXW-kXCM{O~O!DB zho>gnt1yiQ2964Cr=-rgZ*MzTsx0T*je5%?KF9f&E!&H3ikxq_AOg?z9lwFsst7>h zsqOm>92b1H;2eh0BM{V~Z=i|-)mEx5cGwtkNkS=v1g7XZeD4^dKwfIx4gzr3TY-b_ zsFOmBYL4e|jv2p>7Gd+g6M`kvQ8z&jFKD>MCrF-s!=Aiy`rG2+tF!IG_i9(4eK@!9 zORFr%AIBX7fUtQh&SO7&l-URcI^(RqroVQIy}<#Yb%D5i9=5Do>N6 ON@?$de;96IqW=L9I>?g% literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/RecipeItemsModel.cpython-313.pyc b/application/database_postgres/__pycache__/RecipeItemsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..540ace7ce67a9f10554a792c58ec990c16cdab0c GIT binary patch literal 1571 zcmZV;%WfN0^v=s3zw;m_#E6(QrMQKNRzv~>5vo8@9TA}nk&rrYH64$`q+@$}?s(y@ zvZ9tEp|Hq?4clhLw?y8UOC>6SgtDvTBD&<9nQ{8amFB$ed7m?PQYz&co{hgxet4iV z_7^eJW2D67CKAWYVwSSSnhGdQ71TQM>Xrr?Vr@%r8elXtkg2mpw!$oZiCKo7S=SOD zklj-onKNPV$Z-Ql2x+u^FKBI}uyE56-q+3`=s7K!Bj&4K%M0AZK>{-=Gx-RK zV`ei@EC#BjU=}Lqwh_nHFt+|Y_IhdrS<3)(FVo1%nH|sdL+@7PbwnKHj6BOC#A5D~ z{H4J9H1JPIeE&-5%gn~mmU;#6>roffudbNogzth*@uc%T4MVql&mt8ciCqOR90D|A{SpRXD#jHSq=@Q-tYS@X+X#k z<)}Cw4MHy^yH3ZGTEExXL*4jD?Ort4mf2X-Z#5KIX?bm@A4I(ExKR%V(g^(SUEwNI z6T~!W`X>7bHk4y_8*y^JQFqyQxJ}bZbd}rFhO(XMOsC3-SFqR}^94aluBY*K6-$X* zqG0*zHdOJxVMs&tLl5L!m@E-*`EKO*x(?>6?~7hn8m)dO6p6Yfb>RhVnN782j`MgW zITut$y?!9S{qhsr#U->uryIfG{RkZQuHA9`?#mJ<3 z!wCoQ21bzAF5IMJTf11nYiJeRjecGt%Uo=FGXwbKdE-`T@~J&hPb|Aib$@-u6L6I9jjU z!)r}MAW`acyS*r`PLR~cUd*Fo{CDwRjet@Eny1vM<8gbF0vE8CWax4yion0qk38~F zN;~a(LBM%Kfw$0D&}=`4W%83v`v67cXobZs1kWC@$K~0>+_*A#m>h+;9j7H}5|8y-^n=l0MHhP0K0xJl% z8#%Z{%qoG)1l~a)^EgOs6Lkk@BY@t+#Eb?J+a|6kX`p?L0WGwsBlwYxXO|C}kB#zE zwPe(eu1y%CiN-RO2?-KovTK;KaQ-HGA_+$=g(U>?$_op&c45KR&fm%;LyDhdL)AUc qP@116liz?FctQOZhHQ?5G-LY3K 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 literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/TransactionsModel.cpython-313.pyc b/application/database_postgres/__pycache__/TransactionsModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..292dd72835def98fa63728480a8741e024023942 GIT binary patch literal 1647 zcmZux&u<$=6rTO%-F2LpBu$#wN@|6a)+$&LBoZK~5E4{!ghAc$0817;eDN*t=(kX%HMytliy5`rba`QE&F^Jc#H&5mbh z^8|jsoSl5}t4zqB=uCcE2F7&&$HXF*v`gv|lj<^)E9lF+3R99%Wh#uyu2#>nTwP~+ zg{+VbVyPu!X|}$jq0B% zET*o>Wr*%_Q|l5NQ3f3%}ZIX8-Hn&Ntb7J+% zEo&LS=h%E<#(u}+vD1mfe9+zZdF;11^}}|T`mWIT9M*yk2sLy%o_Og3H8k!=o-n@Z zIbrO_eKF&Dyv6(o=@fd8dki+HN}}j`ZKoH+v<*~uSzoA0biPP#zuPn0lSO+a-`@_${}$?7#FOG+4%fE~HPu0w8B6B_SD9uo^u zDn07@i7XsE?g57jX>P9*@pQQ&RPF_Bp=YawNogWvN;zJmQaKc#e(<)9#Mu$h!}_lQ zajh@yj^l@yXPhVs{FZ~H*~rTtNS;Pr9`7@c+gE!R^;ro@h*z(MvbNT)-eDOs_#H4W z4$0Ya`Mdqo<*niJ>w|k|>l;5F{BZF2+Rv*etHbp-2KOF)`0dA|#nPZLhUMghRExr( z6q`?}$Wz+sy1f8#fl_FFkVT4=wtdFqzz@B!3tpKygcLuFg~DS7 z?;hTH%&?)L3ZOjUH@)Bzkcl}h>clbg_j<91$+H>NEiVWttxD_$By();d#r-{=ot;H z03IrwH^993hCE#?|F*b!y0|$sHb>?4p|L)izjjm@&CMT~qte>YSQ{-|KPrxvR))q( z68e3q^mzMpX=|Vk+@Z1ckE)pEF#*FiU`w`z=4CLAs>wFdxryc#G$=8Vhjs#2ND)I_ zF#M*bX*EQcn{HJ>gx`+D=m0oQeN9I5HxBDhwYlf=oK}8xXG~xiD+hYC1sM1*4Cf~6}8%) z$gL-c#3h$V{0qJDuS6@9@IWFG2b3Gqws&T1=VMhL=FP{OncsZ)O*@?y!*6i@^67%k z*gqs(epby)pCEJ0eCBJLY^Z@Y)Isl&tZy1%;Aw1{Lkp~-4R(($v%AbUSD0@F_CuqJ z0gaLF*%u^ux@yK@5k_e!rLuMtk;Yr7Y(EL5_$oX|^DtIT628o1kw#U3irTd>eT>X8 z3m9lV1KrmUg$`z5mAMVfZC>YoSUW+(x4;?MUPHOxiY(4SmKiQ6s%kv1R5SU^%Y4t@ z$ajwgn9tYmqb0DBGl=s|Xq0-Z)H~P-+iwgsXa=qA#X8!J1O1%ZuU+~zOR2TO!1deE z8M$6ZE#5@CUbpC?iD6W`Ld~;qPpDP|A}mDAcMcR&bG0dqV-Qk);c3cDvZPR*@>-H- z9LFG(JARsHf@k}CI|3r@1~}XYM)R8vksPz{u1wok+%>aZPx@NJ*k$LxVJXEbzY+7a zEzeL6B`*?$ZDjcma0`uuP>OU{5{RDq`ty&22v;B&hgks!9~KZs&w{-$$!0a-c$_9t zSYSl~E!GaM4j<>T7-8MPOz*}As>4egr&e&T?#|fj-mcHwSwJ-MZ6q()Uw!Yi|KOzm z;I#kfr2lBre|-4a?{0UBMnqp0vE|JvhnEAv@GZ{w@_0WL$h(|>zaOSFDwO6q-%UUk zX_AR7M};8^AZ?gsc~Mp)NtXTK2W`I5mM zx|wlxT6}CrEx~=eL(9&hpvf(l7I8-QMBcug1jb{jv7ZZ{lQa$viPL>;YRy3v`+W=o_mFIPO?ZcdE|GVM^pL0)P6KPFl7aRE=t+Un z?LFei_ZlWRBod)NQudJi#LgC0UJTEzxmUVl4UX2P43DY7?D;7vDra)>9M!&hR)nn5 zl|7?&srxs!Wc`gTS-*O2Duk53LNkj{IUChDKZOtQ3hk++8T@Bxn)Wwa{gciA%Z9H^ OR~sA+UNbyOfd2y(SWW=| literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/ZonesModel.cpython-313.pyc b/application/database_postgres/__pycache__/ZonesModel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49db8eacf670ad08e10044bf7a6b14da5889a439 GIT binary patch literal 902 zcmZWo&5P4O6o2__+PYi2uGn4KQUzIp*xQPTco4jFv52`zV3=)V4W>zalOF2HlL}sX z**{|c8&9$f2n!yhHzDiYc}c1*JCNVJk9qI+-n>b^wbcN%zR9zjN1!xT=aF?_c4%2fpI+^h4$G473Z)EHn#i1;fsNhJMx5(jg`@ z=F>oeY>pKlhG`Zi@fi$VM>>p=k1^R`Y?_Q`5y{sWdq3k*Oe4m#48xOI7Lf0{^5yCS`Re&&f28i%PkEf-{6U6%^v<91 zFy6HAG>yVhk=&<=ov7KcG!fYZ1L3bVn$BgdY8IP{ff^QV1)t$!yZyC(e*54{bK!k= z4zQ!FxKBX!4Ba}?Iou(*L9nYpHWZn<1!^8?9%vF2VYf)4*fP}~NwpQwOhr$@Cpd3+ zJ`OId?Mq#^x{Lccs4X|ZZslYsgDGz4+G-}N_ZWzRPadxI-oMg&|KBSu3nSXHh|R*J m^Q4^TQ|ziE>YoBZ_5U_BP5S|Ne!<|W0DC#ee%-;(D literal 0 HcmV?d00001 diff --git a/application/database_postgres/__pycache__/__init__.cpython-313.pyc b/application/database_postgres/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb8b1a57a30b3540120817f71313c0fa2504149e GIT binary patch literal 177 zcmey&%ge<81gu+EW`O9&AOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkqXJSF4!h{FKy~ zg2cR%qDtM8qQvCvnB2t7JXDdyf`XjPoco~$Aqtt$%QF)&0hMtlxtv1CzT@SVZHz|Ek*5Xzzfl}uCs>Sqp; zocw`JYVrm-Rz_(s>zS~is2EH?J42!+14Etw7IhcoSeT+^H~WY92D+$$;RD;`i@ZjY|A}=@?iX*?)MgNr`ew$!A$Ws>r=Po%yN4IV;OgY+ z;d#I<{PU9|BZFWfSN608|q2`WNmW{ delta 494 zcmcca|I45EGcPX}0}%LsTaqz5smYT>E!kKLiZb&`CZ7_$BA5Zxo&?0ji-DeLVEDi` z`692;5ENKMWXZ`Rah5S036!N4JSgM+7^yOXF9wsvBrMciSy>M1u>r{={9LYFOh>u6+;~}!is-m;upVPz1hS8Du)6VX zE|K`gE>{Y)yhsW}lmUrbJZbs)De;+kY5DP)DMjU*I}|b)S&QO;Qj@fsVFfIs6M4g9wb%+BI-dz@?-(!0>+7(8= make_date((SELECT year FROM arguments), (SELECT month FROM arguments), 1) AND event_date_start < (make_date((SELECT year FROM arguments), (SELECT month FROM arguments), 1) + INTERVAL '1 month');') \ No newline at end of file + sql='WITH arguments AS ( SELECT %s AS year, %s AS month),sum_cte AS ( SELECT mi.item_uuid, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id ),cte_recipe_items AS ( SELECT items.id AS item_id, rp_item.rp_id, rp_item.type, rp_item.qty, rp_item.uom AS ingrediant_uom, item_info.uom AS item_uom, COALESCE(sum_cte.total_sum, 0) as quantity_on_hand FROM main_recipe_items rp_item LEFT JOIN sum_cte ON sum_cte.item_uuid = rp_item.item_uuid LEFT JOIN main_items items ON rp_item.item_uuid = items.item_uuid LEFT JOIN main_item_info item_info ON items.item_info_id = item_info.id ) SELECT events.*, COALESCE(row_to_json(recipes.*), '{}') as recipe, COALESCE(ritems.recipe_items, '{}') as recipe_itemsFROM main_plan_events eventsLEFT JOIN main_recipes recipes ON recipes.recipe_uuid = events.recipe_uuidLEFT JOIN LATERAL ( SELECT array_agg(row_to_json(ri.*)) AS recipe_items FROM cte_recipe_items ri WHERE ri.rp_id = recipes.id) ritems ON TRUEWHERE event_date_end >= make_date((SELECT year FROM arguments), (SELECT month FROM arguments), 1) AND event_date_start < (make_date((SELECT year FROM arguments), (SELECT month FROM arguments), 1) + INTERVAL '1 month');') +2025-08-23 09:44:32.979264 --- ERROR --- DatabaseError(message='can't adapt type 'dict'', + payload={'food_groups': [], 'ingrediants': [], 'nutrients': {}, 'expires': False, 'default_expiration': 0.0}, + sql='INSERT INTO test2_food_info(ingrediants, food_groups, nutrients, expires, default_expiration) VALUES (%(ingrediants)s, %(food_groups)s, %(nutrients)s, %(expires)s, %(default_expiration)s) RETURNING *;') +2025-08-23 09:47:55.518415 --- ERROR --- DatabaseError(message=''default_expiration'', + payload={'food_groups': '[]', 'ingrediants': '[]', 'nutrients': '{}', 'expires': False, 'default_exipration': 0.0}, + sql='INSERT INTO test2_food_info(ingrediants, food_groups, nutrients, expires, default_expiration) VALUES (%(ingrediants)s, %(food_groups)s, %(nutrients)s, %(expires)s, %(default_expiration)s) RETURNING *;') +2025-08-23 09:48:20.421772 --- ERROR --- DatabaseError(message='malformed array literal: "[]"LINE 3: VALUES ('[]', '[]', '{}', false, 0.0) ^DETAIL: "[" must introduce explicitly-specified array dimensions.', + payload={'food_groups': '[]', 'ingrediants': '[]', 'nutrients': '{}', 'expires': False, 'default_expiration': 0.0}, + sql='INSERT INTO test2_food_info(ingrediants, food_groups, nutrients, expires, default_expiration) VALUES (%(ingrediants)s, %(food_groups)s, %(nutrients)s, %(expires)s, %(default_expiration)s) RETURNING *;') +2025-08-23 09:56:18.404047 --- ERROR --- DatabaseError(message='malformed array literal: "[]"LINE 3: VALUES ('1234', '', 1.0, 1, 0.0, 0.0, 0.0, false, '[]') ^DETAIL: "[" must introduce explicitly-specified array dimensions.', + payload={'barcode': '1234', 'packaging': '', 'uom_quantity': 1.0, 'uom': 1, 'cost': 0.0, 'safety_stock': 0.0, 'lead_time_days': 0.0, 'ai_pick': False, 'prefixes': '[]'}, + sql='INSERT INTO test2_item_info(barcode, packaging, uom_quantity, uom, cost, safety_stock, lead_time_days, ai_pick, prefixes) VALUES (%(barcode)s, %(packaging)s, %(uom_quantity)s, %(uom)s, %(cost)s, %(safety_stock)s, %(lead_time_days)s, %(ai_pick)s, %(prefixes)s) RETURNING *;') +2025-08-23 10:00:20.053169 --- ERROR --- DatabaseError(message='relation "test2_locations" does not exist', + payload=CREATE TABLE IF NOT EXISTS test2_logistics_info( + id SERIAL PRIMARY KEY, + logistics_info_uuid UUID DEFAULT uuid_generate_v4(), + 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 test2_locations(id), + CONSTRAINT fk_primary_zone + FOREIGN KEY(primary_zone) + REFERENCES test2_zones(id), + CONSTRAINT fk_auto_issue_location + FOREIGN KEY(auto_issue_location) + REFERENCES test2_locations(id), + CONSTRAINT fk_auto_issue_zone + FOREIGN KEY(auto_issue_zone) + REFERENCES test2_zones(id) +);, + sql='logistics_info') +2025-08-23 11:30:10.936510 --- ERROR --- DatabaseError(message='function gen_random_uuid4() does not existLINE 2: plan_uuid UUID PRIMARY KEY DEFAULT gen_random_uuid4(), ^HINT: No function matches the given name and argument types. You might need to add explicit type casts.', + payload=CREATE TABLE IF NOT EXISTS test2_plans( + plan_uuid UUID PRIMARY KEY DEFAULT gen_random_uuid4(), + plan_shortname VARCHAR(32) NOT NULL, + plan_description TEXT, + created_by INTEGER NOT NULL +) +, + sql='plans') \ No newline at end of file