feathers-solr
Advanced tools
Comparing version 2.3.1 to 2.4.0
@@ -1,2 +0,2 @@ | ||
const { addId, jsonQuery, patchQuery, deleteQuery, whitelist, defaultOperators } = require('./query'); | ||
const { addId, getIds, jsonQuery, patchQuery, deleteQuery, whitelist, defaultOperators } = require('./query'); | ||
const { responseFind, responseGet } = require('./response'); | ||
@@ -6,2 +6,3 @@ | ||
addId, | ||
getIds, | ||
jsonQuery, | ||
@@ -8,0 +9,0 @@ patchQuery, |
@@ -232,4 +232,13 @@ const { _ } = require('@feathersjs/commons'); | ||
const getIds = (data, id) => { | ||
if (!Array.isArray(data) && data[id]) return [data[id]]; | ||
return data.map(d => { | ||
return d[id]; | ||
}); | ||
}; | ||
module.exports = { | ||
addId, | ||
getIds, | ||
jsonQuery, | ||
@@ -236,0 +245,0 @@ patchQuery, |
@@ -67,2 +67,3 @@ const { _ } = require('@feathersjs/commons'); | ||
const { filters, query, paginate } = this.filterQuery(params); | ||
return this.Model.post('query', core.jsonQuery(id, filters, query, paginate)).then(res => { | ||
@@ -78,2 +79,3 @@ if (_.get(res, 'response.numFound') === 0) { | ||
const { filters, query, paginate } = this.filterQuery(params); | ||
if (query.$suggest) { | ||
@@ -86,14 +88,31 @@ return this.Model.get(this.suggest, { q: query.$suggest }); | ||
_create(raw, params = {}) { | ||
async _create(raw, params = {}) { | ||
if (_.isEmpty(raw)) throw new errors.MethodNotAllowed('Data is empty'); | ||
// add uuid | ||
const addId = item => core.addId(item, this.id); | ||
const data = Array.isArray(raw) ? raw.map(addId) : addId(raw); | ||
const dataToCreate = Array.isArray(raw) ? raw.map(addId) : addId(raw); | ||
const sel = select(params, this.id); | ||
return this.Model.post('update/json', Array.isArray(data) ? data : [data], Object.assign(params, this.commit)).then(res => sel(data)); | ||
// create data | ||
await this.Model.post('update/json', Array.isArray(dataToCreate) ? dataToCreate : [dataToCreate], Object.assign(params, this.commit)); | ||
const refIds = core.getIds(dataToCreate, this.id); | ||
const query = { id: { $in: refIds } }; | ||
// request and return created data or plain solr response | ||
return this._find({ query: query }) | ||
.then(select(params, this.id)) | ||
.then(res => { | ||
return refIds.length == 1 ? res[0] : res; | ||
}); | ||
} | ||
async _patch(id, data, params = {}) { | ||
const toPatch = await this._getOrFind(id, params); | ||
const { ids, patchData } = core.patchQuery(toPatch, data, this.id); | ||
// request data to patch | ||
const dataToPatch = await this._getOrFind(id, params); | ||
// patch query, Atomic Field update | ||
const { ids, patchData } = core.patchQuery(dataToPatch, data, this.id); | ||
// patch data | ||
await this.Model.post('update/json', patchData, this.commit); | ||
@@ -108,12 +127,18 @@ | ||
_remove(id, params = {}) { | ||
async _remove(id, params = {}) { | ||
if (id === null && _.isEmpty(params)) { | ||
throw new errors.MethodNotAllowed('Delete with out id and query is not allowed'); | ||
} | ||
const sel = select(params, this.id); | ||
return this._getOrFind(id, params).then(data => { | ||
const query = core.deleteQuery(id, params || null); | ||
const sel = select(params, this.id); | ||
return this.Model.post('update/json', query, Object.assign(this.commit)).then(res => sel(data)); | ||
}); | ||
// get delete query | ||
const query = core.deleteQuery(id, params || null); | ||
// get data to delete | ||
const dataToDelete = await this._getOrFind(id, params); | ||
// delete | ||
const response = await this.Model.post('update/json', query, Object.assign(this.commit)); | ||
return sel(dataToDelete); | ||
} | ||
@@ -128,9 +153,12 @@ | ||
} | ||
return this._getOrFind(id, params).then(res => { | ||
if (!res[this.id]) { | ||
throw new errors.NotFound('No record found'); | ||
} | ||
data.id = res.id; | ||
return this.Model.post('update/json', [data]).then(res => sel(data)); | ||
}); | ||
data[this.id] = id || dataToUpdate[this.id]; | ||
// update | ||
const response = await this.Model.post('update/json', [data], Object.assign(params, this.commit)); | ||
// get updated data | ||
const updatedData = await this._getOrFind(id, params); | ||
return _.omit(sel(updatedData), 'score', '_version_'); | ||
} | ||
@@ -137,0 +165,0 @@ } |
{ | ||
"name": "feathers-solr", | ||
"description": "A service plugin for Solr", | ||
"version": "2.3.1", | ||
"version": "2.4.0", | ||
"homepage": "https://github.com/sajov/feathers-solr", | ||
@@ -35,3 +35,3 @@ "keywords": [ | ||
"scripts": { | ||
"publish": "git push origin --tags && npm run changelog && git push origin", | ||
"publish": "git push origin --tags && git push origin", | ||
"changelog": "github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"", | ||
@@ -38,0 +38,0 @@ "release:patch": "npm version patch && npm publish", |
@@ -334,3 +334,3 @@ # feathers-solr | ||
```Javascript | ||
service.Model.post('schema',{"add-field":{name:"age",type:"pint"}}); | ||
service.Model.post('config',{"add-requesthandler":{...}}); | ||
``` | ||
@@ -337,0 +337,0 @@ |
76109
1790