Browse Source

fix: duplicate qr and barcode columns

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/6945/head
mertmit 1 year ago
parent
commit
9e7b74170a
  1. 2
      packages/nocodb/src/modules/jobs/jobs/export-import/export.service.ts
  2. 61
      packages/nocodb/src/modules/jobs/jobs/export-import/import.service.ts

2
packages/nocodb/src/modules/jobs/jobs/export-import/export.service.ts

@ -118,6 +118,8 @@ export class ExportService {
case 'fk_relation_column_id': case 'fk_relation_column_id':
case 'fk_lookup_column_id': case 'fk_lookup_column_id':
case 'fk_rollup_column_id': case 'fk_rollup_column_id':
case 'fk_qr_value_column_id':
case 'fk_barcode_value_column_id':
column.colOptions[k] = idMap.get(v as string); column.colOptions[k] = idMap.get(v as string);
break; break;
case 'options': case 'options':

61
packages/nocodb/src/modules/jobs/jobs/export-import/import.service.ts

@ -2,7 +2,7 @@ import { UITypes, ViewTypes } from 'nocodb-sdk';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import papaparse from 'papaparse'; import papaparse from 'papaparse';
import debug from 'debug'; import debug from 'debug';
import { isLinksOrLTAR } from 'nocodb-sdk'; import { isLinksOrLTAR, isVirtualCol } from 'nocodb-sdk';
import { elapsedTime, initTime } from '../../helpers'; import { elapsedTime, initTime } from '../../helpers';
import type { Readable } from 'stream'; import type { Readable } from 'stream';
import type { UserType, ViewCreateReqType } from 'nocodb-sdk'; import type { UserType, ViewCreateReqType } from 'nocodb-sdk';
@ -127,12 +127,7 @@ export class ImportService {
const modelData = data.model; const modelData = data.model;
const reducedColumnSet = modelData.columns.filter( const reducedColumnSet = modelData.columns.filter(
(a) => (a) => !isVirtualCol(a) && a.uidt !== UITypes.ForeignKey,
!isLinksOrLTAR(a) &&
a.uidt !== UITypes.Lookup &&
a.uidt !== UITypes.Rollup &&
a.uidt !== UITypes.Formula &&
a.uidt !== UITypes.ForeignKey,
); );
// create table with static columns // create table with static columns
@ -738,7 +733,9 @@ export class ImportService {
(a) => (a) =>
a.uidt === UITypes.Lookup || a.uidt === UITypes.Lookup ||
a.uidt === UITypes.Rollup || a.uidt === UITypes.Rollup ||
a.uidt === UITypes.Formula, a.uidt === UITypes.Formula ||
a.uidt === UITypes.QrCode ||
a.uidt === UITypes.Barcode,
), ),
); );
} }
@ -764,6 +761,12 @@ export class ImportService {
); );
} }
} }
if (col.colOptions?.fk_qr_value_column_id) {
relatedColIds.push(col.colOptions.fk_qr_value_column_id);
}
if (col.colOptions?.fk_barcode_value_column_id) {
relatedColIds.push(col.colOptions.fk_barcode_value_column_id);
}
// find the last related column in the sorted array // find the last related column in the sorted array
let fnd = undefined; let fnd = undefined;
@ -852,6 +855,48 @@ export class ImportService {
user: param.user, user: param.user,
}); });
for (const nColumn of freshModelData.columns) {
if (nColumn.title === col.title) {
idMap.set(col.id, nColumn.id);
break;
}
}
} else if (col.uidt === UITypes.QrCode) {
const freshModelData = await this.columnsService.columnAdd({
tableId: getIdOrExternalId(getParentIdentifier(col.id)),
column: withoutId({
...flatCol,
...{
fk_qr_value_column_id: getIdOrExternalId(
colOptions.fk_qr_value_column_id,
),
},
}) as any,
req: param.req,
user: param.user,
});
for (const nColumn of freshModelData.columns) {
if (nColumn.title === col.title) {
idMap.set(col.id, nColumn.id);
break;
}
}
} else if (col.uidt === UITypes.Barcode) {
const freshModelData = await this.columnsService.columnAdd({
tableId: getIdOrExternalId(getParentIdentifier(col.id)),
column: withoutId({
...flatCol,
...{
fk_barcode_value_column_id: getIdOrExternalId(
colOptions.fk_barcode_value_column_id,
),
},
}) as any,
req: param.req,
user: param.user,
});
for (const nColumn of freshModelData.columns) { for (const nColumn of freshModelData.columns) {
if (nColumn.title === col.title) { if (nColumn.title === col.title) {
idMap.set(col.id, nColumn.id); idMap.set(col.id, nColumn.id);

Loading…
Cancel
Save