meilisearch-admin/app/models/index.js
2022-05-06 13:35:00 +03:00

76 lines
1.7 KiB
JavaScript

import query from '../utils/query';
import { TrackedArray } from 'tracked-built-ins';
import { trackedFunction } from 'ember-resources/util/function';
export default class Index {
stats = trackedFunction(this, () => query(`${this.indexPath}/stats`));
displayedAttributes = trackedFunction(this, () =>
query(`${this.indexPath}/settings/displayed-attributes`).then(
(arr) => new TrackedArray(arr)
)
);
constructor(data) {
for (const key in data) {
this[key] = data[key];
}
}
get indexPath() {
return `indexes/${this.uid}`;
}
get allAttributesAreDisplayed() {
return (
this.displayedAttributes.value &&
this.displayedAttributes.value.length === 1 &&
this.displayedAttributes.value[0] === '*'
);
}
getDisplayedAttributes() {
return query(`${this.indexPath}/settings/displayed-attributes`);
}
updateDisplayedAttributes(value) {
return query(`${this.indexPath}/settings/displayed-attributes`, {
method: 'POST',
body: JSON.stringify(value),
});
}
resetDisplayedAttributes() {
return query(`${this.indexPath}/settings/displayed-attributes`, {
method: 'DELETE',
});
}
getSortableAttributes() {
return query(`${this.indexPath}/settings/sortable-attributes`).then(
(result) => new TrackedArray(result)
);
}
getStats() {
return query(`${this.indexPath}/stats`);
}
getSettings() {
return query(`${this.indexPath}/settings`);
}
search(q, options = {}) {
options.q = q;
return query(`${this.indexPath}/search`, {
method: 'POST',
body: JSON.stringify(options),
});
}
get fields() {
return this.stats.value
? Object.keys(this.stats.value.fieldDistribution)
: [];
}
}