Files
cod-api/db/file_uploads.db.js
2025-10-24 10:54:26 +07:00

92 lines
2.0 KiB
JavaScript

const pool = require("../config");
// Get file upload by path
const getFileUploadByPathDb = async (path) => {
const queryText = `
SELECT
file_upload_id,
file_upload_name,
type_document,
path_document,
created_by,
updated_by,
deleted_by,
created_at,
updated_at,
deleted_at
FROM file_upload
WHERE path_document = $1 AND deleted_at IS NULL
`;
const result = await pool.query(queryText, [path]);
return result.recordset[0];
};
// Create file upload
const createFileUploadDb = async (data) => {
const store = {
file_upload_name: data.file_upload_name,
};
// Add path_document if exists
if (data.path_document) {
store.path_document = data.path_document;
}
// Add type_document if exists
if (data.type_document) {
store.type_document = data.type_document;
}
if (data.createdBy) {
store.created_by = data.createdBy;
}
console.log('Data to insert:', store);
const queryText = `
INSERT INTO file_upload (file_upload_name, path_document, type_document, created_by, created_at, updated_at)
VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
SELECT SCOPE_IDENTITY() as inserted_id;
`;
const values = [
store.file_upload_name,
store.path_document,
store.type_document,
store.created_by || null
];
// console.log('Manual Query:', queryText);
// console.log('Manual Values:', values);
const result = await pool.query(queryText, values);
return result.recordset[0];
};
// Soft delete file upload by path
const deleteFileUploadByPathDb = async (path, deletedBy = null) => {
const store = {
deleted_at: new Date(),
};
if (deletedBy) {
store.deleted_by = deletedBy;
}
const whereData = {
path_document: path,
};
const { query: queryText, values } = pool.buildDynamicUpdate(
"file_upload",
store,
whereData
);
await pool.query(`${queryText} AND deleted_at IS NULL`, values);
return true;
};
module.exports = {
getFileUploadByPathDb,
createFileUploadDb,
deleteFileUploadByPathDb,
};