From bcb4ac2f2ca3747ee345932e0579a74983678f3b Mon Sep 17 00:00:00 2001 From: zkldi Date: Sat, 10 Apr 2021 00:30:59 +0100 Subject: [PATCH] Last one out, get the lights. --- server/package-lock.json | 4 +-- server/src/logger.ts | 16 ++++++++---- .../framework/score-import-main.ts | 26 ++++++++++++++----- server/src/types.ts | 3 ++- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 8a00bfd58..6287372fd 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -3960,7 +3960,7 @@ }, "node_modules/kamaitachi-common": { "version": "0.1.0", - "resolved": "git+ssh://git@github.com/zkldi/Kamaitachi-common.git#5348ee725a8c30ed18fd73673d20640068f37422", + "resolved": "git+ssh://git@github.com/zkldi/Kamaitachi-common.git#6a576ae6ff465d0a2c5d2a6657ac642611e0f331", "license": "ISC", "dependencies": { "monk": "^7.3.3" @@ -12027,7 +12027,7 @@ } }, "kamaitachi-common": { - "version": "git+ssh://git@github.com/zkldi/Kamaitachi-common.git#5348ee725a8c30ed18fd73673d20640068f37422", + "version": "git+ssh://git@github.com/zkldi/Kamaitachi-common.git#6a576ae6ff465d0a2c5d2a6657ac642611e0f331", "from": "kamaitachi-common@git+https://github.com/zkldi/Kamaitachi-common.git", "requires": { "monk": "^7.3.3" diff --git a/server/src/logger.ts b/server/src/logger.ts index 15bc424a5..8ec25dc30 100644 --- a/server/src/logger.ts +++ b/server/src/logger.ts @@ -1,6 +1,8 @@ -import winston, { format, transports } from "winston"; +import winston, { format, Logger, transports } from "winston"; import fs from "fs"; import path from "path"; +import { PublicUserDocument } from "kamaitachi-common"; +import { FormatUserDoc } from "./core/user-core"; const level = process.env.LOG_LEVEL ?? "info"; @@ -8,10 +10,10 @@ const IN_PROD = process.env.NODE_ENV === "production"; const IN_TESTING = process.env.NODE_ENV === "test"; const ktblackPrintf = format.printf( - ({ level, message, context, timestamp, ...meta }) => - `${timestamp} [${context ?? "ktblack-root"}] ${level}: ${message}${ - meta.length ? `, ${JSON.stringify(meta)}` : "" - }` + ({ level, message, context = "ktblack-root", timestamp, ...meta }) => + `${timestamp} [${ + Array.isArray(context) ? context.join(" | ") : context + }] ${level}: ${message}${meta.length ? `, ${JSON.stringify(meta)}` : ""}` ); const defaultFormatRoute = format.combine( @@ -70,4 +72,8 @@ function createLogCtx(context: string) { return logger.child({ context }); } +export function createScoreLogger(user: PublicUserDocument, importID: string) { + return logger.child({ context: ["Score Import", FormatUserDoc(user)], importID }); +} + export default createLogCtx; diff --git a/server/src/score-import/framework/score-import-main.ts b/server/src/score-import/framework/score-import-main.ts index 46340e1a7..80f749ce4 100644 --- a/server/src/score-import/framework/score-import-main.ts +++ b/server/src/score-import/framework/score-import-main.ts @@ -1,17 +1,28 @@ -import { ImportDocument, PublicUserDocument } from "kamaitachi-common"; -import createLogCtx from "../../logger"; +import { + IDStrings, + ImportDocument, + ImportTypes, + KTBlackImportDocument, + PublicUserDocument, +} from "kamaitachi-common"; +import createLogCtx, { createScoreLogger } from "../../logger"; import { ConverterFunction } from "../../types"; import { InsertQueue } from "./core/insert-score"; import { ProcessIterableData } from "./processing/score-processor"; - -const logger = createLogCtx("score-import-main.ts"); +import crypto from "crypto"; export default async function ScoreImportMain( user: PublicUserDocument, + importType: ImportTypes, + idStrings: IDStrings[], iterableData: Iterable | AsyncIterable, ConverterFunction: ConverterFunction, context: C ) { + const importID = crypto.randomBytes(20).toString("hex"); + + const logger = createScoreLogger(user, importID); + // @todo: scope logger properly logger.verbose("Received import request."); @@ -27,7 +38,8 @@ export default async function ScoreImportMain( // @todo // Create import document - const ImportDocument: = { - - } + const ImportDocument: KTBlackImportDocument = { + importType, + idStrings: idStrings, + }; } diff --git a/server/src/types.ts b/server/src/types.ts index 0a258ecde..b5cbd0dbc 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -7,6 +7,7 @@ import { ScoreDocument, SongDocument, } from "kamaitachi-common"; +import { Logger } from "winston"; import { ConverterFailure } from "./score-import/framework/core/converter-errors"; import { Converters } from "./score-import/import-types/import-types"; @@ -48,7 +49,7 @@ export type ConverterFnReturn = ConverterFailure | ConverterFnSuccessReturn | nu export type ConverterFunctionReturns = ConverterFnReturn | ConverterFnReturn[]; export interface ConverterFunction { - (data: D, processContext: C): Promise; + (data: D, processContext: C, logger: Logger): Promise; } export interface ParserFunctionReturnsSync {