🚽Implemented flushDB call
This commit is contained in:
@@ -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"]
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -71,67 +74,68 @@ export default class ImportService extends Service {
|
|||||||
},
|
},
|
||||||
processAndImportToDB: {
|
processAndImportToDB: {
|
||||||
rest: "POST /processAndImportToDB",
|
rest: "POST /processAndImportToDB",
|
||||||
|
|
||||||
params: {},
|
params: {},
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user