Files
threetwo-core-service/services/search.service.ts
2022-02-06 23:14:18 -08:00

97 lines
2.3 KiB
TypeScript

"use strict";
import {
Context,
Service,
ServiceBroker,
ServiceSchema,
Errors,
} from "moleculer";
import { DbMixin } from "../mixins/db.mixin";
import Comic from "../models/comic.model";
import { refineQuery } from "filename-parser";
import { each, filter, flatten, isEmpty, isNull } from "lodash";
import { eSClient } from "../models/comic.model";
import arrayToNDJSON from "array-to-ndjson";
const s = eSClient.helpers.msearch();
export default class SettingsService extends Service {
// @ts-ignore
public constructor(
public broker: ServiceBroker,
schema: ServiceSchema<{}> = { name: "search" }
) {
super(broker);
this.parseServiceSchema(
Service.mergeSchemas(
{
name: "search",
mixins: [DbMixin("comics", Comic)],
hooks: {},
actions: {
searchComic: {
rest: "POST /searchComic",
params: {},
timeout: 400000,
async handler(
ctx: Context<{
queryObjects: [],
elasticSearchQueries: [
{
elasticSearchQuery: object;
}
];
}>
) {
const flattenedQueryArray = flatten(
ctx.params.elasticSearchQueries
);
let queries = flattenedQueryArray
.map((item) => JSON.stringify(item))
.join("\n");
queries += "\n";
const { body } = await eSClient.msearch({
body: queries,
});
body.responses.forEach((match) => {
console.log(match.hits.hits);
})
return body.responses;
// return Comic.esSearch({
// query: elasticSearchQuery,
// }).then(function (results) {
// // results here
// const foo = results.body.hits.hits.map(
// (hit) => {
// const parsedFilename = refineQuery(
// hit._source.rawFileDetails.name
// );
// if (
// parsedFilename.searchParams
// .searchTerms.number ===
// parseInt(
// ctx.params.queryObject
// .issueNumber,
// 10
// )
// ) {
// return hit;
// }
// }
// );
// return filter(foo, null);
// });
},
},
},
methods: {},
},
schema
)
);
}
}