WMGZON/controllers/database/product.py

108 lines
2.9 KiB
Python

from .database import DatabaseController
from models.products.product import Product
class ProductController(DatabaseController):
FIELDS = ['id', 'name', 'image', 'description', 'cost',
'sellerID', 'category', 'postedDate', 'quantityAvailable']
TYPE = Product
def __init__(self):
super().__init__()
def create(self, product: Product):
params = [
product.name,
product.image,
product.description,
product.cost,
product.category,
product.sellerID,
product.postedDate,
product.quantityAvailable
]
query = """
INSERT INTO Products
(name, image, description, cost, categoryID,
sellerID, postedDate, quantityAvailable)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
"""
self.do(query, params)
def read(self, name: str = "") -> list[Product] | None:
params = [
"%" + name + "%"
]
query = "SELECT * FROM Products WHERE name like ?"
return self.get_many(query, params)
def read_id(self, id: int) -> Product | None:
params = [
id
]
query = "SELECT * FROM Products WHERE id == ?"
return self.get_one(query, params)
def read_all(self, category: str = "",
search_term: str = "") -> list[Product] | None:
params = [
"%" + category + "%",
"%" + search_term + "%"
]
query = """
SELECT * FROM Products
INNER JOIN Categories ON Products.categoryID = Categories.id
WHERE Categories.name LIKE ?
AND Products.name LIKE ?
"""
return self.get_many(query, params)
def read_user(self, user_id: int) -> list[Product] | None:
params = [
user_id
]
query = """
SELECT * FROM Products
WHERE sellerID = ?
"""
return self.get_many(query, params)
def update(self, product: Product):
params = [
product.name,
product.description,
product.image,
product.cost,
product.quantityAvailable,
product.category,
product.id
]
query = """
UPDATE Products
SET name = ?,
description = ?,
image = ?,
cost = ?,
quantityAvailable = ?,
categoryID = ?
WHERE id = ?
"""
self.do(query, params)
def delete(self, id: int):
params = [
id
]
query = """
DELETE FROM Products
WHERE id = ?
"""
self.do(query, params)