Untitled
unknown
javascript
9 months ago
3.2 kB
13
Indexable
async function getAllWarehouses(limit, lastEvaluatedKey, user_id, user_role) {
if (!user_id || !user_role) {
return {
statusCode: 400,
body: JSON.stringify({ message: "Missing user_id or user_role" }),
headers
};
}
try {
let items = [];
let params;
let req;
const lastEval = lastEvaluatedKey ? JSON.parse(decodeURIComponent(lastEvaluatedKey)) : null;
if (user_role === "admin") {
params = {
TableName: process.env.WAREHOUSE_TABLE,
Limit: limit,
ExclusiveStartKey: lastEval
};
req = new import_client_dynamodb.ScanCommand(params);
const res = await dynamodb.send(req);
items = res.Items || [];
const response = {
items,
lastEvaluatedKey: res.LastEvaluatedKey || null,
user_id,
user_role
};
return {
statusCode: 200,
body: JSON.stringify(response),
headers
};
} else {
if (user_role === "manager") {
params = {
TableName: process.env.MANAGER,
KeyConditionExpression: "user_id = :user_id",
ExpressionAttributeValues: {
":user_id": { S: user_id },
},
Limit: limit,
ExclusiveStartKey: lastEval
};
req = new import_client_dynamodb.QueryCommand(params);
}else if (user_role === "owner") {
params = {
TableName: process.env.WAREHOUSE_OWNER_TABLE,
KeyConditionExpression: "user_id = :user_id",
ExpressionAttributeValues: {
":user_id": { S: user_id },
},
Limit: limit,
ExclusiveStartKey: lastEval,
};
req = new import_client_dynamodb.QueryCommand(params);
} else {
return {
statusCode: 400,
body: JSON.stringify({ message: "Invalid user role" }),
headers
};
}
const res = await dynamodb.send(req);
const resItem = res.Items || [];
for (const warehouse of resItem[0]?.warehouse_ids?.L || []) {
const warehouse_id = warehouse.S;
if (!warehouse_id) {
continue;
}
const warehouseParams = {
TableName: process.env.WAREHOUSE_TABLE,
KeyConditionExpression: "warehouse_id = :warehouse_id",
ExpressionAttributeValues: {
":warehouse_id": { S: warehouse_id }
}
};
const warehouseReq = new import_client_dynamodb.QueryCommand(warehouseParams);
const warehouseResp = await dynamodb.send(warehouseReq);
items = items.concat(warehouseResp.Items || []);
}
const response = {
items,
lastEvaluatedKey: res.LastEvaluatedKey || null,
user_id,
user_role
};
return {
statusCode: 200,
body: JSON.stringify(response),
headers
};
}
} catch (error) {
console.error("Error scanning warehouse table:", error);
return {
statusCode: 500,
body: JSON.stringify({ message: "Could not fetch data. " + error }),
headers
};
}
}
Editor is loading...
Leave a Comment