From f6c3d98cf15eea08a2f99af3be06f55e2dd0957e Mon Sep 17 00:00:00 2001 From: Felix Mucha <3016498@stud.hs-mannheim.de> Date: Tue, 3 Dec 2024 22:43:31 +0100 Subject: [PATCH] changed based on CartItem entity --- src/framework_driver/db/db_cart.py | 23 +++++++++++------------ src/framework_driver/db/db_setup.py | 8 ++++++++ src/framework_driver/db/shop.db | Bin 16384 -> 16384 bytes 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/framework_driver/db/db_cart.py b/src/framework_driver/db/db_cart.py index 7018a3c..0950bc1 100644 --- a/src/framework_driver/db/db_cart.py +++ b/src/framework_driver/db/db_cart.py @@ -1,18 +1,18 @@ import sqlite3 from typing import Optional, List -from interface_adapters.cart_database_interface import CartDatabaseInterface +from interface_adapters.repositories.cart_database_interface import CartDatabaseInterface class CartDatabase(CartDatabaseInterface): - def __init__(self, db_file): + def __init__(self, db_file="framework_driver/db/shop.db"): """Initialize the CartDatabase with a connection to the SQLite database.""" self.conn = sqlite3.connect(db_file) - def add_to_cart(self, user_id, product_id, quantity): + def add_to_cart(self, user_id, product_id, name, quantity, price): """Add a product to the user's cart.""" - sql = "INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)" + sql = "INSERT INTO cart (user_id, product_id, name, quantity, price) VALUES (?, ?, ?, ?, ?)" try: c = self.conn.cursor() - c.execute(sql, (user_id, product_id, quantity)) + c.execute(sql, (user_id, product_id, name, quantity, price)) self.conn.commit() return c.lastrowid except sqlite3.Error as e: @@ -20,12 +20,12 @@ class CartDatabase(CartDatabaseInterface): def fetch_cart_items(self, user_id: int) -> Optional[List[dict]]: """Fetch cart items from the database for a given user ID.""" - sql = "SELECT * FROM cart WHERE user_id = ?" + sql = "SELECT product_id, name, quantity, price FROM cart WHERE user_id = ?" try: c = self.conn.cursor() c.execute(sql, (user_id,)) rows = c.fetchall() - return [{"id": row[0], "user_id": row[1], "product_id": row[2], "quantity": row[3]} for row in rows] + return [{'product_id':r[0], 'name':r[1], 'quantity':r[2], 'price':r[3]} for r in rows] except sqlite3.Error as e: print(e) return None @@ -60,7 +60,6 @@ class CartDatabase(CartDatabaseInterface): except sqlite3.Error as e: print(e) - def main(): database = "framework_driver/db/shop.db" @@ -71,13 +70,13 @@ def main(): # delete all cart items cart_db.clear_cart(ex_user_id) - # user id, product id, quantity - cart_db.add_to_cart(ex_user_id, 1, 2) - cart_db.add_to_cart(ex_user_id, 3, 5) + # user id, product id, name, quantity, price + cart_db.add_to_cart(ex_user_id, 1, "Product 1", 2, 10.0) + cart_db.add_to_cart(ex_user_id, 2, "Product 2", 5, 20.0) print(f"Cart items for user {ex_user_id}:", cart_db.fetch_cart_items(ex_user_id)) # user id, product id, quantity - cart_db.update_cart_item(ex_user_id, 3, 3) + cart_db.update_cart_item(ex_user_id, 2, 3) print(f"Cart items for user {ex_user_id}:", cart_db.fetch_cart_items(ex_user_id)) if __name__ == "__main__": diff --git a/src/framework_driver/db/db_setup.py b/src/framework_driver/db/db_setup.py index c3fff08..22a792c 100644 --- a/src/framework_driver/db/db_setup.py +++ b/src/framework_driver/db/db_setup.py @@ -48,7 +48,9 @@ def main(): id INTEGER PRIMARY KEY, user_id INTEGER NOT NULL, product_id INTEGER NOT NULL, + name TEXT NOT NULL, quantity INTEGER NOT NULL, + price REAL NOT NULL, FOREIGN KEY (user_id) REFERENCES users (id), FOREIGN KEY (product_id) REFERENCES products (id) )""" @@ -56,6 +58,12 @@ def main(): conn = create_connection(database) if conn is not None: + # Delete tables if they exist + delete_table(conn, "cart") + delete_table(conn, "products") + delete_table(conn, "users") + + # Create tables create_table(conn, sql_user_table) create_table(conn, sql_product_table) create_table(conn, sql_cart_table) diff --git a/src/framework_driver/db/shop.db b/src/framework_driver/db/shop.db index 63ac42d99245db6d593cb1ad8cc6ab8d849af7e9..5d532adb4bfb78886bcd1e71e774248ac75c8e1d 100644 GIT binary patch delta 175 zcmZo@U~Fh$oFFYYpMima1&CpQf1-}D@O%cna4%k<5HoKi1AhtM9^S}}jn8?wni81V z#YIIKTa_oz;hi}7G{4MbT|VW>7W}fC1NgQuGBF5j7BslWKXHN#8%Q^TD*)m$@n2`) ve*+|dOrW~s{F=f{>m)DJWTutiC z?Bb%Lj4g(flX)jj7T{Cf9Kg4Qk%yUoJrn<9{uBJ``6mEXHt^R=vam2nYkKD#-j-OD zn4JS89C8ygbM%t)bAjfDiZin?h-*3)zI1@<18>9hMSAMQEBhW})-^}EU z#MGQz2nE;2%YTi5iT^kQ{~P|}Kx(s)z(#%_5oT5fNp?nF5XH#oUzC`ao(g0$Fo*#~ zoq$&7CEEXh_?%0Kk(EJ|ozbx%HOB!OAgrJuVB&wz!2g5)JJ8JPfi^h?M9