restore listcontent, itemlist
This commit is contained in:
parent
b363c5d752
commit
d09eb3be44
44
src/db.py
44
src/db.py
@ -401,18 +401,18 @@ def fetch_all():
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
def restore_db(data):
|
def restore_db(data):
|
||||||
tables_with_uuid = ["item", "itemlist"]
|
|
||||||
tables = ["item", "itemlist", "listcontent", "history"]
|
tables = ["item", "itemlist", "listcontent", "history"]
|
||||||
connection = connect_db()
|
connection = connect_db()
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
item_uuid = {}
|
item_uuid_dict = {}
|
||||||
|
list_uuid_dict = {}
|
||||||
for elem in data["item"]:
|
for elem in data["item"]:
|
||||||
# check if item already exists
|
# check if item already exists
|
||||||
query = f'SELECT * FROM item WHERE itemid={str(elem["itemid"])} and skuid={str(elem["skuid"])}'
|
query = f'SELECT * FROM item WHERE itemid={str(elem["itemid"])} and skuid={str(elem["skuid"])}'
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
result = cursor.rowcount
|
result = cursor.rowcount
|
||||||
# complete item uuid dict
|
# complete item uuid dict
|
||||||
item_uuid[elem["uuid"]] = (elem["itemid"], elem["skuid"])
|
item_uuid_dict[elem["uuid"]] = (elem["itemid"], elem["skuid"])
|
||||||
if result == 0:
|
if result == 0:
|
||||||
# if item doesn't already exist, insert it in database
|
# if item doesn't already exist, insert it in database
|
||||||
attributes = str(elem["attributes"]).split(',') if len(str(elem["attributes"]))>0 else "[]::text[]"
|
attributes = str(elem["attributes"]).split(',') if len(str(elem["attributes"]))>0 else "[]::text[]"
|
||||||
@ -425,16 +425,50 @@ def restore_db(data):
|
|||||||
result = cursor.rowcount
|
result = cursor.rowcount
|
||||||
if result == 0:
|
if result == 0:
|
||||||
# find related item
|
# find related item
|
||||||
(rel_itemid, rel_skuid) = item_uuid[elem["uuid"]]
|
(rel_itemid, rel_skuid) = item_uuid_dict[elem["uuid"]]
|
||||||
query = f'SELECT uuid FROM item WHERE itemid={rel_itemid} and skuid={rel_skuid}'
|
query = f'SELECT uuid FROM item WHERE itemid={rel_itemid} and skuid={rel_skuid}'
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
uuid = cursor.fetchall()[0][0]
|
uuid = cursor.fetchall()[0][0]
|
||||||
# insert history entry
|
# insert history entry
|
||||||
query = f'INSERT INTO history (uuid, price, currency, quantity, discount_percentage, h_timestamp) VALUES ({uuid}, \'{elem["price"]}\', \'{elem["currency"]}\', {elem["quantity"]}, {elem["discount_percentage"]}, \'{elem["h_timestamp"]}\')'
|
query = f'INSERT INTO history (uuid, price, currency, quantity, discount_percentage, h_timestamp) VALUES ({uuid}, \'{elem["price"]}\', \'{elem["currency"]}\', {elem["quantity"]}, {elem["discount_percentage"]}, \'{elem["h_timestamp"]}\')'
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
|
for elem in data["itemlist"]:
|
||||||
|
# check if itemlist already exists
|
||||||
|
query = f'SELECT * FROM itemlist WHERE name=\'{elem["name"]}\''
|
||||||
|
cursor.execute(query)
|
||||||
|
result = cursor.rowcount
|
||||||
|
# complete list uuid dict
|
||||||
|
list_uuid_dict[elem["uuid"]] = elem["name"]
|
||||||
|
if result == 0:
|
||||||
|
# if itemlist doesn't already exist, insert it in database
|
||||||
|
description = f'\'{elem["description"]}\'' if len(elem["description"])>0 else "NULL"
|
||||||
|
query = f'INSERT INTO itemlist (uuid, name, description) VALUES (nextval(\'uuid_list_sequence\'), \'{elem["name"]}\', {description})'
|
||||||
|
cursor.execute(query)
|
||||||
cursor.close()
|
cursor.close()
|
||||||
connection.commit()
|
connection.commit()
|
||||||
|
for elem in data["listcontent"]:
|
||||||
|
cursor = connection.cursor()
|
||||||
|
try:
|
||||||
|
# find related item
|
||||||
|
(rel_itemid, rel_skuid) = item_uuid_dict[elem["item_uuid"]]
|
||||||
|
query = f'SELECT uuid FROM item WHERE itemid={rel_itemid} and skuid={rel_skuid}'
|
||||||
|
cursor.execute(query)
|
||||||
|
item_uuid = cursor.fetchall()[0][0]
|
||||||
|
# find related itemlist
|
||||||
|
rel_name = list_uuid_dict[elem["list_uuid"]]
|
||||||
|
query = f'SELECT uuid FROM itemlist WHERE name=\'{rel_name}\''
|
||||||
|
cursor.execute(query)
|
||||||
|
list_uuid = cursor.fetchall()[0][0]
|
||||||
|
# try inserting item in itemlist
|
||||||
|
query = f'INSERT INTO listcontent (item_uuid, list_uuid) VALUES ({item_uuid}, {list_uuid})'
|
||||||
|
cursor.execute(query)
|
||||||
|
cursor.close()
|
||||||
|
connection.commit()
|
||||||
|
except psycopg2.errors.UniqueViolation:
|
||||||
|
# item already in itemlist
|
||||||
|
cursor.close()
|
||||||
|
connection.rollback()
|
||||||
|
connection.commit()
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
def export_csv():
|
def export_csv():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user