CentralBackend/repositories/stamp/CompanyStampRepository.js
2025-09-08 16:05:37 +02:00

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();