59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
const pool = require('../../database/database');
|
|
|
|
class CompanySettingsRepository {
|
|
async get() {
|
|
const [rows] = await pool.query(
|
|
`SELECT id, company_name, company_street, company_postal_city, company_country,
|
|
company_logo_base64, company_logo_mime_type, updated_at
|
|
FROM company_settings
|
|
WHERE id = 1`
|
|
);
|
|
return rows[0] || null;
|
|
}
|
|
|
|
async update({
|
|
company_name,
|
|
company_street,
|
|
company_postal_city,
|
|
company_country,
|
|
company_logo_base64,
|
|
company_logo_mime_type,
|
|
} = {}) {
|
|
const current = await this.get();
|
|
const next = {
|
|
company_name: company_name !== undefined ? company_name : (current?.company_name ?? ''),
|
|
company_street: company_street !== undefined ? company_street : (current?.company_street ?? ''),
|
|
company_postal_city: company_postal_city !== undefined ? company_postal_city : (current?.company_postal_city ?? ''),
|
|
company_country: company_country !== undefined ? company_country : (current?.company_country ?? ''),
|
|
company_logo_base64: company_logo_base64 !== undefined ? (company_logo_base64 || null) : (current?.company_logo_base64 ?? null),
|
|
company_logo_mime_type: company_logo_mime_type !== undefined ? (company_logo_mime_type || null) : (current?.company_logo_mime_type ?? null),
|
|
};
|
|
|
|
await pool.query(
|
|
`INSERT INTO company_settings (
|
|
id, company_name, company_street, company_postal_city, company_country,
|
|
company_logo_base64, company_logo_mime_type
|
|
)
|
|
VALUES (1, ?, ?, ?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
company_name = VALUES(company_name),
|
|
company_street = VALUES(company_street),
|
|
company_postal_city = VALUES(company_postal_city),
|
|
company_country = VALUES(company_country),
|
|
company_logo_base64 = VALUES(company_logo_base64),
|
|
company_logo_mime_type = VALUES(company_logo_mime_type)`,
|
|
[
|
|
next.company_name || '',
|
|
next.company_street || '',
|
|
next.company_postal_city || '',
|
|
next.company_country || '',
|
|
next.company_logo_base64,
|
|
next.company_logo_mime_type,
|
|
]
|
|
);
|
|
return this.get();
|
|
}
|
|
}
|
|
|
|
module.exports = CompanySettingsRepository;
|