Add missing FK on view tables (#14084)

## Context
View tables were missing some FK, we are also introducing delete cascade
on those tables when needed to leverage pg cascade deletion instead of
having to implement it.
Also renaming those classes with Entity suffix to follow repo
guidelines.
This commit is contained in:
Weiko
2025-08-26 18:59:20 +02:00
committed by GitHub
parent 6d4cae973f
commit f06786d603
59 changed files with 1171 additions and 452 deletions
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_FIELD_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type ViewField } from 'src/engine/core-modules/view/entities/view-field.entity';
import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity';
type CreateViewFieldOperationFactoryParams = {
gqlFields?: string;
data?: Partial<ViewField>;
data?: Partial<ViewFieldEntity>;
};
export const createViewFieldOperationFactory = ({
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_FILTER_GROUP_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type ViewFilterGroup } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
type CreateViewFilterGroupOperationFactoryParams = {
gqlFields?: string;
data?: Partial<ViewFilterGroup>;
data?: Partial<ViewFilterGroupEntity>;
};
export const createViewFilterGroupOperationFactory = ({
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_FILTER_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type ViewFilter } from 'src/engine/core-modules/view/entities/view-filter.entity';
import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
type CreateViewFilterOperationFactoryParams = {
gqlFields?: string;
data?: Partial<ViewFilter>;
data?: Partial<ViewFilterEntity>;
};
export const createViewFilterOperationFactory = ({
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_GROUP_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type ViewGroup } from 'src/engine/core-modules/view/entities/view-group.entity';
import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity';
type CreateViewGroupOperationFactoryParams = {
gqlFields?: string;
data?: Partial<ViewGroup>;
data?: Partial<ViewGroupEntity>;
};
export const createViewGroupOperationFactory = ({
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type View } from 'src/engine/core-modules/view/entities/view.entity';
import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
type CreateViewOperationFactoryParams = {
gqlFields?: string;
data?: Partial<View>;
data?: Partial<ViewEntity>;
};
export const createViewOperationFactory = ({
@@ -1,11 +1,11 @@
import gql from 'graphql-tag';
import { VIEW_SORT_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants';
import { type ViewSort } from 'src/engine/core-modules/view/entities/view-sort.entity';
import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity';
type CreateViewSortOperationFactoryParams = {
gqlFields?: string;
data?: Partial<ViewSort>;
data?: Partial<ViewSortEntity>;
};
export const createViewSortOperationFactory = ({
@@ -1,23 +1,17 @@
import {
TEST_FIELD_METADATA_1_ID,
TEST_OBJECT_METADATA_1_ID,
} from 'test/integration/constants/test-view-ids.constants';
import { type ViewField } from 'src/engine/core-modules/view/entities/view-field.entity';
import { type ViewFilterGroup } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
import { type ViewFilter } from 'src/engine/core-modules/view/entities/view-filter.entity';
import { type ViewGroup } from 'src/engine/core-modules/view/entities/view-group.entity';
import { type ViewSort } from 'src/engine/core-modules/view/entities/view-sort.entity';
import { type View } from 'src/engine/core-modules/view/entities/view.entity';
import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity';
import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity';
import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity';
import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator';
import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in';
import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction';
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
export const createViewData = (overrides: Partial<View> = {}) => ({
export const createViewData = (overrides: Partial<ViewEntity> = {}) => ({
name: 'Test View',
objectMetadataId: TEST_OBJECT_METADATA_1_ID,
icon: 'IconTable',
type: ViewType.TABLE,
key: null,
@@ -27,7 +21,7 @@ export const createViewData = (overrides: Partial<View> = {}) => ({
...overrides,
});
export const updateViewData = (overrides: Partial<View> = {}) => ({
export const updateViewData = (overrides: Partial<ViewEntity> = {}) => ({
name: 'Updated View',
type: ViewType.KANBAN,
isCompact: true,
@@ -36,17 +30,18 @@ export const updateViewData = (overrides: Partial<View> = {}) => ({
export const createViewFieldData = (
viewId: string,
overrides: Partial<ViewField> = {},
overrides: Partial<ViewFieldEntity> = {},
) => ({
viewId,
fieldMetadataId: TEST_FIELD_METADATA_1_ID,
position: 0,
isVisible: true,
size: 150,
...overrides,
});
export const updateViewFieldData = (overrides: Partial<ViewField> = {}) => ({
export const updateViewFieldData = (
overrides: Partial<ViewFieldEntity> = {},
) => ({
position: 5,
isVisible: false,
size: 300,
@@ -55,31 +50,33 @@ export const updateViewFieldData = (overrides: Partial<ViewField> = {}) => ({
export const createViewSortData = (
viewId: string,
overrides: Partial<ViewSort> = {},
overrides: Partial<ViewSortEntity> = {},
) => ({
viewId,
fieldMetadataId: TEST_FIELD_METADATA_1_ID,
direction: ViewSortDirection.ASC,
...overrides,
});
export const updateViewSortData = (overrides: Partial<ViewSort> = {}) => ({
export const updateViewSortData = (
overrides: Partial<ViewSortEntity> = {},
) => ({
direction: ViewSortDirection.DESC,
...overrides,
});
export const createViewFilterData = (
viewId: string,
overrides: Partial<ViewFilter> = {},
overrides: Partial<ViewFilterEntity> = {},
) => ({
viewId,
fieldMetadataId: TEST_FIELD_METADATA_1_ID,
operand: ViewFilterOperand.IS,
value: 'test-value',
...overrides,
});
export const updateViewFilterData = (overrides: Partial<ViewFilter> = {}) => ({
export const updateViewFilterData = (
overrides: Partial<ViewFilterEntity> = {},
) => ({
operand: ViewFilterOperand.IS_NOT,
value: 'updated-value',
...overrides,
@@ -87,17 +84,18 @@ export const updateViewFilterData = (overrides: Partial<ViewFilter> = {}) => ({
export const createViewGroupData = (
viewId: string,
overrides: Partial<ViewGroup> = {},
overrides: Partial<ViewGroupEntity> = {},
) => ({
viewId,
fieldMetadataId: TEST_FIELD_METADATA_1_ID,
fieldValue: 'test-group-value',
isVisible: true,
position: 0,
...overrides,
});
export const updateViewGroupData = (overrides: Partial<ViewGroup> = {}) => ({
export const updateViewGroupData = (
overrides: Partial<ViewGroupEntity> = {},
) => ({
fieldValue: 'updated-group-value',
isVisible: false,
position: 1,
@@ -106,7 +104,7 @@ export const updateViewGroupData = (overrides: Partial<ViewGroup> = {}) => ({
export const createViewFilterGroupData = (
viewId: string,
overrides: Partial<ViewFilterGroup> = {},
overrides: Partial<ViewFilterGroupEntity> = {},
) => ({
viewId,
logicalOperator: ViewFilterGroupLogicalOperator.AND,
@@ -114,7 +112,7 @@ export const createViewFilterGroupData = (
});
export const updateViewFilterGroupData = (
overrides: Partial<ViewFilterGroup> = {},
overrides: Partial<ViewFilterGroupEntity> = {},
) => ({
logicalOperator: ViewFilterGroupLogicalOperator.OR,
...overrides,
@@ -1,18 +1,18 @@
import { type GraphQLResponse } from 'test/integration/graphql/utils/graphql-test-assertions.util';
import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util';
import { type View } from 'src/engine/core-modules/view/entities/view.entity';
import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { createViewOperationFactory } from './create-view-operation-factory.util';
import { createViewData } from './view-data-factory.util';
interface CreateViewResponse extends Record<string, unknown> {
createCoreView: View;
createCoreView: ViewEntity;
}
export const createTestViewWithGraphQL = async (
overrides: Partial<View> = {},
): Promise<View> => {
overrides: Partial<ViewEntity> = {},
): Promise<ViewEntity> => {
const input = createViewData(overrides);
const operation = createViewOperationFactory({ data: input });