68 lines
2.4 KiB
JavaScript
68 lines
2.4 KiB
JavaScript
const db = require('../database/database');
|
|
const { logger } = require('../middleware/logger');
|
|
|
|
class CompanyStampRepository {
|
|
async create(data, conn) {
|
|
logger.info('CompanyStampRepository.create:start', { company_id: data.company_id, label: data.label });
|
|
const q = `
|
|
INSERT INTO company_stamps (company_id, label, mime_type, image_base64, is_active, created_at, updated_at)
|
|
VALUES (?, ?, ?, ?, ?, NOW(), NOW())
|
|
`;
|
|
const params = [data.company_id, data.label || null, data.mime_type, data.image_base64, !!data.is_active];
|
|
const executor = conn || db;
|
|
const [res] = await executor.execute(q, params);
|
|
const id = res.insertId;
|
|
logger.info('CompanyStampRepository.create:success', { id });
|
|
return { id, ...data };
|
|
}
|
|
|
|
async findById(id, conn) {
|
|
const q = `SELECT * FROM company_stamps WHERE id = ? LIMIT 1`;
|
|
const executor = conn || db;
|
|
const [rows] = await executor.execute(q, [id]);
|
|
return rows[0] || null;
|
|
}
|
|
|
|
async findByCompanyId(companyId, conn) {
|
|
const q = `SELECT * FROM company_stamps WHERE company_id = ? ORDER BY created_at DESC`;
|
|
const executor = conn || db;
|
|
const [rows] = await executor.execute(q, [companyId]);
|
|
return rows;
|
|
}
|
|
|
|
async findActiveByCompanyId(companyId, conn) {
|
|
const q = `SELECT * FROM company_stamps WHERE company_id = ? AND is_active = 1 LIMIT 1`;
|
|
const executor = conn || db;
|
|
const [rows] = await executor.execute(q, [companyId]);
|
|
return rows[0] || null;
|
|
}
|
|
|
|
async deactivateAllForCompany(companyId, conn) {
|
|
const q = `UPDATE company_stamps SET is_active = 0, updated_at = NOW() WHERE company_id = ? AND is_active = 1`;
|
|
const executor = conn || db;
|
|
await executor.execute(q, [companyId]);
|
|
}
|
|
|
|
async activate(id, companyId, conn) {
|
|
const q = `UPDATE company_stamps SET is_active = 1, updated_at = NOW() WHERE id = ? AND company_id = ?`;
|
|
const executor = conn || db;
|
|
await executor.execute(q, [id, companyId]);
|
|
}
|
|
|
|
async delete(id, companyId, conn) {
|
|
const q = `DELETE FROM company_stamps WHERE id = ? AND company_id = ?`;
|
|
const executor = conn || db;
|
|
const [res] = await executor.execute(q, [id, companyId]);
|
|
return res.affectedRows > 0;
|
|
}
|
|
|
|
async listAll(conn) {
|
|
const q = `SELECT * FROM company_stamps ORDER BY created_at DESC`;
|
|
const executor = conn || db;
|
|
const [rows] = await executor.execute(q);
|
|
return rows;
|
|
}
|
|
}
|
|
|
|
module.exports = new CompanyStampRepository();
|