mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-30 19:07:58 +03:00
Oh wow...
This commit is contained in:
@@ -2,13 +2,13 @@ import { Router, NextFunction, Request, Response } from "express";
|
||||
import { FileUploadImportTypes } from "kamaitachi-common";
|
||||
import multer, { MulterError } from "multer";
|
||||
import Prudence from "prudence";
|
||||
import { Logger } from "winston";
|
||||
import { GetUserWithID } from "../../core/user-core";
|
||||
import db from "../../db";
|
||||
import CreateLogCtx from "../../logger";
|
||||
import prValidate from "../../middleware/prudence-validate";
|
||||
import { RequireLoggedIn } from "../../middleware/require-logged-in";
|
||||
import ScoreImportFatalError from "../../score-import/framework/core/score-import-error";
|
||||
import { ResolveFileUploadData } from "../../score-import/framework/parsing/file-upload";
|
||||
import { ResolveFileUploadData } from "../../score-import/framework/input-parsing/file-upload";
|
||||
import ScoreImportMain from "../../score-import/framework/score-import-main";
|
||||
import serverConfig from "../../server-config";
|
||||
|
||||
@@ -61,23 +61,13 @@ router.post(
|
||||
|
||||
try {
|
||||
let importType = req.body.importType as FileUploadImportTypes;
|
||||
let { iterable, idStrings, context, converter } = await ResolveFileUploadData(
|
||||
importType,
|
||||
req.file,
|
||||
req.body,
|
||||
logger
|
||||
);
|
||||
|
||||
const inputParser = async (logger: Logger) =>
|
||||
await ResolveFileUploadData(importType, req.file, req.body, logger);
|
||||
|
||||
const userDoc = await GetUserWithID(req.session.ktchi!.userID);
|
||||
|
||||
let importDocument = await ScoreImportMain(
|
||||
userDoc,
|
||||
importType,
|
||||
idStrings,
|
||||
iterable,
|
||||
converter,
|
||||
context
|
||||
);
|
||||
let importDocument = await ScoreImportMain(userDoc, importType, inputParser);
|
||||
} catch (err) {
|
||||
if (err instanceof ScoreImportFatalError) {
|
||||
return res.status(err.statusCode).json(err.data);
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
KTBlackImportDocument,
|
||||
PublicUserDocument,
|
||||
} from "kamaitachi-common";
|
||||
import { ConverterFunction } from "../../types";
|
||||
import { ImportInputParser } from "../../types";
|
||||
import { InsertQueue } from "./core/insert-score";
|
||||
import { ImportAllIterableData } from "./importing/score-importing";
|
||||
import { CreateImportLoggerAndID } from "./core/import-logger";
|
||||
@@ -12,20 +12,19 @@ import { CreateImportLoggerAndID } from "./core/import-logger";
|
||||
export default async function ScoreImportMain<D, C>(
|
||||
user: PublicUserDocument,
|
||||
importType: ImportTypes,
|
||||
idStrings: [IDStrings] & IDStrings[],
|
||||
iterableData: Iterable<D> | AsyncIterable<D>,
|
||||
ConverterFunction: ConverterFunction<D, C>,
|
||||
context: C
|
||||
InputParser: ImportInputParser<D, C>
|
||||
) {
|
||||
const timeStarted = Date.now();
|
||||
const { importID, logger } = CreateImportLoggerAndID(user, importType);
|
||||
|
||||
const { iterable, ConverterFunction, context, idStrings } = await InputParser(logger);
|
||||
|
||||
// @todo: scope logger properly
|
||||
logger.verbose("Received import request.");
|
||||
|
||||
let importInfo = await ImportAllIterableData(
|
||||
user.id,
|
||||
iterableData,
|
||||
iterable,
|
||||
ConverterFunction,
|
||||
context,
|
||||
logger
|
||||
@@ -49,6 +48,7 @@ export default async function ScoreImportMain<D, C>(
|
||||
importID,
|
||||
timeFinished: Date.now(),
|
||||
timeStarted,
|
||||
createdSessions: [], // @todo, see session ctor
|
||||
userID: user.id,
|
||||
};
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ function ParseEamusementCSV(
|
||||
return {
|
||||
iterable: data,
|
||||
context,
|
||||
converter: ConverterFn,
|
||||
ConverterFunction: ConverterFn,
|
||||
idStrings: [`iidx:${context.playtype}` as "iidx:SP" | "iidx:DP"],
|
||||
};
|
||||
}
|
||||
|
||||
+7
-3
@@ -52,11 +52,15 @@ export interface ConverterFunction<D, C> {
|
||||
(data: D, processContext: C, logger: Logger): Promise<ConverterFunctionReturns>;
|
||||
}
|
||||
|
||||
export interface ImportInputParser<D, C> {
|
||||
(logger: Logger): ParserFunctionReturns<D, C> | Promise<ParserFunctionReturns<D, C>>;
|
||||
}
|
||||
|
||||
export interface ParserFunctionReturnsSync<D, C> {
|
||||
iterable: Iterable<D>;
|
||||
idStrings: [IDStrings] & IDStrings[];
|
||||
context: C;
|
||||
converter: ConverterFunction<D, C>;
|
||||
ConverterFunction: ConverterFunction<D, C>;
|
||||
}
|
||||
|
||||
export type ParserFunctionReturns<D, C> =
|
||||
@@ -67,7 +71,7 @@ export interface ParserFunctionReturnsAsync<D, C> {
|
||||
iterable: AsyncIterable<D>;
|
||||
idStrings: [IDStrings] & IDStrings[];
|
||||
context: C;
|
||||
converter: ConverterFunction<D, C>;
|
||||
ConverterFunction: ConverterFunction<D, C>;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,7 +91,7 @@ export type DryScore<
|
||||
|
||||
export interface ScoreConverterInformation<D, C> {
|
||||
data: D[];
|
||||
converter: ConverterFunction<D, C>;
|
||||
ConverterFunction: ConverterFunction<D, C>;
|
||||
}
|
||||
|
||||
export interface OrphanedScore<T extends ImportTypes> {
|
||||
|
||||
Reference in New Issue
Block a user