🚽Implemented flushDB call

This commit is contained in:
2021-11-26 23:46:37 -08:00
parent a8d1254f4e
commit e8d21d4292

View File

@@ -22,8 +22,11 @@ import {
extractCoverFromFile, extractCoverFromFile,
unrarArchive, unrarArchive,
} from "../utils/uncompression.utils"; } from "../utils/uncompression.utils";
import {scrapeIssuesFromDOM} from "../utils/scraping.utils"; import { scrapeIssuesFromDOM } from "../utils/scraping.utils";
const ObjectId = require("mongoose").Types.ObjectId; const ObjectId = require("mongoose").Types.ObjectId;
import mongoose from "mongoose";
import fsExtra from "fs-extra";
import path from "path";
export default class ImportService extends Service { export default class ImportService extends Service {
public constructor( public constructor(
@@ -58,7 +61,7 @@ export default class ImportService extends Service {
) { ) {
return await walkFolder( return await walkFolder(
ctx.params.basePathToWalk, ctx.params.basePathToWalk,
[".cbz", ".cbr"], [".cbz", ".cbr"]
); );
}, },
}, },
@@ -76,62 +79,63 @@ export default class ImportService extends Service {
async handler( async handler(
ctx: Context<{ ctx: Context<{
extractionOptions: any; extractionOptions: any;
walkedFolders: walkedFolders: {
{ name: string;
name: string; path: string;
path: string; extension: string;
extension: string; containedIn: string;
containedIn: string; fileSize: number;
fileSize: number; isFile: boolean;
isFile: boolean; isLink: boolean;
isLink: boolean; };
};
}> }>
) { ) {
try { try {
const { extractionOptions, walkedFolders } = const { extractionOptions, walkedFolders } =
ctx.params; ctx.params;
let comicExists = await Comic.exists({ let comicExists = await Comic.exists({
"rawFileDetails.name": `${walkedFolders.name}`, "rawFileDetails.name": `${walkedFolders.name}`,
}); });
if (!comicExists) { if (!comicExists) {
// 1. Extract cover and cover metadata // 1. Extract cover and cover metadata
let comicBookCoverMetadata: let comicBookCoverMetadata:
| IExtractedComicBookCoverFile | IExtractedComicBookCoverFile
| IExtractComicBookCoverErrorResponse | IExtractComicBookCoverErrorResponse
| IExtractedComicBookCoverFile[] = | IExtractedComicBookCoverFile[] = await extractCoverFromFile(
await extractCoverFromFile( extractionOptions,
extractionOptions, walkedFolders
walkedFolders );
);
// 2. Add to mongo // 2. Add to mongo
const dbImportResult = const dbImportResult =
await this.broker.call( await this.broker.call(
"import.rawImportToDB", "import.rawImportToDB",
{ {
importStatus: { importStatus: {
isImported: true, isImported: true,
tagged: false, tagged: false,
matchedResult: { matchedResult: {
score: "0", score: "0",
},
},
rawFileDetails:
comicBookCoverMetadata,
sourcedMetadata: {
comicvine: {},
}, },
}, },
{} rawFileDetails:
); comicBookCoverMetadata,
sourcedMetadata: {
return { comicBookCoverMetadata, dbImportResult }; comicvine: {},
} else { },
logger.info( },
`Comic: \"${walkedFolders.name}\" already exists in the database` {}
); );
}
return {
comicBookCoverMetadata,
dbImportResult,
};
} else {
logger.info(
`Comic: \"${walkedFolders.name}\" already exists in the database`
);
}
} catch (error) { } catch (error) {
logger.error( logger.error(
"Error importing comic books", "Error importing comic books",
@@ -356,33 +360,61 @@ export default class ImportService extends Service {
return Promise.all(volumesMetadata); return Promise.all(volumesMetadata);
}, },
}, },
flushDB: {
rest: "POST /flushDB",
params: {},
async handler(ctx: Context<{}>) {
return await mongoose.connection.db
.dropCollection("comics")
.then((data) => {
logger.info(data);
const foo = fsExtra.emptyDirSync(
path.resolve("./userdata/covers")
);
const foo2 = fsExtra.emptyDirSync(
path.resolve("./userdata/expanded")
);
return { foo, foo2 };
})
.catch((error) => error);
},
},
scrapeIssueNamesFromDOM: { scrapeIssueNamesFromDOM: {
rest: "POST /scrapeIssueNamesFromDOM", rest: "POST /scrapeIssueNamesFromDOM",
params: {}, params: {},
async handler(ctx: Context<{ html: string}>) { async handler(ctx: Context<{ html: string }>) {
return scrapeIssuesFromDOM(ctx.params.html); return scrapeIssuesFromDOM(ctx.params.html);
} },
}, },
unrarArchive: { unrarArchive: {
rest: "POST /unrarArchive", rest: "POST /unrarArchive",
params: {}, params: {},
timeout: 10000, timeout: 10000,
async handler(ctx: Context<{ filePath: string, options: IExtractionOptions,}>) { async handler(
return await unrarArchive(ctx.params.filePath, ctx.params.options); ctx: Context<{
} filePath: string;
} options: IExtractionOptions;
}>
) {
return await unrarArchive(
ctx.params.filePath,
ctx.params.options
);
},
},
}, },
methods: { methods: {
getComicVineVolumeMetadata: (apiDetailURL) => getComicVineVolumeMetadata: (apiDetailURL) =>
new Promise((resolve, reject) => { new Promise((resolve, reject) => {
const options = { const options = {
headers: { headers: {
'User-Agent': 'ThreeTwo', "User-Agent": "ThreeTwo",
} },
} };
return https return https
.get( .get(
`${apiDetailURL}?api_key=${process.env.COMICVINE_API_KEY}&format=json&limit=1&offset=0&field_list=id,name,description,image,first_issue,last_issue,publisher,count_of_issues,character_credits,person_credits,aliases`, options, `${apiDetailURL}?api_key=${process.env.COMICVINE_API_KEY}&format=json&limit=1&offset=0&field_list=id,name,description,image,first_issue,last_issue,publisher,count_of_issues,character_credits,person_credits,aliases`,
options,
(resp) => { (resp) => {
let data = ""; let data = "";
resp.on("data", (chunk) => { resp.on("data", (chunk) => {
@@ -390,7 +422,10 @@ export default class ImportService extends Service {
}); });
resp.on("end", () => { resp.on("end", () => {
console.log(data, "HERE, BITCHES< HERE") console.log(
data,
"HERE, BITCHES< HERE"
);
const volumeInformation = const volumeInformation =
JSON.parse(data); JSON.parse(data);
resolve( resolve(
@@ -402,9 +437,8 @@ export default class ImportService extends Service {
.on("error", (err) => { .on("error", (err) => {
console.log("Error: " + err.message); console.log("Error: " + err.message);
reject(err); reject(err);
}) });
} }),
),
}, },
}, },
schema schema