Browse Source

refactor: suggested changes

pull/7304/head
Pranav C 6 months ago
parent
commit
ec92d8c177
  1. 4
      packages/nc-gui/components/smartsheet/VirtualCell.vue
  2. 12
      packages/nc-gui/components/smartsheet/header/Menu.vue
  3. 2
      packages/nocodb-sdk/src/lib/UITypes.ts
  4. 2
      packages/nocodb-sdk/src/lib/index.ts
  5. 8
      packages/nocodb/src/db/BaseModelSqlv2.ts
  6. 6
      packages/nocodb/src/helpers/getAst.ts
  7. 18
      packages/nocodb/src/services/columns.service.ts
  8. 6
      packages/nocodb/src/services/tables.service.ts
  9. 4
      packages/nocodb/src/version-upgrader/ncXcdbCreatedAndUpdatedTimeUpgrader.ts
  10. 4
      packages/nocodb/tests/unit/factory/row.ts
  11. 12
      packages/nocodb/tests/unit/rest/tests/newDataApis.test.ts

4
packages/nc-gui/components/smartsheet/VirtualCell.vue

@ -1,6 +1,6 @@
<script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk'
import { isCreatedTimeOrUpdatedTimeCol } from 'nocodb-sdk'
import { isCreatedOrLastModifiedTimeCol } from 'nocodb-sdk'
import {
ActiveCellInj,
CellValueInj,
@ -115,7 +115,7 @@ onUnmounted(() => {
<LazyVirtualCellBarcode v-else-if="isBarcode(column)" />
<LazyVirtualCellCount v-else-if="isCount(column)" />
<LazyVirtualCellLookup v-else-if="isLookup(column)" />
<LazyCellReadOnlyDateTimePicker v-else-if="isCreatedTimeOrUpdatedTimeCol(column)" :model-value="modelValue" />
<LazyCellReadOnlyDateTimePicker v-else-if="isCreatedOrLastModifiedTimeCol(column)" :model-value="modelValue" />
</template>
</div>
</template>

12
packages/nc-gui/components/smartsheet/header/Menu.vue

@ -279,18 +279,10 @@ const onInsertAfter = () => {
}
const isDeleteAllowed = computed(() => {
if (!column?.value) return false
if (column.value.uidt && [UITypes.CreatedTime, UITypes.LastModifiedTime].includes(column.value.uidt) && column.value.system) {
return false
}
return true
return column?.value && !column.value.system
})
const isDuplicateAllowed = computed(() => {
if (!column?.value) return false
if (column.value.system) {
return false
}
return true
return column?.value && !column.value.system
})
</script>

2
packages/nocodb-sdk/src/lib/UITypes.ts

@ -88,7 +88,7 @@ export function isVirtualCol(
// UITypes.Count,
].includes(<UITypes>(typeof col === 'object' ? col?.uidt : col));
}
export function isCreatedTimeOrUpdatedTimeCol(
export function isCreatedOrLastModifiedTimeCol(
col:
| UITypes
| { readonly uidt: UITypes | string }

2
packages/nocodb-sdk/src/lib/index.ts

@ -13,7 +13,7 @@ export {
isNumericCol,
isVirtualCol,
isLinksOrLTAR,
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
} from '~/lib/UITypes';
export { default as CustomAPI, FileType } from '~/lib/CustomAPI';
export { default as TemplateGenerator } from '~/lib/TemplateGenerator';

8
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -8,7 +8,7 @@ import { nocoExecute } from 'nc-help';
import {
AuditOperationSubTypes,
AuditOperationTypes,
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
isLinksOrLTAR,
isSystemColumn,
isVirtualCol,
@ -103,7 +103,7 @@ function checkColumnRequired(
}
export async function getColumnName(column: Column<any>, columns?: Column[]) {
if (!isCreatedTimeOrUpdatedTimeCol(column)) return column.column_name;
if (!isCreatedOrLastModifiedTimeCol(column)) return column.column_name;
columns = columns || (await Column.list({ fk_model_id: column.fk_model_id }));
switch (column.uidt) {
@ -2962,7 +2962,7 @@ class BaseModelSqlv2 {
for (let i = 0; i < this.model.columns.length; ++i) {
const col = this.model.columns[i];
if (col.title in d && isCreatedTimeOrUpdatedTimeCol(col)) {
if (col.title in d && isCreatedOrLastModifiedTimeCol(col)) {
NcError.badRequest(
`Column "${col.title}" is auto generated and cannot be updated`,
);
@ -3847,7 +3847,7 @@ class BaseModelSqlv2 {
for (let i = 0; i < this.model.columns.length; ++i) {
const column = this.model.columns[i];
if (column.title in data && isCreatedTimeOrUpdatedTimeCol(column)) {
if (column.title in data && isCreatedOrLastModifiedTimeCol(column)) {
NcError.badRequest(
`Column "${column.title}" is auto generated and cannot be updated`,
);

6
packages/nocodb/src/helpers/getAst.ts

@ -1,5 +1,5 @@
import {
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
isSystemColumn,
RelationTypes,
UITypes,
@ -155,13 +155,13 @@ const getAst = async ({
if (getHiddenColumn) {
isRequested =
!isSystemColumn(col) ||
(isCreatedTimeOrUpdatedTimeCol(col) && col.system) ||
(isCreatedOrLastModifiedTimeCol(col) && col.system) ||
col.pk;
} else if (allowedCols && (!includePkByDefault || !col.pk)) {
isRequested =
allowedCols[col.id] &&
(!isSystemColumn(col) ||
(!view && isCreatedTimeOrUpdatedTimeCol(col)) ||
(!view && isCreatedOrLastModifiedTimeCol(col)) ||
view.show_system_fields ||
col.pv) &&
(!fields?.length || fields.includes(col.title)) &&

18
packages/nocodb/src/services/columns.service.ts

@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import {
AppEvents,
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
isLinksOrLTAR,
isVirtualCol,
substituteColumnAliasWithIdInFormula,
@ -172,7 +172,7 @@ export class ColumnsService {
if (
!isVirtualCol(param.column) &&
!isCreatedTimeOrUpdatedTimeCol(param.column) &&
!isCreatedOrLastModifiedTimeCol(param.column) &&
!(await Column.checkTitleAvailable({
column_name: param.column.column_name,
fk_model_id: column.fk_model_id,
@ -197,7 +197,7 @@ export class ColumnsService {
parsed_tree?: any;
};
if (
isCreatedTimeOrUpdatedTimeCol(column) ||
isCreatedOrLastModifiedTimeCol(column) ||
[
UITypes.Lookup,
UITypes.Rollup,
@ -1694,9 +1694,6 @@ export class ColumnsService {
// else create a new column in meta and db
const existingColumn = columns.find(
(c) => c.uidt === colBody.uidt && c.system,
// ||
// c.column_name ===
// (c.uidt === UITypes.CreatedTime ? 'created_at' : 'updated_at'),
);
if (!existingColumn) {
@ -1704,15 +1701,6 @@ export class ColumnsService {
colBody.uidt === UITypes.CreatedTime
? 'created_at'
: 'updated_at';
// const sqlClient = await reuseOrSave('sqlClient', reuse, async () =>
// NcConnectionMgrv2.getSqlClient(source),
// );
// const dbColumns = (
// await sqlClient.columnList({
// tn: table.table_name,
// schema: source.getConfig()?.schema,
// })
// )?.data?.list;
// todo: check type as well
const dbColumn = columns.find((c) => c.column_name === columnName);

6
packages/nocodb/src/services/tables.service.ts

@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import DOMPurify from 'isomorphic-dompurify';
import {
AppEvents,
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
isLinksOrLTAR,
isVirtualCol,
ModelTypes,
@ -514,7 +514,7 @@ export class TablesService {
for (const column of param.table.columns) {
if (
!isVirtualCol(column) ||
(isCreatedTimeOrUpdatedTimeCol(column) && (column as any).system)
(isCreatedOrLastModifiedTimeCol(column) && (column as any).system)
) {
const mxColumnLength = Column.getMaxColumnNameLength(sqlClientType);
@ -549,7 +549,7 @@ export class TablesService {
param.table.columns
// exclude alias columns from column list
?.filter((c) => {
return !isCreatedTimeOrUpdatedTimeCol(c) || (c as any).system;
return !isCreatedOrLastModifiedTimeCol(c) || (c as any).system;
})
.map(async (c) => ({
...(await getColumnPropsFromUIDT(c as any, source)),

4
packages/nocodb/src/version-upgrader/ncXcdbCreatedAndUpdatedTimeUpgrader.ts

@ -109,7 +109,7 @@ async function upgradeModels({
{
uidt: UITypes.CreatedTime,
column_name: getUniqueColumnName(columns, 'created_at'),
title: getUniqueColumnAliasName(columns, 'Created At'),
title: getUniqueColumnAliasName(columns, 'CreatedAt'),
},
source,
)),
@ -125,7 +125,7 @@ async function upgradeModels({
{
uidt: UITypes.LastModifiedTime,
column_name: getUniqueColumnName(columns, 'updated_at'),
title: getUniqueColumnAliasName(columns, 'Updated At'),
title: getUniqueColumnAliasName(columns, 'UpdatedAt'),
},
source,
)),

4
packages/nocodb/tests/unit/factory/row.ts

@ -1,4 +1,4 @@
import { isCreatedTimeOrUpdatedTimeCol, UITypes } from 'nocodb-sdk'
import { isCreatedOrLastModifiedTimeCol, UITypes } from 'nocodb-sdk'
import request from 'supertest';
import Model from '../../../src/models/Model';
import NcConnectionMgrv2 from '../../../src/utils/common/NcConnectionMgrv2';
@ -258,7 +258,7 @@ const generateDefaultRowAttributes = ({
column.uidt === UITypes.LinkToAnotherRecord ||
column.uidt === UITypes.ForeignKey ||
column.uidt === UITypes.ID ||
isCreatedTimeOrUpdatedTimeCol(column)
isCreatedOrLastModifiedTimeCol(column)
) {
return acc;
}

12
packages/nocodb/tests/unit/rest/tests/newDataApis.test.ts

@ -83,7 +83,7 @@
import 'mocha';
import {
isCreatedTimeOrUpdatedTimeCol,
isCreatedOrLastModifiedTimeCol,
UITypes,
ViewTypes,
WorkspaceUserRoles,
@ -679,7 +679,7 @@ function textBased() {
expect(
verifyColumnsInRsp(
rsp.body.list[0],
columns.filter((c) => !isCreatedTimeOrUpdatedTimeCol(c) || !c.system),
columns.filter((c) => !isCreatedOrLastModifiedTimeCol(c) || !c.system),
),
).to.equal(true);
const filteredArray = rsp.body.list.map((r) => r.SingleLineText);
@ -700,7 +700,7 @@ function textBased() {
const displayColumns = columns.filter(
(c) =>
c.title !== 'SingleLineText' &&
(!isCreatedTimeOrUpdatedTimeCol(c) || !c.system),
(!isCreatedOrLastModifiedTimeCol(c) || !c.system),
);
expect(verifyColumnsInRsp(rsp.body.list[0], displayColumns)).to.equal(true);
});
@ -749,7 +749,7 @@ function textBased() {
(c) =>
c.title !== 'MultiLineText' &&
c.title !== 'Email' &&
!isCreatedTimeOrUpdatedTimeCol(c),
!isCreatedOrLastModifiedTimeCol(c),
);
expect(verifyColumnsInRsp(rsp.body.list[0], displayColumns)).to.equal(true);
return gridView;
@ -769,7 +769,7 @@ function textBased() {
(c) =>
c.title !== 'MultiLineText' &&
c.title !== 'Email' &&
!isCreatedTimeOrUpdatedTimeCol(c),
!isCreatedOrLastModifiedTimeCol(c),
);
expect(rsp.body.pageInfo.totalRows).to.equal(61);
expect(verifyColumnsInRsp(rsp.body.list[0], displayColumns)).to.equal(true);
@ -791,7 +791,7 @@ function textBased() {
(c) =>
c.title !== 'MultiLineText' &&
c.title !== 'Email' &&
!isCreatedTimeOrUpdatedTimeCol(c),
!isCreatedOrLastModifiedTimeCol(c),
);
expect(rsp.body.pageInfo.totalRows).to.equal(7);
expect(verifyColumnsInRsp(rsp.body.list[0], displayColumns)).to.equal(true);

Loading…
Cancel
Save