61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
const List = require("../models/list.model");
|
|
|
|
|
|
exports.getList = async (req, res) => {
|
|
const items = await List.getUnboughtItems();
|
|
res.json(items);
|
|
};
|
|
|
|
exports.getItemByName = async (req, res) => {
|
|
const { itemName } = req.query;
|
|
const item = await List.getItemByName(itemName);
|
|
res.json(item);
|
|
}
|
|
|
|
|
|
exports.addItem = async (req, res) => {
|
|
const { itemName, quantity } = req.body;
|
|
const userId = req.user.id;
|
|
|
|
// Get processed image if uploaded
|
|
const imageBuffer = req.processedImage?.buffer || null;
|
|
const mimeType = req.processedImage?.mimeType || null;
|
|
|
|
const id = await List.addOrUpdateItem(itemName, quantity, userId, imageBuffer, mimeType);
|
|
|
|
await List.addHistoryRecord(id, quantity, userId);
|
|
|
|
res.json({ message: "Item added/updated", addedBy: userId });
|
|
};
|
|
|
|
|
|
exports.markBought = async (req, res) => {
|
|
const userId = req.user.id;
|
|
await List.setBought(req.body.id, userId);
|
|
res.json({ message: "Item marked bought" });
|
|
};
|
|
|
|
|
|
exports.getSuggestions = async (req, res) => {
|
|
const { query } = req.query || "";
|
|
const suggestions = await List.getSuggestions(query);
|
|
res.json(suggestions);
|
|
};
|
|
|
|
exports.updateItemImage = async (req, res) => {
|
|
const { id, itemName, quantity } = req.body;
|
|
const userId = req.user.id;
|
|
|
|
// Get processed image
|
|
const imageBuffer = req.processedImage?.buffer || null;
|
|
const mimeType = req.processedImage?.mimeType || null;
|
|
|
|
if (!imageBuffer) {
|
|
return res.status(400).json({ message: "No image provided" });
|
|
}
|
|
|
|
// Update the item with new image
|
|
await List.addOrUpdateItem(itemName, quantity, userId, imageBuffer, mimeType);
|
|
|
|
res.json({ message: "Image updated successfully" });
|
|
}; |