diff --git a/models/comic.model.ts b/models/comic.model.ts index 7dbd06f..94725f6 100644 --- a/models/comic.model.ts +++ b/models/comic.model.ts @@ -1,6 +1,5 @@ const paginate = require("mongoose-paginate-v2"); const { Client } = require("@elastic/elasticsearch"); -import ComicVineMetadataSchema from "./comicvine.metadata.model"; import { mongoosastic } from "mongoosastic-ts"; const mongoose = require("mongoose"); import { @@ -56,6 +55,29 @@ const DirectConnectBundleSchema = mongoose.Schema({ size: String, type: {}, }); +const wantedSchema = new mongoose.Schema({ + source: { type: String, default: null }, + markEntireVolumeWanted: Boolean, + issues: { + type: [ + { + id: Number, + url: String, + image: { type: Array, default: [] }, + }, + ], + default: null, // Set default to null for issues + }, + volume: { + type: { + id: Number, + url: String, + image: { type: Array, default: [] }, + name: String, + }, + default: null, // Set default to null for volume + }, +}); const ComicSchema = mongoose.Schema( { @@ -72,7 +94,7 @@ const ComicSchema = mongoose.Schema( sourcedMetadata: { comicInfo: { type: mongoose.Schema.Types.Mixed, default: {} }, comicvine: { - type: ComicVineMetadataSchema, + type: Object, es_indexed: true, default: {}, }, @@ -102,11 +124,9 @@ const ComicSchema = mongoose.Schema( subtitle: { type: String, es_indexed: true }, }, }, + wanted: wantedSchema, + acquisition: { - source: { - wanted: Boolean, - name: String, - }, release: {}, directconnect: { downloads: { diff --git a/models/comicvine.metadata.model.ts b/models/comicvine.metadata.model.ts deleted file mode 100644 index 042a6a6..0000000 --- a/models/comicvine.metadata.model.ts +++ /dev/null @@ -1,95 +0,0 @@ -const mongoose = require("mongoose"); -const Things = mongoose.Schema({ - _id: false, - api_detail_url: String, - id: Number, - name: String, - site_detail_url: String, - count: String, -}); -const Issue = mongoose.Schema({ - _id: false, - api_detail_url: String, - id: Number, - name: String, - issue_number: String, -}); -const VolumeInformation = mongoose.Schema({ - _id: false, - aliases: [String], - api_detail_url: String, - characters: [Things], - concepts: [Things], - count_of_issues: String, - date_added: String, - date_last_updated: String, - deck: String, - description: String, - first_issue: Issue, - id: Number, - image: { - icon_url: String, - medium_url: String, - screen_url: String, - screen_large_url: String, - small_url: String, - super_url: String, - thumb_url: String, - tiny_url: String, - original_url: String, - image_tags: String, - }, - issues: [ - { - api_detail_url: String, - id: Number, - name: String, - issue_number: String, - site_detail_url: String, - }, - ], - last_issue: Issue, - locations: [Things], - name: String, - objects: [Things], - people: [Things], - publisher: { - api_detail_url: String, - id: Number, - name: String, - }, - site_detail_url: String, - start_year: String, -}); - -const ComicVineMetadataSchema = mongoose.Schema({ - _id: false, - aliases: [String], - api_detail_url: String, - has_staff_review: { type: mongoose.Schema.Types.Mixed }, - - cover_date: Date, - date_added: String, - date_last_updated: String, - deck: String, - description: String, - image: { - icon_url: String, - medium_url: String, - screen_url: String, - screen_large_url: String, - small_url: String, - super_url: String, - thumb_url: String, - tiny_url: String, - original_url: String, - image_tags: String, - }, - - id: Number, - name: String, - resource_type: String, - volumeInformation: VolumeInformation, -}); - -export default ComicVineMetadataSchema; diff --git a/services/library.service.ts b/services/library.service.ts index 904186d..9f8d937 100644 --- a/services/library.service.ts +++ b/services/library.service.ts @@ -117,7 +117,7 @@ export default class ImportService extends Service { filePath: ctx.params.filePath, comicObjectId: ctx.params.comicObjectId, options: ctx.params.options, - queueName: "uncompressFullArchive.async", + action: "uncompressFullArchive.async", description: `Job for uncompressing archive at ${ctx.params.filePath}`, }); }, @@ -260,11 +260,13 @@ export default class ImportService extends Service { rawFileDetails: { name: string; }; + wanted: { + issues: []; + volume: {}; + source: string; + markEntireVolumeWanted: Boolean; + }; acquisition: { - source: { - wanted: boolean; - name?: string; - }; directconnect: { downloads: []; }; @@ -275,27 +277,6 @@ export default class ImportService extends Service { try { let volumeDetails; const comicMetadata = ctx.params.payload; - // When an issue is added from the search CV feature - // we solicit volume information and add that to mongo - if ( - comicMetadata.sourcedMetadata.comicvine && - !isNil( - comicMetadata.sourcedMetadata.comicvine - .volume - ) - ) { - volumeDetails = await this.broker.call( - "comicvine.getVolumes", - { - volumeURI: - comicMetadata.sourcedMetadata - .comicvine.volume - .api_detail_url, - } - ); - comicMetadata.sourcedMetadata.comicvine.volumeInformation = - volumeDetails.results; - } console.log("Saving to Mongo..."); console.log( diff --git a/services/search.service.ts b/services/search.service.ts index c7aac6a..ec07ec8 100644 --- a/services/search.service.ts +++ b/services/search.service.ts @@ -100,12 +100,19 @@ export default class SettingsService extends Service { case "wanted": Object.assign(eSQuery, { bool: { - must: { - term: { - "acquisition.source.wanted": - true, + should: [ + { + exists: { + field: "wanted.issues", + }, }, - }, + { + exists: { + field: "wanted.volume", + }, + }, + ], + minimum_should_match: 1, }, }); break; diff --git a/services/torrentjobs.service.ts b/services/torrentjobs.service.ts index c6e5f51..5cfc5da 100644 --- a/services/torrentjobs.service.ts +++ b/services/torrentjobs.service.ts @@ -1,5 +1,4 @@ "use strict"; -import axios from "axios"; import { Context, Service, @@ -9,8 +8,6 @@ import { } from "moleculer"; import { DbMixin } from "../mixins/db.mixin"; import Comic from "../models/comic.model"; -const ObjectId = require("mongoose").Types.ObjectId; -import { isNil, isUndefined } from "lodash"; import BullMqMixin from "moleculer-bullmq"; const { MoleculerError } = require("moleculer").Errors;