From aa376101ffba5f234ee1bd95a2439030fcfb4597 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Sat, 17 Sep 2022 11:48:29 +0530 Subject: [PATCH] feat(api): add meta in grid and gallery view Signed-off-by: Pranav C --- .../src/lib/migrations/XcMigrationSourcev2.ts | 8 ++++---- ...w.ts => nc_019_add_meta_in_meta_tables.ts} | 12 ++++++++++++ packages/nocodb/src/lib/utils/searialize.ts | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) rename packages/nocodb/src/lib/migrations/v2/{nc_019_add_meta_in_form_view.ts => nc_019_add_meta_in_meta_tables.ts} (59%) create mode 100644 packages/nocodb/src/lib/utils/searialize.ts diff --git a/packages/nocodb/src/lib/migrations/XcMigrationSourcev2.ts b/packages/nocodb/src/lib/migrations/XcMigrationSourcev2.ts index feacb6ed39..96994d0bb1 100644 --- a/packages/nocodb/src/lib/migrations/XcMigrationSourcev2.ts +++ b/packages/nocodb/src/lib/migrations/XcMigrationSourcev2.ts @@ -6,7 +6,7 @@ import * as nc_015_add_meta_col_in_column_table from './v2/nc_015_add_meta_col_i import * as nc_016_alter_hooklog_payload_types from './v2/nc_016_alter_hooklog_payload_types'; import * as nc_017_add_user_token_version_column from './v2/nc_017_add_user_token_version_column'; import * as nc_018_add_meta_in_view from './v2/nc_018_add_meta_in_view'; -import * as nc_019_add_meta_in_form_view from './v2/nc_019_add_meta_in_form_view'; +import * as nc_019_add_meta_in_meta_tables from './v2/nc_019_add_meta_in_meta_tables'; // Create a custom migration source class export default class XcMigrationSourcev2 { @@ -24,7 +24,7 @@ export default class XcMigrationSourcev2 { 'nc_016_alter_hooklog_payload_types', 'nc_017_add_user_token_version_column', 'nc_018_add_meta_in_view', - 'nc_019_add_meta_in_form_view', + 'nc_019_add_meta_in_meta_tables', ]); } @@ -50,8 +50,8 @@ export default class XcMigrationSourcev2 { return nc_017_add_user_token_version_column; case 'nc_018_add_meta_in_view': return nc_018_add_meta_in_view; - case 'nc_019_add_meta_in_form_view': - return nc_019_add_meta_in_form_view; + case 'nc_019_add_meta_in_meta_tables': + return nc_019_add_meta_in_meta_tables; } } } diff --git a/packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_form_view.ts b/packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_meta_tables.ts similarity index 59% rename from packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_form_view.ts rename to packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_meta_tables.ts index 4dbce6f85f..d865912b35 100644 --- a/packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_form_view.ts +++ b/packages/nocodb/src/lib/migrations/v2/nc_019_add_meta_in_meta_tables.ts @@ -8,6 +8,12 @@ const up = async (knex: Knex) => { await knex.schema.alterTable(MetaTable.FORM_VIEW_COLUMNS, (table) => { table.text('meta'); }); + await knex.schema.alterTable(MetaTable.GRID_VIEW, (table) => { + table.text('meta'); + }); + await knex.schema.alterTable(MetaTable.GALLERY_VIEW, (table) => { + table.text('meta'); + }); }; const down = async (knex) => { @@ -17,6 +23,12 @@ const down = async (knex) => { await knex.schema.alterTable(MetaTable.FORM_VIEW_COLUMNS, (table) => { table.dropColumns('meta'); }); + await knex.schema.alterTable(MetaTable.GRID_VIEW, (table) => { + table.dropColumns('meta'); + }); + await knex.schema.alterTable(MetaTable.GALLERY_VIEW, (table) => { + table.dropColumns('meta'); + }); }; export { up, down }; diff --git a/packages/nocodb/src/lib/utils/searialize.ts b/packages/nocodb/src/lib/utils/searialize.ts new file mode 100644 index 0000000000..c839512a41 --- /dev/null +++ b/packages/nocodb/src/lib/utils/searialize.ts @@ -0,0 +1,19 @@ +export const serializeJSON = (data: string | Record) => { + // if already in string format ignore stringify + if (typeof data === 'string') { + return data; + } + return JSON.stringify(data); +}; + +export const deserializeJSON = (data: string | Record) => { + // if already in object format ignore parse + if (typeof data === 'object') { + return data ?? {}; + } + try { + return JSON.parse(data) ?? {}; + } catch (e) { + return {}; + } +};