Browse Source

feat(nocodb): add KanbanViewColumn

pull/3818/head
Wing-Kam Wong 2 years ago
parent
commit
14ccacd02c
  1. 108
      packages/nocodb/src/lib/models/KanbanViewColumn.ts

108
packages/nocodb/src/lib/models/KanbanViewColumn.ts

@ -0,0 +1,108 @@
import Noco from '../Noco';
import { CacheGetType, CacheScope, MetaTable } from '../utils/globals';
import View from './View';
import NocoCache from '../cache/NocoCache';
export default class KanbanViewColumn {
id: string;
title?: string;
show?: boolean;
order?: number;
fk_view_id: string;
fk_column_id: string;
project_id?: string;
base_id?: string;
constructor(data: KanbanViewColumn) {
Object.assign(this, data);
}
public static async get(kanbanViewColumnId: string, ncMeta = Noco.ncMeta) {
let view =
kanbanViewColumnId &&
(await NocoCache.get(
`${CacheScope.KANBAN_VIEW_COLUMN}:${kanbanViewColumnId}`,
CacheGetType.TYPE_OBJECT
));
if (!view) {
view = await ncMeta.metaGet2(
null,
null,
MetaTable.KANBAN_VIEW_COLUMNS,
kanbanViewColumnId
);
await NocoCache.set(
`${CacheScope.KANBAN_VIEW_COLUMN}:${kanbanViewColumnId}`,
view
);
}
return view && new KanbanViewColumn(view);
}
static async insert(column: Partial<KanbanViewColumn>, ncMeta = Noco.ncMeta) {
const insertObj = {
fk_view_id: column.fk_view_id,
fk_column_id: column.fk_column_id,
order: await ncMeta.metaGetNextOrder(MetaTable.KANBAN_VIEW_COLUMNS, {
fk_view_id: column.fk_view_id,
}),
show: column.show,
project_id: column.project_id,
base_id: column.base_id,
};
if (!(column.project_id && column.base_id)) {
const viewRef = await View.get(column.fk_view_id, ncMeta);
insertObj.project_id = viewRef.project_id;
insertObj.base_id = viewRef.base_id;
}
const { id, fk_column_id } = await ncMeta.metaInsert2(
null,
null,
MetaTable.KANBAN_VIEW_COLUMNS,
insertObj
);
await NocoCache.set(`${CacheScope.KANBAN_VIEW_COLUMN}:${fk_column_id}`, id);
await NocoCache.appendToList(
CacheScope.KANBAN_VIEW_COLUMN,
[column.fk_view_id],
`${CacheScope.KANBAN_VIEW_COLUMN}:${id}`
);
return this.get(id, ncMeta);
}
public static async list(
viewId: string,
ncMeta = Noco.ncMeta
): Promise<KanbanViewColumn[]> {
let views = await NocoCache.getList(CacheScope.KANBAN_VIEW_COLUMN, [
viewId,
]);
if (!views.length) {
views = await ncMeta.metaList2(
null,
null,
MetaTable.KANBAN_VIEW_COLUMNS,
{
condition: {
fk_view_id: viewId,
},
orderBy: {
order: 'asc',
},
}
);
await NocoCache.setList(CacheScope.KANBAN_VIEW_COLUMN, [viewId], views);
}
views.sort(
(a, b) =>
(a.order != null ? a.order : Infinity) -
(b.order != null ? b.order : Infinity)
);
return views?.map((v) => new KanbanViewColumn(v));
}
}
Loading…
Cancel
Save