45 lines
1.2 KiB
JavaScript
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;
|
|
|