From 48188c2e6ac703f4941f479b763a7b1c271e8013 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 17 Feb 2023 16:08:35 +0800 Subject: [PATCH] feat(nc-gui): add fieldLengthValidator --- packages/nc-gui/utils/validation.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/nc-gui/utils/validation.ts b/packages/nc-gui/utils/validation.ts index 3524a1f928..fb1c50ea41 100644 --- a/packages/nc-gui/utils/validation.ts +++ b/packages/nc-gui/utils/validation.ts @@ -80,6 +80,32 @@ export const fieldRequiredValidator = () => { } } +export const fieldLengthValidator = (sqlClientType: string) => { + return { + validator: (rule: any, value: any) => { + const { t } = getI18n().global + + // no limit for sqlite but set as 255 + let fieldLengthLimit = 255 + + if (sqlClientType === 'mysql2' || sqlClientType === 'mysql') { + fieldLengthLimit = 64 + } else if (sqlClientType === 'pg') { + fieldLengthLimit = 59 + } else if (sqlClientType === 'mssql') { + fieldLengthLimit = 128 + } + + return new Promise((resolve, reject) => { + if (value?.length > fieldLengthLimit) { + reject(new Error(t('msg.error.columnNameExceedsCharacters', { value: fieldLengthLimit }))) + } + resolve(true) + }) + }, + } +} + export const importUrlValidator = { validator: (rule: any, value: any) => { return new Promise((resolve, reject) => {