From f1facf1f2cc3f6ab6d9bb44f0277d7f2876a0d86 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 28 Feb 2025 12:26:30 +0900 Subject: [PATCH] improvement: increase secret v2 reminder note max length --- ...ncrease-secret-reminder-note-max-length.ts | 35 +++++++++++++++++++ backend/src/server/routes/v3/secret-router.ts | 21 +++++++++-- 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 backend/src/db/migrations/20250228022604_increase-secret-reminder-note-max-length.ts diff --git a/backend/src/db/migrations/20250228022604_increase-secret-reminder-note-max-length.ts b/backend/src/db/migrations/20250228022604_increase-secret-reminder-note-max-length.ts new file mode 100644 index 000000000..f0ab5f92e --- /dev/null +++ b/backend/src/db/migrations/20250228022604_increase-secret-reminder-note-max-length.ts @@ -0,0 +1,35 @@ +import { Knex } from "knex"; + +import { TableName } from "@app/db/schemas"; + +export async function up(knex: Knex): Promise { + for await (const tableName of [ + TableName.SecretV2, + TableName.SecretVersionV2, + TableName.SecretApprovalRequestSecretV2 + ]) { + const hasReminderNoteCol = await knex.schema.hasColumn(tableName, "reminderNote"); + + if (hasReminderNoteCol) { + await knex.schema.alterTable(tableName, (t) => { + t.string("reminderNote", 1024).alter(); + }); + } + } +} + +export async function down(knex: Knex): Promise { + for await (const tableName of [ + TableName.SecretV2, + TableName.SecretVersionV2, + TableName.SecretApprovalRequestSecretV2 + ]) { + const hasReminderNoteCol = await knex.schema.hasColumn(tableName, "reminderNote"); + + if (hasReminderNoteCol) { + await knex.schema.alterTable(tableName, (t) => { + t.string("reminderNote").alter(); + }); + } + } +} diff --git a/backend/src/server/routes/v3/secret-router.ts b/backend/src/server/routes/v3/secret-router.ts index 5dbe3c93b..a5dc39485 100644 --- a/backend/src/server/routes/v3/secret-router.ts +++ b/backend/src/server/routes/v3/secret-router.ts @@ -537,7 +537,12 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { .optional() .nullable() .describe(RAW_SECRETS.CREATE.secretReminderRepeatDays), - secretReminderNote: z.string().optional().nullable().describe(RAW_SECRETS.CREATE.secretReminderNote) + secretReminderNote: z + .string() + .max(1024, "Secret reminder note cannot exceed 1024 characters") + .optional() + .nullable() + .describe(RAW_SECRETS.CREATE.secretReminderNote) }), response: { 200: z.union([ @@ -640,7 +645,12 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { tagIds: z.string().array().optional().describe(RAW_SECRETS.UPDATE.tagIds), metadata: z.record(z.string()).optional(), secretMetadata: ResourceMetadataSchema.optional(), - secretReminderNote: z.string().optional().nullable().describe(RAW_SECRETS.UPDATE.secretReminderNote), + secretReminderNote: z + .string() + .max(1024, "Secret reminder note cannot exceed 1024 characters") + .optional() + .nullable() + .describe(RAW_SECRETS.UPDATE.secretReminderNote), secretReminderRepeatDays: z .number() .optional() @@ -2053,7 +2063,12 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { skipMultilineEncoding: z.boolean().optional().describe(RAW_SECRETS.UPDATE.skipMultilineEncoding), newSecretName: SecretNameSchema.optional().describe(RAW_SECRETS.UPDATE.newSecretName), tagIds: z.string().array().optional().describe(RAW_SECRETS.UPDATE.tagIds), - secretReminderNote: z.string().optional().nullable().describe(RAW_SECRETS.UPDATE.secretReminderNote), + secretReminderNote: z + .string() + .max(1024, "Secret reminder note cannot exceed 1024 characters") + .optional() + .nullable() + .describe(RAW_SECRETS.UPDATE.secretReminderNote), secretMetadata: ResourceMetadataSchema.optional(), secretReminderRepeatDays: z .number()