Migrated addConversion to new api schema

This commit is contained in:
Jadowyne Ulve 2025-05-31 21:08:42 -05:00
parent 009e3b6b1d
commit 7c6846dd99
3 changed files with 91 additions and 9 deletions

View File

@ -411,6 +411,19 @@ class SKUPrefixPayload:
self.description self.description
) )
@dataclass
class ConversionPayload:
item_id: int
uom_id: int
conv_factor: float
def payload(self):
return (
self.item_id,
self.uom_id,
self.conv_factor
)
@dataclass @dataclass
class SiteManager: class SiteManager:
site_name: str site_name: str

View File

@ -823,7 +823,7 @@ def insertItemTuple(site, payload, convert=True, conn=None):
except Exception as error: except Exception as error:
raise postsqldb.DatabaseError(error, payload, sql) raise postsqldb.DatabaseError(error, payload, sql)
def insertSKUPrefixtuple(site, payload, convert=True, conn=None): def insertSKUPrefixtuple(site:str, payload:tuple, convert=True, conn=None):
"""insert payload into zones table of site """insert payload into zones table of site
Args: Args:
@ -864,7 +864,49 @@ def insertSKUPrefixtuple(site, payload, convert=True, conn=None):
return prefix return prefix
except Exception as error: except Exception as error:
raise postsqldb.DatabaseError(error, payload, sql) raise postsqldb.DatabaseError(error, payload, sql)
def insertConversionTuple(site: str, payload: list, convert=True, conn=None):
"""insert into recipes table for site
Args:
conn (_T_connector@connect): Postgresql Connector
site (stre):
payload (tuple): (item_id, uom_id, conversion_factor)
convert (bool, optional): Determines if to return tuple as a dictionary. Defaults to False.
Raises:
DatabaseError:
Returns:
tuple or dict: inserted tuple
"""
record = ()
self_conn = False
with open(f"sql/INSERT/insertConversionsTuple.sql", "r+") as file:
sql = file.read().replace("%%site_name%%", site)
try:
if not conn:
database_config = config.config()
conn = psycopg2.connect(**database_config)
conn.autocommit = True
self_conn = True
with conn.cursor() as cur:
cur.execute(sql, payload)
rows = cur.fetchone()
if rows and convert:
record = postsqldb.tupleDictionaryFactory(cur.description, rows)
elif rows and not convert:
record = rows
if self_conn:
conn.commit()
conn.close()
return record
except Exception as error:
raise postsqldb.DatabaseError(error, payload, sql)
def postDeleteCostLayer(site_name, payload, convert=True, conn=None): def postDeleteCostLayer(site_name, payload, convert=True, conn=None):
""" """

View File

@ -687,20 +687,47 @@ def addSKUPrefix():
@items_api.route('/addConversion', methods=['POST']) @items_api.route('/addConversion', methods=['POST'])
def addConversion(): def addConversion():
""" POST new conversion to the system given a item_id, uom_id, conv_factor
---
parameters:
- in: header
name: item_id
schema:
type: integer
default: 1
required: true
description: item_id the conversion applies to
- in: header
name: uom_id
schema:
type: integer
default: 1
required: true
description: uom_id to match item_id uom to convert to
- in: header
name: conv_factor
schema:
type: float
default: 1
required: true
description: item_id.uom -> uom_id amount
responses:
200:
description: Prefix added successfully.
"""
if request.method == "POST": if request.method == "POST":
item_id = request.get_json()['parent_id'] item_id = request.get_json()['parent_id']
uom_id = request.get_json()['uom_id'] uom_id = request.get_json()['uom_id']
conv_factor = request.get_json()['conv_factor'] conv_factor = request.get_json()['conv_factor']
database_config = config()
site_name = session['selected_site'] site_name = session['selected_site']
with psycopg2.connect(**database_config) as conn:
conversion = db.ConversionsTable.Payload( conversion = dbPayloads.ConversionPayload(
item_id, uom_id, conv_factor item_id, uom_id, conv_factor
) )
db.ConversionsTable.insert_tuple(conn, site_name, conversion.payload())
database_items.insertConversionTuple(site_name, conversion.payload())
return jsonify(error=False, message="Conversion was added successfully") return jsonify(error=False, message="Conversion was added successfully")
return jsonify(error=True, message="Unable to save this conversion, ERROR!") return jsonify(error=True, message="Unable to save this conversion, ERROR!")
@items_api.route('/deleteConversion', methods=['POST']) @items_api.route('/deleteConversion', methods=['POST'])