Untitled
unknown
javascript
a month ago
3.2 kB
6
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