plugin-voting/repositories/FormRepository.js
2025-11-03 14:01:07 +02:00

45 lines
1.2 KiB
JavaScript

const BaseRepository = require('../../../src/database/repository');
const logger = require('../../../src/utils/logger');
class FormRepository extends BaseRepository {
constructor() {
super('pg_vt_forms');
}
/**
* Find forms with filters
* @param {Object} filters - Filter criteria
* @param {Object} options - Query options
*/
async findWithFilters(filters = {}, options = {}) {
const criteria = {};
if (filters.site_id) criteria.site_id = filters.site_id;
if (filters.form_type) criteria.form_type = filters.form_type;
if (filters.is_active !== undefined) criteria.is_active = filters.is_active;
const orderBy = options.orderBy || 'created_at';
const orderDirection = options.orderDirection || 'desc';
const limit = options.limit;
return await this.findAll(criteria, { orderBy, orderDirection, limit });
}
/**
* Create or update form
* @param {Object} formData - Form data
*/
async save(formData) {
if (formData.id) {
return await this.updateById(formData.id, {
...formData,
updated_at: new Date().toISOString()
});
} else {
return await this.create(formData);
}
}
}
module.exports = FormRepository;