Skip to content

Instantly share code, notes, and snippets.

@asvae
Created September 1, 2017 22:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asvae/89f906cdee5f48ebf3a370906d33433f to your computer and use it in GitHub Desktop.
Save asvae/89f906cdee5f48ebf3a370906d33433f to your computer and use it in GitHub Desktop.
FieldRepository.js
import Field from '../Domain/Entity/Field.js'
import FieldMapper from '../Domain/Mapper/FieldMapper.js'
import repoBus from '../../oop-store/repoBus'
import axios from '../../plugins/internal/axios-instance.js'
import MappingHelpers from '../Utility/Static/MappingHelpers.js'
export const FIELD_UPDATED = 'Field updated'
export const FIELD_CREATED = 'Field created'
export const FIELD_REMOVED = 'Field removed'
export default class FieldRepository {
/**
* Get all fields with subfields.
*/
static async getAllFields () {
const fieldsData = (await axios.get('fields?with_values=1')).data
return fieldsData.map(FieldMapper.map)
}
static async getOne (field: Field): void {
const fieldData = (await axios.get('fields/' + field.id)).data
MappingHelpers.fixIds(fieldData)
return FieldMapper.map(fieldData)
}
static async create (field: Field): Field {
const payload = FieldMapper.transform(field)
MappingHelpers.unfixIds(payload)
const createdField = new Field(field)
createdField.id = (await axios.post('fields', payload)).data
repoBus.emit(FIELD_CREATED, createdField)
return createdField
}
static async update (field: Field): Field {
const payload = FieldMapper.transform(field)
MappingHelpers.unfixIds(payload)
const updatedField = new Field(field)
await axios.put(`fields/${field.id}`, payload)
repoBus.emit(FIELD_UPDATED, updatedField)
return updatedField
}
static async getManyWithQuery (params: Object): Field[] {
const data = (await axios.get(`fields`, { params })).data
return data.map(FieldMapper.map)
}
static async remove (field: Field): void {
await axios.delete(`fields/${field.id}`)
repoBus.emit(FIELD_REMOVED, field)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment