in api/index.js [103:153]
function filter(stacks, query) {
const {
name,
status,
latestOperation: {
name: lastOpName,
initiator,
timestamp: {
after: timestampAfter,
before: timestampBefore,
} = {},
} = {},
} = query;
let filtered = stacks;
if (name) {
filtered = stacks.filter((stack) => stack.name.toLowerCase().includes(name.toLowerCase()));
}
if (status) {
filtered = filtered.filter((stack) => strEqualsIgnoreCase(stack.status, status));
}
if (lastOpName) {
filtered = filtered.filter(({latestOperation: {name}}) => strEqualsIgnoreCase(name, lastOpName));
}
if (initiator) {
filtered = filtered.filter(({latestOperation: {initiator: stackInitiator}}) => {
stackInitiator = stackInitiator.toLowerCase;
initiator = initiator.toLowerCase();
return stackInitiator.includes(initiator);
});
}
if (timestampBefore) {
const dtBefore = Date.parse(timestampBefore);
if (dtBefore) {
filtered = filtered.filter((stack) => new Date(stack.latestOperation.timestamp) < dtBefore);
}
}
if (timestampAfter) {
const dtAfter = Date.parse(timestampAfter);
if (dtAfter) {
filtered = filtered.filter((stack) => new Date(stack.latestOperation.timestamp) >= dtAfter);
}
}
return filtered;
}