From df74dc358c725c1166f2fd06b8499983a815b5f6 Mon Sep 17 00:00:00 2001 From: "maruyama.t" Date: Mon, 5 Feb 2024 02:27:43 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20731:=20=E6=97=A2=E5=AD=98API?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=88=E3=82=A2=E3=82=AB=E3=82=A6=E3=83=B3?= =?UTF-8?q?=E3=83=88=E6=83=85=E5=A0=B1=E5=8F=96=E5=BE=97API=E3=80=81?= =?UTF-8?q?=E3=82=A2=E3=82=AB=E3=82=A6=E3=83=B3=E3=83=88=E4=BD=9C=E6=88=90?= =?UTF-8?q?API=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3555: 既存API修正(アカウント情報取得API、アカウント作成API)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3555) Accountにauto_file_delete、file_retention_daysを追加 既存のテストでアカウントを作成している部分に項目の値を追加。 ## レビューポイント -entityの ``` @Column({ default: 30 }) ``` が必要かどうか。 ## UIの変更 なし ## 動作確認状況 - ローカルで確認 ## 補足 - 相談、参考資料などがあれば --- dictation_server/src/api/odms/openapi.json | 6 +++++- dictation_server/src/common/test/utility.ts | 11 ++++++++++- dictation_server/src/constants/index.ts | 6 ++++++ .../src/features/accounts/accounts.service.spec.ts | 2 ++ .../src/features/accounts/accounts.service.ts | 2 ++ dictation_server/src/features/accounts/types/types.ts | 6 ++++++ .../src/features/files/test/files.service.mock.ts | 3 +++ .../accounts/accounts.repository.service.ts | 1 - .../repositories/accounts/entity/account.entity.ts | 7 +++++++ 9 files changed, 41 insertions(+), 3 deletions(-) diff --git a/dictation_server/src/api/odms/openapi.json b/dictation_server/src/api/odms/openapi.json index 0c49633..ce07f3b 100644 --- a/dictation_server/src/api/odms/openapi.json +++ b/dictation_server/src/api/odms/openapi.json @@ -3819,6 +3819,8 @@ "country": { "type": "string" }, "parentAccountId": { "type": "number" }, "delegationPermission": { "type": "boolean" }, + "autoFileDelete": { "type": "boolean" }, + "fileRetentionDays": { "type": "number" }, "primaryAdminUserId": { "type": "number" }, "secondryAdminUserId": { "type": "number" }, "parentAccountName": { "type": "string" } @@ -3828,7 +3830,9 @@ "companyName", "tier", "country", - "delegationPermission" + "delegationPermission", + "autoFileDelete", + "fileRetentionDays" ] }, "GetMyAccountResponse": { diff --git a/dictation_server/src/common/test/utility.ts b/dictation_server/src/common/test/utility.ts index 60a6a41..6fb99ab 100644 --- a/dictation_server/src/common/test/utility.ts +++ b/dictation_server/src/common/test/utility.ts @@ -2,7 +2,11 @@ import { v4 as uuidv4 } from 'uuid'; import { DataSource } from 'typeorm'; import { User, UserArchive } from '../../repositories/users/entity/user.entity'; import { Account } from '../../repositories/accounts/entity/account.entity'; -import { ADMIN_ROLES, USER_ROLES } from '../../constants'; +import { + ADMIN_ROLES, + FILE_RETENTION_DAYS_DEFAULT, + USER_ROLES, +} from '../../constants'; import { License } from '../../repositories/licenses/entity/license.entity'; type InitialTestDBState = { @@ -162,6 +166,9 @@ export const makeTestAccount = async ( parent_account_id: d?.parent_account_id ?? undefined, country: d?.country ?? 'US', delegation_permission: d?.delegation_permission ?? false, + auto_file_delete: d?.auto_file_delete ?? false, + file_retention_days: + d?.file_retention_days ?? FILE_RETENTION_DAYS_DEFAULT, locked: d?.locked ?? false, company_name: d?.company_name ?? 'test inc.', verified: d?.verified ?? true, @@ -252,6 +259,8 @@ export const makeTestSimpleAccount = async ( parent_account_id: d?.parent_account_id ?? undefined, country: d?.country ?? 'US', delegation_permission: d?.delegation_permission ?? false, + auto_file_delete: d?.auto_file_delete ?? false, + file_retention_days: d?.file_retention_days ?? FILE_RETENTION_DAYS_DEFAULT, locked: d?.locked ?? false, company_name: d?.company_name ?? 'test inc.', verified: d?.verified ?? true, diff --git a/dictation_server/src/constants/index.ts b/dictation_server/src/constants/index.ts index 6657210..979f864 100644 --- a/dictation_server/src/constants/index.ts +++ b/dictation_server/src/constants/index.ts @@ -321,3 +321,9 @@ export const USER_LICENSE_STATUS = { ALLOCATED: 'allocated', EXPIRED: 'expired', } as const; + +/** + * ファイル保持日数の初期値 + * @const {number} + */ +export const FILE_RETENTION_DAYS_DEFAULT = 30; diff --git a/dictation_server/src/features/accounts/accounts.service.spec.ts b/dictation_server/src/features/accounts/accounts.service.spec.ts index 4bfd687..75555a9 100644 --- a/dictation_server/src/features/accounts/accounts.service.spec.ts +++ b/dictation_server/src/features/accounts/accounts.service.spec.ts @@ -166,6 +166,8 @@ describe('createAccount', () => { expect(account?.country).toBe(country); expect(account?.parent_account_id).toBe(dealerAccountId); expect(account?.tier).toBe(TIERS.TIER5); + expect(account?.auto_file_delete).toBe(false); + expect(account?.file_retention_days).toBe(30); expect(account?.primary_admin_user_id).toBe(user?.id); expect(account?.secondary_admin_user_id).toBe(null); expect(user?.accepted_eula_version).toBe(acceptedEulaVersion); diff --git a/dictation_server/src/features/accounts/accounts.service.ts b/dictation_server/src/features/accounts/accounts.service.ts index 50273e6..92b6c77 100644 --- a/dictation_server/src/features/accounts/accounts.service.ts +++ b/dictation_server/src/features/accounts/accounts.service.ts @@ -452,6 +452,8 @@ export class AccountsService { country: accountInfo.country, parentAccountId: accountInfo.parent_account_id ?? undefined, delegationPermission: accountInfo.delegation_permission, + autoFileDelete: accountInfo.auto_file_delete, + fileRetentionDays: accountInfo.file_retention_days, primaryAdminUserId: accountInfo.primary_admin_user_id ?? undefined, secondryAdminUserId: accountInfo.secondary_admin_user_id ?? undefined, parentAccountName: parentInfo ? parentInfo.company_name : undefined, diff --git a/dictation_server/src/features/accounts/types/types.ts b/dictation_server/src/features/accounts/types/types.ts index 2600295..08217f8 100644 --- a/dictation_server/src/features/accounts/types/types.ts +++ b/dictation_server/src/features/accounts/types/types.ts @@ -422,6 +422,12 @@ export class Account { @ApiProperty() delegationPermission: boolean; + @ApiProperty() + autoFileDelete: boolean; + + @ApiProperty() + fileRetentionDays: number; + @ApiProperty({ required: false }) primaryAdminUserId?: number; diff --git a/dictation_server/src/features/files/test/files.service.mock.ts b/dictation_server/src/features/files/test/files.service.mock.ts index 8e9ca51..1505888 100644 --- a/dictation_server/src/features/files/test/files.service.mock.ts +++ b/dictation_server/src/features/files/test/files.service.mock.ts @@ -8,6 +8,7 @@ import { Task } from '../../../repositories/tasks/entity/task.entity'; import { TemplateFilesRepositoryService } from '../../../repositories/template_files/template_files.repository.service'; import { NotificationhubService } from '../../../gateways/notificationhub/notificationhub.service'; import { UserGroupsRepositoryService } from '../../../repositories/user_groups/user_groups.repository.service'; +import { FILE_RETENTION_DAYS_DEFAULT } from '../../../constants'; export type BlobstorageServiceMockValue = { createContainer: void | Error; @@ -160,6 +161,8 @@ export const makeDefaultUsersRepositoryMockValue = tier: 5, country: '', delegation_permission: true, + auto_file_delete: false, + file_retention_days: FILE_RETENTION_DAYS_DEFAULT, locked: false, company_name: '', verified: true, diff --git a/dictation_server/src/repositories/accounts/accounts.repository.service.ts b/dictation_server/src/repositories/accounts/accounts.repository.service.ts index 2832672..8252ec1 100644 --- a/dictation_server/src/repositories/accounts/accounts.repository.service.ts +++ b/dictation_server/src/repositories/accounts/accounts.repository.service.ts @@ -169,7 +169,6 @@ export class AccountsRepositoryService { this.isCommentOut, context, ); - // 作成されたAccountのIDを使用してユーザーを作成 const user = new User(); { diff --git a/dictation_server/src/repositories/accounts/entity/account.entity.ts b/dictation_server/src/repositories/accounts/entity/account.entity.ts index 3c40a03..255c9c1 100644 --- a/dictation_server/src/repositories/accounts/entity/account.entity.ts +++ b/dictation_server/src/repositories/accounts/entity/account.entity.ts @@ -1,4 +1,5 @@ import { bigintTransformer } from '../../../common/entity'; +import { FILE_RETENTION_DAYS_DEFAULT } from '../../../constants'; import { User } from '../../../repositories/users/entity/user.entity'; import { Entity, @@ -44,6 +45,12 @@ export class Account { @Column({ nullable: true, type: 'bigint', transformer: bigintTransformer }) active_worktype_id: number | null; + @Column({ default: false }) + auto_file_delete: boolean; + + @Column({ default: FILE_RETENTION_DAYS_DEFAULT }) + file_retention_days: number; + @Column({ nullable: true, type: 'datetime' }) deleted_at: Date | null;