Add universal identifier to view tables (#14139)

## Context
Introducing a new SyncableEntity abstraction that can be extended by
Entities that we want to "sync" via their universal identifier (the
class will add this uuid to the entity). Starting with views, will
refactor existing syncable entities such as objects/fields later
This commit is contained in:
Weiko
2025-08-28 17:33:39 +02:00
committed by GitHub
parent 7c481abf0c
commit af6fc1e9ef
8 changed files with 112 additions and 6 deletions
@@ -11,6 +11,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
@@ -26,7 +28,7 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/
where: '"deletedAt" IS NULL',
},
)
export class ViewFieldEntity {
export class ViewFieldEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -12,6 +12,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator';
@@ -19,7 +21,7 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
@Entity({ name: 'viewFilterGroup', schema: 'core' })
@Index('IDX_VIEW_FILTER_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId'])
export class ViewFilterGroupEntity {
export class ViewFilterGroupEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -11,6 +11,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
@@ -21,7 +23,7 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/
@Entity({ name: 'viewFilter', schema: 'core' })
@Index('IDX_VIEW_FILTER_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId'])
@Index('IDX_VIEW_FILTER_FIELD_METADATA_ID', ['fieldMetadataId'])
export class ViewFilterEntity {
export class ViewFilterEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -11,13 +11,15 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
@Entity({ name: 'viewGroup', schema: 'core' })
@Index('IDX_VIEW_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId'])
export class ViewGroupEntity {
export class ViewGroupEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -11,6 +11,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
@@ -26,7 +28,7 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/
where: '"deletedAt" IS NULL',
},
)
export class ViewSortEntity {
export class ViewSortEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -12,6 +12,8 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface';
import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity';
import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
@@ -29,7 +31,7 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat
'workspaceId',
'objectMetadataId',
])
export class ViewEntity {
export class ViewEntity extends SyncableEntity {
@PrimaryGeneratedColumn('uuid')
id: string;