58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
const { fetchPagedRows } = require('./utils');
|
|
|
|
async function fetchCanvasSizesData(pool) {
|
|
const [canvasSizes] = await pool.query('SELECT id, name, width, height, created_at, modified_at, created_by, modified_by FROM canvas_sizes ORDER BY width ASC, height ASC, name ASC');
|
|
return { canvasSizes };
|
|
}
|
|
|
|
async function fetchCanvasSizesPage(pool, page, pageSize, searchTerm, sortKey, sortDirection) {
|
|
const paged = await fetchPagedRows(pool, {
|
|
selectSql: 'SELECT id, name, width, height, created_at, modified_at, created_by, modified_by FROM canvas_sizes ORDER BY width ASC, height ASC, name ASC',
|
|
countSql: 'SELECT COUNT(*) AS count FROM canvas_sizes',
|
|
searchColumns: ['name', 'width', 'height'],
|
|
searchTerm: searchTerm,
|
|
sortColumns: {
|
|
name: 'name',
|
|
dimensions: ['width', 'height', 'name'],
|
|
created: 'created_at',
|
|
modified: 'modified_at'
|
|
},
|
|
sortKey: sortKey,
|
|
sortDirection: sortDirection,
|
|
page: page,
|
|
pageSize: pageSize
|
|
});
|
|
|
|
return Object.assign({ canvasSizes: paged.rows }, paged);
|
|
}
|
|
|
|
async function fetchCanvasSizeById(pool, id) {
|
|
const [rows] = await pool.query('SELECT id, name, width, height, created_at, modified_at, created_by, modified_by FROM canvas_sizes WHERE id = ?', [id]);
|
|
return rows[0] || null;
|
|
}
|
|
|
|
function buildCanvasSizePayload(req, existingCanvasSize) {
|
|
const name = String(req.body.name || '').trim();
|
|
const width = Math.max(1, Number(req.body.width || (existingCanvasSize && existingCanvasSize.width) || 0));
|
|
const height = Math.max(1, Number(req.body.height || (existingCanvasSize && existingCanvasSize.height) || 0));
|
|
|
|
if (!name) {
|
|
const error = new Error('Canvas size name is required.');
|
|
error.statusCode = 400;
|
|
throw error;
|
|
}
|
|
|
|
return {
|
|
name,
|
|
width,
|
|
height
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
fetchCanvasSizesData,
|
|
fetchCanvasSizesPage,
|
|
fetchCanvasSizeById,
|
|
buildCanvasSizePayload
|
|
};
|