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