mir-client
Version:
A Mir API Client
52 lines (48 loc) • 1.57 kB
JavaScript
import * as R from 'ramda'
/**
* @function CreateDeleteFactory - Creates DeleteFactory for a certain Mir API.
* @param {Object} axios - Initialized Axios instance.
* @param {string} resource - The target collection.
* @returns {DeleteFactory} - A factory function that accepts a Mir API resource name.
*/
function CreateDeleteFactory(axios, resource) {
/**
* @typedef DeleteFactory - A Query Builder object
* @type {function}
* @param {string} id - The id of the desired record.
* @returns {QueryBuilder} - Object that acts as a query builder for Mir requests
*/
const DeleteFactory = (id) => {
/**
* A Query Builder object
* @typedef QueryBuilder
* @type {Object}
* @property {Object} params - Stores parameters for the request
* @property {Object} headers - Stores headers for the request
* @property {function} send - Sends a request with the current stored headers and params configurations.
*/
const QueryBuilder = {
params: {},
headers: {},
/**
* @function send
* @param {function} hook - does this need hooks?
* @this QueryBuilder
* @returns {Promise} - Axios promise
*/
send(hook) {
const params = this.params
const headers = this.headers
return axios.delete(`/${resource}/${id}`, {
params,
headers
}).then((result) => {
return result
})
}
}
return QueryBuilder
}
return DeleteFactory
}
export default CreateDeleteFactory