## 概要 [Task3776: データ変換ツール(汚いデータ対応版)の作成](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3776) 綺麗なデータ対応版のレビュー指摘も合わせて修正。 一旦OMDS様よりいただいた1万件~のデータを処理できることは確認済みです。 実装コストとバグの入れ込みを懸念し、有効期限が"9999/12/31"のデータは最初にデータを積む段階で除外するようにしました。 ## レビューポイント - メールアドレス重複チェックについて、想定通りの重複対象を検索出来ているか。 - step3の1.アカウントとユーザが同じ場合 adminMainとuserEmailが重複していた場合に、重複していたユーザーは削除し、アカウントのみを残す(accountユーザーのroleとauthorIdは削除したuserに設定されていたものとする)処理は妥当か。 →accountのIFにroleとauthorIdを追加し、register側のcreateAccountで登録するようにしています。 ## 動作確認状況 - ローカルで確認(Account_transition_2024.1.19.csvで実施) 4つのJSONファイルができていることを確認。 Countryの場合の付け替えができていることを確認。 adminMainとemailが重複している場合の重複削除ができていることを確認。 ## 補足 - 登録ツールと共通のパラメータで動作するようにしました。 例) POST: localhost:8280/transfer Body: { "inputFilePath": "./data/" } 変換ツールの使い方としてはAccount_transition.jsonというファイルを見るようにしています。
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import { HttpException, HttpStatus, Injectable, Logger } from "@nestjs/common";
|
|
import { Context } from "../../common/log";
|
|
import {
|
|
LicensesFile,
|
|
WorktypesFile,
|
|
CardLicensesFile,
|
|
} from "../../common/types/types";
|
|
import { LicensesRepositoryService } from "../../repositories/licenses/licenses.repository.service";
|
|
import { WorktypesRepositoryService } from "../../repositories/worktypes/worktypes.repository.service";
|
|
import { makeErrorResponse } from "../../common/error/makeErrorResponse";
|
|
@Injectable()
|
|
export class RegisterService {
|
|
constructor(
|
|
private readonly licensesRepository: LicensesRepositoryService,
|
|
private readonly worktypesRepository: WorktypesRepositoryService
|
|
) {}
|
|
private readonly logger = new Logger(RegisterService.name);
|
|
|
|
/**
|
|
* Regist Data
|
|
* @param inputFilePath: string
|
|
*/
|
|
async registLicenseAndWorktypeData(
|
|
context: Context,
|
|
LicensesFiles: LicensesFile[],
|
|
WorktypesFiles: WorktypesFile[],
|
|
cardLicensesFiles: CardLicensesFile[]
|
|
): Promise<void> {
|
|
// パラメータ内容が長大なのでログには出さない
|
|
this.logger.log(
|
|
`[IN] [${context.getTrackingId()}] ${
|
|
this.registLicenseAndWorktypeData.name
|
|
}`
|
|
);
|
|
|
|
try {
|
|
this.logger.log("Licenses register start");
|
|
await this.licensesRepository.insertLicenses(context, LicensesFiles);
|
|
this.logger.log("Licenses register end");
|
|
|
|
this.logger.log("Worktypes register start");
|
|
await this.worktypesRepository.createWorktype(context, WorktypesFiles);
|
|
this.logger.log("Worktypes register end");
|
|
|
|
this.logger.log("CardLicenses register start");
|
|
await this.licensesRepository.insertCardLicenses(
|
|
context,
|
|
cardLicensesFiles
|
|
);
|
|
this.logger.log("CardLicenses register end");
|
|
} catch (e) {
|
|
this.logger.error(`[${context.getTrackingId()}] error=${e}`);
|
|
throw new HttpException(
|
|
makeErrorResponse("E009999"),
|
|
HttpStatus.INTERNAL_SERVER_ERROR
|
|
);
|
|
} finally {
|
|
this.logger.log(
|
|
`[OUT] [${context.getTrackingId()}] ${
|
|
this.registLicenseAndWorktypeData.name
|
|
}`
|
|
);
|
|
}
|
|
}
|
|
}
|