deleteItemByState

This commit is contained in:
jusax23 2023-03-29 14:42:06 +02:00
parent 3a6280ceca
commit f67846ab39
Signed by: jusax23
GPG key ID: 499E2AA870C1CD41

View file

@ -408,7 +408,16 @@ export const getItems: Act = {
let unit = d[listItems.unit]; let unit = d[listItems.unit];
let value = d[listItems.value]; let value = d[listItems.value];
let listProdID = d[listItems.link]; let listProdID = d[listItems.link];
return { listItemID, state, title, description, listCatID, unit, value, listProdID }; return {
listItemID,
state, // 0 = added; 1 = in cart/bought
title,
description,
listCatID,
unit,
value,
listProdID
};
}); });
aws("ok", out.filter(d => d != null)); aws("ok", out.filter(d => d != null));
} }
@ -440,6 +449,7 @@ export const addItem: Act = {
aws("error", "existence"); aws("error", "existence");
return; return;
} }
if (data.state != 1 && data.state != 0) return void aws("error", "data");
if (await isRoomDataFull(roomID)) return void aws("error", "limit"); if (await isRoomDataFull(roomID)) return void aws("error", "limit");
if (data.listCatID > -1 && !isCategoryInRoom(roomID, data.listCatID)) return void aws("error", "existence"); if (data.listCatID > -1 && !isCategoryInRoom(roomID, data.listCatID)) return void aws("error", "existence");
if (data.listProdID > -1 && !isProductInRoom(roomID, data.listProdID)) return void aws("error", "existence"); if (data.listProdID > -1 && !isProductInRoom(roomID, data.listProdID)) return void aws("error", "existence");
@ -476,7 +486,7 @@ export const changeItem: Act = {
room: "string", room: "string",
server: "string", server: "string",
listItemID: "number", listItemID: "number",
state: "number", // 0 = added; 1 = in cart; 2 = bourght state: "number", // 0 = added; 1 = in cart/bought
title: "string-256", title: "string-256",
description: "string-4096", description: "string-4096",
listCatID: "number", //-1 = no parent listCatID: "number", //-1 = no parent
@ -496,6 +506,7 @@ export const changeItem: Act = {
aws("error", "existence"); aws("error", "existence");
return; return;
} }
if (data.state != 1 && data.state != 0) return void aws("error", "data");
if (!isItemInRoom(roomID, data.listItemID)) return void aws("error", "existence"); if (!isItemInRoom(roomID, data.listItemID)) return void aws("error", "existence");
if (data.listCatID > -1 && !isCategoryInRoom(roomID, data.listCatID)) return void aws("error", "existence"); if (data.listCatID > -1 && !isCategoryInRoom(roomID, data.listCatID)) return void aws("error", "existence");
if (data.listProdID > -1 && !isProductInRoom(roomID, data.listProdID)) return void aws("error", "existence"); if (data.listProdID > -1 && !isProductInRoom(roomID, data.listProdID)) return void aws("error", "existence");
@ -521,7 +532,7 @@ export const changeItemState: Act = {
room: "string", room: "string",
server: "string", server: "string",
listItemID: "number", listItemID: "number",
state: "number", state: "number", // 0 = added; 1 = in cart/bought
}, },
func: async (client: Client, data: any, aws: (code: string, data: any) => void) => { func: async (client: Client, data: any, aws: (code: string, data: any) => void) => {
if (!checkSelfTag(data.server)) { if (!checkSelfTag(data.server)) {
@ -535,6 +546,7 @@ export const changeItemState: Act = {
aws("error", "existence"); aws("error", "existence");
return; return;
} }
if (data.state != 1 && data.state != 0) return void aws("error", "data");
if (!isItemInRoom(roomID, data.listItemID)) return void aws("error", "existence"); if (!isItemInRoom(roomID, data.listItemID)) return void aws("error", "existence");
let req = await update(listItems) let req = await update(listItems)
.set(listItems.state, data.state) .set(listItems.state, data.state)
@ -573,4 +585,33 @@ export const deleteItem: Act = {
if (req.affectedRows > 0) aws("ok", ""); if (req.affectedRows > 0) aws("ok", "");
else aws("error", "existence"); else aws("error", "existence");
} }
}; };
export const deleteItemByState: Act = {
state: STATE.client | STATE.remote,
right: 0,
data: {
room: "string",
server: "string",
state: "number", // 0 = added; 1 = in cart/bought
},
func: async (client: Client, data: any, aws: (code: string, data: any) => void) => {
if (!checkSelfTag(data.server)) {
if (client.state != STATE.client) return void aws("error", "right");
let resp = await client.pass(data.server, "deleteItem", data);
aws(resp.state, resp.data);
return;
}
let roomID = await client.isRoomAdmin(data.room, ROOM_RIGHTS.REMOVE_ARTICLES);
if (roomID == -1) {
aws("error", "existence");
return;
}
let req = await remove(listItems)
.where(and(
eq(listItems.state, data.state),
eq(listItems.roomID, roomID)
)).query(db);
if (req.affectedRows > 0) aws("ok", "");
else aws("error", "existence");
}
}