From 25f5abe12e8599644fc1deab69805098cad06547 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 8 May 2023 15:57:09 +0530 Subject: [PATCH] fix: current timestamp related corrections Signed-off-by: Pranav C --- packages/nc-gui/components.d.ts | 116 ++++++++++++++++++ .../src/db/sql-client/lib/KnexClient.ts | 3 +- 2 files changed, 118 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/components.d.ts b/packages/nc-gui/components.d.ts index 87b0b534c0..34d399c7d5 100644 --- a/packages/nc-gui/components.d.ts +++ b/packages/nc-gui/components.d.ts @@ -77,7 +77,9 @@ declare module '@vue/runtime-core' { CilFullscreen: typeof import('~icons/cil/fullscreen')['default'] CilFullscreenExit: typeof import('~icons/cil/fullscreen-exit')['default'] ClarityColorPickerSolid: typeof import('~icons/clarity/color-picker-solid')['default'] + ClarityImageLine: typeof import('~icons/clarity/image-line')['default'] ClaritySuccessLine: typeof import('~icons/clarity/success-line')['default'] + EvaEmailOutline: typeof import('~icons/eva/email-outline')['default'] IcBaselineMoreVert: typeof import('~icons/ic/baseline-more-vert')['default'] IcOutlineInsertDriveFile: typeof import('~icons/ic/outline-insert-drive-file')['default'] IcRoundEdit: typeof import('~icons/ic/round-edit')['default'] @@ -88,8 +90,10 @@ declare module '@vue/runtime-core' { LogosGoogleGmail: typeof import('~icons/logos/google-gmail')['default'] LogosMysqlIcon: typeof import('~icons/logos/mysql-icon')['default'] LogosPostgresql: typeof import('~icons/logos/postgresql')['default'] + LogosRedditIcon: typeof import('~icons/logos/reddit-icon')['default'] LogosSnowflakeIcon: typeof import('~icons/logos/snowflake-icon')['default'] LogosSwagger: typeof import('~icons/logos/swagger')['default'] + MaterialSymbolsAccountTreeRounded: typeof import('~icons/material-symbols/account-tree-rounded')['default'] MaterialSymbolsArrowCircleLeftRounded: typeof import('~icons/material-symbols/arrow-circle-left-rounded')['default'] MaterialSymbolsArrowCircleRightRounded: typeof import('~icons/material-symbols/arrow-circle-right-rounded')['default'] MaterialSymbolsAttachFile: typeof import('~icons/material-symbols/attach-file')['default'] @@ -106,42 +110,154 @@ declare module '@vue/runtime-core' { MaterialSymbolsVisibility: typeof import('~icons/material-symbols/visibility')['default'] MaterialSymbolsVisibilityOff: typeof import('~icons/material-symbols/visibility-off')['default'] MaterialSymbolsWarning: typeof import('~icons/material-symbols/warning')['default'] + MdiAccount: typeof import('~icons/mdi/account')['default'] + MdiAccountCircle: typeof import('~icons/mdi/account-circle')['default'] + MdiAccountCircleOutline: typeof import('~icons/mdi/account-circle-outline')['default'] + MdiAccountOutline: typeof import('~icons/mdi/account-outline')['default'] + MdiAccountPlusOutline: typeof import('~icons/mdi/account-plus-outline')['default'] MdiAccountSupervisorOutline: typeof import('~icons/mdi/account-supervisor-outline')['default'] + MdiAdd: typeof import('~icons/mdi/add')['default'] MdiAlpha: typeof import('~icons/mdi/alpha')['default'] + MdiAlphaA: typeof import('~icons/mdi/alpha-a')['default'] + MdiApi: typeof import('~icons/mdi/api')['default'] MdiAppleKeyboardShift: typeof import('~icons/mdi/apple-keyboard-shift')['default'] + MdiArrowCollapse: typeof import('~icons/mdi/arrow-collapse')['default'] MdiArrowDownDropCircle: typeof import('~icons/mdi/arrow-down-drop-circle')['default'] MdiArrowDownDropCircleOutline: typeof import('~icons/mdi/arrow-down-drop-circle-outline')['default'] + MdiArrowExpand: typeof import('~icons/mdi/arrow-expand')['default'] MdiArrowLeftBold: typeof import('~icons/mdi/arrow-left-bold')['default'] MdiArrowULeftBottom: typeof import('~icons/mdi/arrow-u-left-bottom')['default'] + MdiAt: typeof import('~icons/mdi/at')['default'] + MdiBackburger: typeof import('~icons/mdi/backburger')['default'] + MdiBookOpenOutline: typeof import('~icons/mdi/book-open-outline')['default'] MdiBugOutline: typeof import('~icons/mdi/bug-outline')['default'] + MdiCalculator: typeof import('~icons/mdi/calculator')['default'] + MdiCalendarMonth: typeof import('~icons/mdi/calendar-month')['default'] MdiCardsHeart: typeof import('~icons/mdi/cards-heart')['default'] MdiCellphoneMessage: typeof import('~icons/mdi/cellphone-message')['default'] MdiChat: typeof import('~icons/mdi/chat')['default'] MdiChatProcessingOutline: typeof import('~icons/mdi/chat-processing-outline')['default'] + MdiCheck: typeof import('~icons/mdi/check')['default'] + MdiChevronDown: typeof import('~icons/mdi/chevron-down')['default'] + MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default'] + MdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] MdiClose: typeof import('~icons/mdi/close')['default'] + MdiCloseBox: typeof import('~icons/mdi/close-box')['default'] + MdiCloseCircle: typeof import('~icons/mdi/close-circle')['default'] + MdiCloseCircleOutline: typeof import('~icons/mdi/close-circle-outline')['default'] + MdiCloseThick: typeof import('~icons/mdi/close-thick')['default'] + MdiCodeJson: typeof import('~icons/mdi/code-json')['default'] + MdiCodeTags: typeof import('~icons/mdi/code-tags')['default'] + MdiCog: typeof import('~icons/mdi/cog')['default'] + MdiCommentTextOutline: typeof import('~icons/mdi/comment-text-outline')['default'] + MdiContentCopy: typeof import('~icons/mdi/content-copy')['default'] + MdiContentSave: typeof import('~icons/mdi/content-save')['default'] + MdiContentSaveEdit: typeof import('~icons/mdi/content-save-edit')['default'] MdiCurrencyUsd: typeof import('~icons/mdi/currency-usd')['default'] + MdiDatabaseAlert: typeof import('~icons/mdi/database-alert')['default'] + MdiDatabaseLockOutline: typeof import('~icons/mdi/database-lock-outline')['default'] + MdiDatabasePlusOutline: typeof import('~icons/mdi/database-plus-outline')['default'] + MdiDatabaseSync: typeof import('~icons/mdi/database-sync')['default'] + MdiDelete: typeof import('~icons/mdi/delete')['default'] + MdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default'] MdiDiscord: typeof import('~icons/mdi/discord')['default'] + MdiDotsHorizontal: typeof import('~icons/mdi/dots-horizontal')['default'] + MdiDotsVertical: typeof import('~icons/mdi/dots-vertical')['default'] + MdiDownload: typeof import('~icons/mdi/download')['default'] + MdiDownloadOutline: typeof import('~icons/mdi/download-outline')['default'] + MdiDrag: typeof import('~icons/mdi/drag')['default'] + MdiDragVertical: typeof import('~icons/mdi/drag-vertical')['default'] + MdiDramaMasks: typeof import('~icons/mdi/drama-masks')['default'] MdiEditOutline: typeof import('~icons/mdi/edit-outline')['default'] + MdiEmail: typeof import('~icons/mdi/email')['default'] + MdiEmailArrowRightOutline: typeof import('~icons/mdi/email-arrow-right-outline')['default'] + MdiExitToApp: typeof import('~icons/mdi/exit-to-app')['default'] + MdiExport: typeof import('~icons/mdi/export')['default'] + MdiEyeCircleOutline: typeof import('~icons/mdi/eye-circle-outline')['default'] + MdiEyeOffOutline: typeof import('~icons/mdi/eye-off-outline')['default'] + MdiFileDocumentOutline: typeof import('~icons/mdi/file-document-outline')['default'] + MdiFileExcel: typeof import('~icons/mdi/file-excel')['default'] + MdiFileEyeOutline: typeof import('~icons/mdi/file-eye-outline')['default'] + MdiFileImageBox: typeof import('~icons/mdi/file-image-box')['default'] + MdiFilePlusOutline: typeof import('~icons/mdi/file-plus-outline')['default'] + MdiFileReplaceOutline: typeof import('~icons/mdi/file-replace-outline')['default'] + MdiFileUploadOutline: typeof import('~icons/mdi/file-upload-outline')['default'] + MdiFilterOutline: typeof import('~icons/mdi/filter-outline')['default'] MdiFlag: typeof import('~icons/mdi/flag')['default'] + MdiFolder: typeof import('~icons/mdi/folder')['default'] + MdiFunction: typeof import('~icons/mdi/function')['default'] MdiGestureDoubleTap: typeof import('~icons/mdi/gesture-double-tap')['default'] + MdiGithub: typeof import('~icons/mdi/github')['default'] + MdiGraphOutline: typeof import('~icons/mdi/graph-outline')['default'] MdiHeart: typeof import('~icons/mdi/heart')['default'] MdiHistory: typeof import('~icons/mdi/history')['default'] + MdiHook: typeof import('~icons/mdi/hook')['default'] + MdiInformation: typeof import('~icons/mdi/information')['default'] + MdiJson: typeof import('~icons/mdi/json')['default'] + MdiKey: typeof import('~icons/mdi/key')['default'] + MdiKeyboard: typeof import('~icons/mdi/keyboard')['default'] + MdiKeyboardReturn: typeof import('~icons/mdi/keyboard-return')['default'] + MdiKeyChange: typeof import('~icons/mdi/key-change')['default'] MdiKeyStar: typeof import('~icons/mdi/key-star')['default'] + MdiLink: typeof import('~icons/mdi/link')['default'] + MdiLinkVariant: typeof import('~icons/mdi/link-variant')['default'] + MdiLinkVariantRemove: typeof import('~icons/mdi/link-variant-remove')['default'] + MdiLoading: typeof import('~icons/mdi/loading')['default'] + MdiLogin: typeof import('~icons/mdi/login')['default'] + MdiLogout: typeof import('~icons/mdi/logout')['default'] + MdiMagnify: typeof import('~icons/mdi/magnify')['default'] + MdiMenu: typeof import('~icons/mdi/menu')['default'] MdiMenuDown: typeof import('~icons/mdi/menu-down')['default'] MdiMicrosoftTeams: typeof import('~icons/mdi/microsoft-teams')['default'] + MdiMinusCircleOutline: typeof import('~icons/mdi/minus-circle-outline')['default'] MdiMoonFull: typeof import('~icons/mdi/moon-full')['default'] + MdiNumeric: typeof import('~icons/mdi/numeric')['default'] + MdiOpenInNew: typeof import('~icons/mdi/open-in-new')['default'] + MdiPencil: typeof import('~icons/mdi/pencil')['default'] + MdiPlus: typeof import('~icons/mdi/plus')['default'] + MdiPlusCircleOutline: typeof import('~icons/mdi/plus-circle-outline')['default'] + MdiPlusOutline: typeof import('~icons/mdi/plus-outline')['default'] + MdiPlusThick: typeof import('~icons/mdi/plus-thick')['default'] + MdiReddit: typeof import('~icons/mdi/reddit')['default'] + MdiRefresh: typeof import('~icons/mdi/refresh')['default'] + MdiReload: typeof import('~icons/mdi/reload')['default'] MdiRocketLaunchOutline: typeof import('~icons/mdi/rocket-launch-outline')['default'] + MdiScriptTextKeyOutline: typeof import('~icons/mdi/script-text-key-outline')['default'] MdiScriptTextOutline: typeof import('~icons/mdi/script-text-outline')['default'] MdiShieldKeyOutline: typeof import('~icons/mdi/shield-key-outline')['default'] MdiSlack: typeof import('~icons/mdi/slack')['default'] + MdiSort: typeof import('~icons/mdi/sort')['default'] + MdiSortAscending: typeof import('~icons/mdi/sort-ascending')['default'] + MdiSortDescending: typeof import('~icons/mdi/sort-descending')['default'] MdiStar: typeof import('~icons/mdi/star')['default'] MdiStarOutline: typeof import('~icons/mdi/star-outline')['default'] + MdiStorefrontOutline: typeof import('~icons/mdi/storefront-outline')['default'] + MdiTable: typeof import('~icons/mdi/table')['default'] + MdiTableColumnPlusAfter: typeof import('~icons/mdi/table-column-plus-after')['default'] + MdiTableColumnPlusBefore: typeof import('~icons/mdi/table-column-plus-before')['default'] + MdiTableKey: typeof import('~icons/mdi/table-key')['default'] + MdiTableLarge: typeof import('~icons/mdi/table-large')['default'] MdiTestTube: typeof import('~icons/mdi/test-tube')['default'] + MdiText: typeof import('~icons/mdi/text')['default'] MdiThumbUp: typeof import('~icons/mdi/thumb-up')['default'] + MdiTrashCan: typeof import('~icons/mdi/trash-can')['default'] + MdiTwitter: typeof import('~icons/mdi/twitter')['default'] + MdiUpload: typeof import('~icons/mdi/upload')['default'] + MdiUploadOutline: typeof import('~icons/mdi/upload-outline')['default'] + MdiViewListOutline: typeof import('~icons/mdi/view-list-outline')['default'] + MdiWarning: typeof import('~icons/mdi/warning')['default'] MdiWhatsapp: typeof import('~icons/mdi/whatsapp')['default'] + MdiXml: typeof import('~icons/mdi/xml')['default'] MiCircleWarning: typeof import('~icons/mi/circle-warning')['default'] + NcIconsRowHeightExtraTall: typeof import('~icons/nc-icons/row-height-extra-tall')['default'] + NcIconsRowHeightMedium: typeof import('~icons/nc-icons/row-height-medium')['default'] + NcIconsRowHeightShort: typeof import('~icons/nc-icons/row-height-short')['default'] + NcIconsRowHeightTall: typeof import('~icons/nc-icons/row-height-tall')['default'] + PhCloudLightningDuotone: typeof import('~icons/ph/cloud-lightning-duotone')['default'] PhFileCsv: typeof import('~icons/ph/file-csv')['default'] PhXCircleLight: typeof import('~icons/ph/x-circle-light')['default'] + RiLineHeight: typeof import('~icons/ri/line-height')['default'] + RiTeamFill: typeof import('~icons/ri/team-fill')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SimpleIconsMicrosoftsqlserver: typeof import('~icons/simple-icons/microsoftsqlserver')['default'] diff --git a/packages/nocodb/src/db/sql-client/lib/KnexClient.ts b/packages/nocodb/src/db/sql-client/lib/KnexClient.ts index 78d5e8b0ad..b836721370 100644 --- a/packages/nocodb/src/db/sql-client/lib/KnexClient.ts +++ b/packages/nocodb/src/db/sql-client/lib/KnexClient.ts @@ -2967,6 +2967,7 @@ class KnexClient extends SqlClient { return str.replace(/\\[?]/g, '?'); } + // todo: add support to complex default values with functions and expressions validateAndSanitiseDefaultValue(value: string | number | boolean) { if (value === null || value === undefined) return undefined; @@ -2982,7 +2983,7 @@ class KnexClient extends SqlClient { if (/^\w+\(\)$/.test(value)) return value; // if value is a CURRENT_TIMESTAMP, return as is - if (/^CURRENT_TIMESTAMP\([\w ]+\)$/.test(value.toUpperCase())) + if (/^CURRENT_TIMESTAMP[\w ]*$/.test(value.toUpperCase())) return value; // if value wrapped in single/double quotes, then extract value and sanitise