Files
hotel-api/helpers/utils.js
2025-09-22 10:45:25 +07:00

90 lines
2.0 KiB
JavaScript

const setResponse = async (data = [], message = "success", statusCode = 200) => {
const response = {
data,
total: data.length,
message,
statusCode
}
return response
};
const setResponsePaging = async (data = [], total, limit, page, message = "success", statusCode = 200) => {
const totalPages = Math.ceil(total / limit);
const response = {
message,
statusCode,
data,
total: data.length,
paging: {
total,
limit,
page,
page_total: totalPages
}
}
return response
};
const setPaging = async (total, limit, page) => {
const totalPages = Math.ceil(total / limit);
const response = {
total,
limit,
page,
page_total: totalPages
}
return response
};
function convertId(items, id, fieldId = "id", fieldName = "name") {
var match = ""
items.forEach(element => {
if (element[fieldId] == id) {
match = element[fieldName]
}
});
return match
}
function formatToYYYYMMDD(date) {
return new Intl.DateTimeFormat('id-ID', {
timeZone: 'Asia/Jakarta',
year: 'numeric',
month: '2-digit',
day: '2-digit',
}).format(date).split('/').reverse().join('-'); // Ubah format dari dd/mm/yyyy ke yyyy-mm-dd
}
function ensureArray(param) {
return Array.isArray(param) ? param : [param];
}
function orderByClauseQuery(orderParams) {
orderParams = ensureArray(orderParams)
// Transform order parameters to SQL ORDER BY syntax
const validDirections = ['ASC', 'DESC'];
const orderConditions = orderParams.map(param => {
const [field, direction] = param.split(':');
if (!validDirections.includes(direction.toUpperCase())) {
throw new Error(`Invalid direction: ${direction}`);
}
return `${field} ${direction}`;
});
// Gabungkan dengan koma untuk digunakan dalam query
const orderByClause = orderConditions.join(', ');
return orderByClause
}
module.exports = { setResponse, setResponsePaging, setPaging, convertId, formatToYYYYMMDD, orderByClauseQuery };