📚 Changes to CV model

This commit is contained in:
2024-04-14 00:25:41 -04:00
parent c6651cdd91
commit 94cb95f4bf
5 changed files with 45 additions and 135 deletions

View File

@@ -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: {

View File

@@ -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;

View File

@@ -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(

View File

@@ -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;

View File

@@ -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;