39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import AbstractService from '@/services/abstractService'
|
|
import SavedFilterModel from '@/models/savedFilter'
|
|
import type {ISavedFilter} from '@/modelTypes/ISavedFilter'
|
|
import {objectToCamelCase} from '@/helpers/case'
|
|
|
|
export default class SavedFilterService extends AbstractService<ISavedFilter> {
|
|
constructor() {
|
|
super({
|
|
get: '/filters/{id}',
|
|
create: '/filters',
|
|
update: '/filters/{id}',
|
|
delete: '/filters/{id}',
|
|
})
|
|
}
|
|
|
|
modelFactory(data) {
|
|
return new SavedFilterModel(data)
|
|
}
|
|
|
|
processModel(model) {
|
|
// Make filters from this.filters camelCase and set them to the model property:
|
|
// That's easier than making the whole filter component configurable since that still needs to provide
|
|
// the filter values in snake_sćase for url parameters.
|
|
model.filters = objectToCamelCase(model.filters)
|
|
|
|
// Make sure all filterValues are passes as strings. This is a requirement of the api.
|
|
model.filters.filterValue = model.filters.filterValue.map(v => String(v))
|
|
|
|
return model
|
|
}
|
|
|
|
beforeUpdate(model) {
|
|
return this.processModel(model)
|
|
}
|
|
|
|
beforeCreate(model) {
|
|
return this.processModel(model)
|
|
}
|
|
}
|