diff --git a/app/routes/admin/indexes.js b/app/routes/admin/indexes.js
index 255df8d..42aaab4 100644
--- a/app/routes/admin/indexes.js
+++ b/app/routes/admin/indexes.js
@@ -2,9 +2,9 @@ import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default class AdminIndexesRoute extends Route {
- @service store;
+ @service meilisearch;
async model() {
- return this.store.findAll('index');
+ return this.meilisearch.getRawIndexes();
}
}
diff --git a/app/routes/admin/indexes/item.js b/app/routes/admin/indexes/item.js
index bdbda7f..42c50bd 100644
--- a/app/routes/admin/indexes/item.js
+++ b/app/routes/admin/indexes/item.js
@@ -2,6 +2,8 @@ import Route from '@ember/routing/route';
export default class AdminIndexesItemRoute extends Route {
model({ index_id }) {
- return this.modelFor('admin.indexes').find((item) => item.id === index_id);
+ return this.modelFor('admin.indexes').find(
+ (item) => item.name === index_id
+ );
}
}
diff --git a/app/services/meilisearch.js b/app/services/meilisearch.js
new file mode 100644
index 0000000..3d6c0e1
--- /dev/null
+++ b/app/services/meilisearch.js
@@ -0,0 +1,24 @@
+import Service from '@ember/service';
+import { MeiliSearch } from 'meilisearch';
+
+export default class MeilisearchService extends Service {
+ constructor() {
+ super();
+
+ const client = new MeiliSearch({
+ host: 'http://127.0.0.1:7700',
+ });
+
+ return new Proxy(this, {
+ get(target, prop, receiver) {
+ return function (...args) {
+ if (typeof client[prop] === 'function') {
+ return client[prop].apply(client, args);
+ }
+
+ return Reflect.get(target, prop, receiver);
+ };
+ },
+ });
+ }
+}
diff --git a/app/templates/admin/indexes.hbs b/app/templates/admin/indexes.hbs
index 5f91aeb..f61800e 100644
--- a/app/templates/admin/indexes.hbs
+++ b/app/templates/admin/indexes.hbs
@@ -8,7 +8,7 @@
{{item.name}}
diff --git a/package-lock.json b/package-lock.json
index 7b003e2..7202936 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -60,6 +60,7 @@
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-qunit": "^7.2.0",
"loader.js": "^4.7.0",
+ "meilisearch": "^0.25.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.5.1",
"qunit": "^2.18.0",
@@ -8918,6 +8919,15 @@
"sha.js": "^2.4.8"
}
},
+ "node_modules/cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "dev": true,
+ "dependencies": {
+ "node-fetch": "2.6.7"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -17476,6 +17486,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/meilisearch": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.25.0.tgz",
+ "integrity": "sha512-TSIJTh5lva7WHBaoG3arNYQXuIAQkcD3BY09h2nHhjHS/wzxWKJM45x5bEC67Grw8zXihVqqmWty4a4ps4S+tg==",
+ "dev": true,
+ "dependencies": {
+ "cross-fetch": "^3.1.5"
+ }
+ },
"node_modules/memory-fs": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
@@ -18036,12 +18055,23 @@
}
},
"node_modules/node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
"engines": {
"node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
"node_modules/node-int64": {
@@ -23025,6 +23055,12 @@
"node": ">=0.6"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true
+ },
"node_modules/tree-sync": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/tree-sync/-/tree-sync-1.4.0.tgz",
@@ -23925,6 +23961,12 @@
"defaults": "^1.0.3"
}
},
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "dev": true
+ },
"node_modules/webpack": {
"version": "5.70.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
@@ -24049,6 +24091,16 @@
"integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==",
"dev": true
},
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -31592,6 +31644,15 @@
"sha.js": "^2.4.8"
}
},
+ "cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "dev": true,
+ "requires": {
+ "node-fetch": "2.6.7"
+ }
+ },
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -38486,6 +38547,15 @@
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"dev": true
},
+ "meilisearch": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.25.0.tgz",
+ "integrity": "sha512-TSIJTh5lva7WHBaoG3arNYQXuIAQkcD3BY09h2nHhjHS/wzxWKJM45x5bEC67Grw8zXihVqqmWty4a4ps4S+tg==",
+ "dev": true,
+ "requires": {
+ "cross-fetch": "^3.1.5"
+ }
+ },
"memory-fs": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
@@ -38952,10 +39022,13 @@
}
},
"node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
- "dev": true
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
},
"node-int64": {
"version": "0.4.0",
@@ -42902,6 +42975,12 @@
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true
},
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true
+ },
"tree-sync": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/tree-sync/-/tree-sync-1.4.0.tgz",
@@ -43654,6 +43733,12 @@
"defaults": "^1.0.3"
}
},
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "dev": true
+ },
"webpack": {
"version": "5.70.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
@@ -43741,6 +43826,16 @@
"integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==",
"dev": true
},
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "dev": true,
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index 79fb4f3..129eeba 100644
--- a/package.json
+++ b/package.json
@@ -80,6 +80,7 @@
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-qunit": "^7.2.0",
"loader.js": "^4.7.0",
+ "meilisearch": "^0.25.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.5.1",
"qunit": "^2.18.0",
diff --git a/tests/unit/services/meilisearch-test.js b/tests/unit/services/meilisearch-test.js
new file mode 100644
index 0000000..4cf8077
--- /dev/null
+++ b/tests/unit/services/meilisearch-test.js
@@ -0,0 +1,12 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'ember-qunit';
+
+module('Unit | Service | meilisearch', function (hooks) {
+ setupTest(hooks);
+
+ // TODO: Replace this with your real tests.
+ test('it exists', function (assert) {
+ let service = this.owner.lookup('service:meilisearch');
+ assert.ok(service);
+ });
+});