import db_connector/db_sqlite, strutils, strtabs import ../a3pkg/models proc close*(db: DbConn) = db.close() proc setupCart*(db: DbConn) = db.exec(sql""" CREATE TABLE IF NOT EXISTS cart ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE, product_id INTEGER NOT NULL REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE, quantity INTEGER NOT NULL, created_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL, updated_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL ) """) proc createPost*(db: DbConn, cart: Cart) = db.exec(sql"INSERT INTO cart (?, ?, ?, ?, ?);", cart.userId, cart.productId, cart.quantity, cart.created_at, cart.updated_at) proc drop*(db: DbConn) = db.exec(sql"DROP TABLE IF EXISTS cart") proc getUserCart*(db: DbConn, userId: int): seq[Cart] = var row = db.getAllRows(sql"SELECT * FROM cart WHERE user_id=?", userId) cartDetails: seq[Cart] for b, c in row: var product: Cart product.id = parseInt(c[0]) product.userId = parseInt(c[1]) product.productId = parseInt(c[2]) product.quantity = parseInt(c[3]) cartDetails.add(product) return cartDetails proc addToCart*(db: DbConn, cart: Cart) = var cartDetails = getUserCart(db, cart.userId) for d, f in cartDetails: if f.userId == cart.userId and f.productId == cart.productId: db.exec(sql"UPDATE cart SET quantity=? WHERE user_id=? AND product_id=?", f.quantity + cart.quantity, cart.userId, cart.productId) return db.exec(sql"INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)", cart.userId, cart.productId, cart.quantity) proc removeFromCart*(db: DbConn, cart: Cart) = db.exec(sql"DELETE FROM cart WHERE user_id=? AND product_id=?", cart.userId, cart.productId) proc updateCart*(db: DbConn, quantity: string, id: int) = # echo id # echo quantity # echo userId # echo db.getAllRows(sql"SELECT * FROM cart WHERE user_id=? AND product_id=?;", userId, parseInt(productId)) db.exec(sql"UPDATE cart SET quantity=? WHERE id=?", quantity, id) # proc updateCart*(db: DbConn, cookies: StringTableRef) = # echo cookies # for d, e in cookies: # if d.contains("_quantity") == true: # var h = d.split("_") # echo h # db.exec(sql"UPDATE cart SET quantity=? WHERE id=?", e, h[0]) # echo parseInt(h[0]) # echo parseInt(e)