Krishna086's picture
Upload 6 files (#1)
588f657 verified
from sqlalchemy.orm import Session
from database import Product, Transaction
import uuid
from datetime import datetime
def add_product(db: Session, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
product = Product(name=name, current_stock=current_stock, safety_stock=safety_stock, lead_time=lead_time, monthly_demand=monthly_demand, product_class=product_class) # Create new product
db.add(product)
db.commit()
db.refresh(product)
return product
def get_all_products(db: Session):
return db.query(Product).all() # Fetch all products
def get_product_by_id(db: Session, product_id: int):
product = db.query(Product).filter(Product.id == product_id).first()
if not product:
raise ValueError("Product not found")
return product
# In-memory session-based functions
def add_product_memory(session_products: list, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
if any(p["name"].lower() == name.lower() for p in session_products):
raise ValueError("Product name already exists in your session")
product = {"id": str(uuid.uuid4()), "name": name, "current_stock": current_stock, "safety_stock": safety_stock, "lead_time": lead_time, "monthly_demand": monthly_demand, "product_class": product_class} # Create new in-memory product
session_products.append(product)
return product
def update_product_memory(session_products: list, product_id: str, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
if any(p["name"].lower() == name.lower() and p["id"] != product_id for p in session_products):
raise ValueError("Product name already exists in your session")
for product in session_products:
if product["id"] == product_id:
product.update({"name": name, "current_stock": current_stock, "safety_stock": safety_stock, "lead_time": lead_time, "monthly_demand": monthly_demand, "product_class": product_class})
return product
raise ValueError("Product not found")
def delete_product_memory(session_products: list, product_id: str):
for i, product in enumerate(session_products):
if product["id"] == product_id:
session_products.pop(i)
return
raise ValueError("Product not found")
def add_stock_memory(session_products: list, session_transactions: list, product_id: str, quantity: float):
for product in session_products:
if product["id"] == product_id:
product["current_stock"] += quantity
session_transactions.append({"id": str(uuid.uuid4()), "product_id": product_id, "quantity": quantity, "transaction_type": "ADD", "timestamp": datetime.now()}) # Record stock addition
return
raise ValueError("Product not found")
def remove_stock_memory(session_products: list, session_transactions: list, product_id: str, quantity: float):
for product in session_products:
if product["id"] == product_id:
if product["current_stock"] < quantity:
raise ValueError("Insufficient stock")
product["current_stock"] -= quantity
session_transactions.append({"id": str(uuid.uuid4()), "product_id": product_id, "quantity": quantity, "transaction_type": "REMOVE", "timestamp": datetime.now()}) # Record stock removal
return
raise ValueError("Product not found")
def get_transactions_memory(session_transactions: list):
return session_transactions # Fetch all transactions