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:
@@ -5,19 +5,19 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { ViewField } from 'src/engine/core-modules/view/entities/view-field.entity';
|
||||
import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity';
|
||||
import { type ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity';
|
||||
|
||||
@Injectable()
|
||||
export class ViewFieldSyncService {
|
||||
constructor(
|
||||
@InjectRepository(ViewField, 'core')
|
||||
private readonly coreViewFieldRepository: Repository<ViewField>,
|
||||
@InjectRepository(ViewFieldEntity, 'core')
|
||||
private readonly coreViewFieldRepository: Repository<ViewFieldEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewFieldWorkspaceEntity>>,
|
||||
): Partial<ViewField> {
|
||||
): Partial<ViewFieldEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -28,14 +28,14 @@ export class ViewFieldSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<ViewField>;
|
||||
return updateData as Partial<ViewFieldEntity>;
|
||||
}
|
||||
|
||||
public async createCoreViewField(
|
||||
workspaceId: string,
|
||||
workspaceViewField: ViewFieldWorkspaceEntity,
|
||||
): Promise<void> {
|
||||
const coreViewField: Partial<ViewField> = {
|
||||
const coreViewField: Partial<ViewFieldEntity> = {
|
||||
id: workspaceViewField.id,
|
||||
fieldMetadataId: workspaceViewField.fieldMetadataId,
|
||||
viewId: workspaceViewField.viewId,
|
||||
|
||||
@@ -5,20 +5,20 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { ViewFilterGroup } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
|
||||
import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
|
||||
import { type ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator';
|
||||
import { type ViewFilterGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity';
|
||||
|
||||
@Injectable()
|
||||
export class ViewFilterGroupSyncService {
|
||||
constructor(
|
||||
@InjectRepository(ViewFilterGroup, 'core')
|
||||
private readonly coreViewFilterGroupRepository: Repository<ViewFilterGroup>,
|
||||
@InjectRepository(ViewFilterGroupEntity, 'core')
|
||||
private readonly coreViewFilterGroupRepository: Repository<ViewFilterGroupEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewFilterGroupWorkspaceEntity>>,
|
||||
): Partial<ViewFilterGroup> {
|
||||
): Partial<ViewFilterGroupEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -33,14 +33,14 @@ export class ViewFilterGroupSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<ViewFilterGroup>;
|
||||
return updateData as Partial<ViewFilterGroupEntity>;
|
||||
}
|
||||
|
||||
public async createCoreViewFilterGroup(
|
||||
workspaceId: string,
|
||||
workspaceViewFilterGroup: ViewFilterGroupWorkspaceEntity,
|
||||
): Promise<void> {
|
||||
const coreViewFilterGroup: Partial<ViewFilterGroup> = {
|
||||
const coreViewFilterGroup: Partial<ViewFilterGroupEntity> = {
|
||||
id: workspaceViewFilterGroup.id,
|
||||
viewId: workspaceViewFilterGroup.viewId,
|
||||
logicalOperator:
|
||||
|
||||
@@ -6,7 +6,7 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { ViewFilter } from 'src/engine/core-modules/view/entities/view-filter.entity';
|
||||
import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
|
||||
import { type ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity';
|
||||
import { convertViewFilterOperandToCoreOperand } from 'src/modules/view/utils/convert-view-filter-operand-to-core-operand.util';
|
||||
import { convertViewFilterWorkspaceValueToCoreValue } from 'src/modules/view/utils/convert-view-filter-workspace-value-to-core-value';
|
||||
@@ -14,13 +14,13 @@ import { convertViewFilterWorkspaceValueToCoreValue } from 'src/modules/view/uti
|
||||
@Injectable()
|
||||
export class ViewFilterSyncService {
|
||||
constructor(
|
||||
@InjectRepository(ViewFilter, 'core')
|
||||
private readonly coreViewFilterRepository: Repository<ViewFilter>,
|
||||
@InjectRepository(ViewFilterEntity, 'core')
|
||||
private readonly coreViewFilterRepository: Repository<ViewFilterEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewFilterWorkspaceEntity>>,
|
||||
): Partial<ViewFilter> {
|
||||
): Partial<ViewFilterEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -45,7 +45,7 @@ export class ViewFilterSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<ViewFilter>;
|
||||
return updateData as Partial<ViewFilterEntity>;
|
||||
}
|
||||
|
||||
public async createCoreViewFilter(
|
||||
@@ -56,7 +56,7 @@ export class ViewFilterSyncService {
|
||||
return;
|
||||
}
|
||||
|
||||
const coreViewFilter: Partial<ViewFilter> = {
|
||||
const coreViewFilter: Partial<ViewFilterEntity> = {
|
||||
id: workspaceViewFilter.id,
|
||||
fieldMetadataId: workspaceViewFilter.fieldMetadataId,
|
||||
viewId: workspaceViewFilter.viewId,
|
||||
|
||||
@@ -5,19 +5,19 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { ViewGroup } from 'src/engine/core-modules/view/entities/view-group.entity';
|
||||
import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity';
|
||||
import { type ViewGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-group.workspace-entity';
|
||||
|
||||
@Injectable()
|
||||
export class ViewGroupSyncService {
|
||||
constructor(
|
||||
@InjectRepository(ViewGroup, 'core')
|
||||
private readonly coreViewGroupRepository: Repository<ViewGroup>,
|
||||
@InjectRepository(ViewGroupEntity, 'core')
|
||||
private readonly coreViewGroupRepository: Repository<ViewGroupEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewGroupWorkspaceEntity>>,
|
||||
): Partial<ViewGroup> {
|
||||
): Partial<ViewGroupEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -28,7 +28,7 @@ export class ViewGroupSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<ViewGroup>;
|
||||
return updateData as Partial<ViewGroupEntity>;
|
||||
}
|
||||
|
||||
public async createCoreViewGroup(
|
||||
@@ -39,7 +39,7 @@ export class ViewGroupSyncService {
|
||||
return;
|
||||
}
|
||||
|
||||
const coreViewGroup: Partial<ViewGroup> = {
|
||||
const coreViewGroup: Partial<ViewGroupEntity> = {
|
||||
id: workspaceViewGroup.id,
|
||||
fieldMetadataId: workspaceViewGroup.fieldMetadataId,
|
||||
viewId: workspaceViewGroup.viewId,
|
||||
|
||||
@@ -5,20 +5,20 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { ViewSort } from 'src/engine/core-modules/view/entities/view-sort.entity';
|
||||
import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity';
|
||||
import { type ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction';
|
||||
import { type ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity';
|
||||
|
||||
@Injectable()
|
||||
export class ViewSortSyncService {
|
||||
constructor(
|
||||
@InjectRepository(ViewSort, 'core')
|
||||
private readonly coreViewSortRepository: Repository<ViewSort>,
|
||||
@InjectRepository(ViewSortEntity, 'core')
|
||||
private readonly coreViewSortRepository: Repository<ViewSortEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewSortWorkspaceEntity>>,
|
||||
): Partial<ViewSort> {
|
||||
): Partial<ViewSortEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -35,7 +35,7 @@ export class ViewSortSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<ViewSort>;
|
||||
return updateData as Partial<ViewSortEntity>;
|
||||
}
|
||||
|
||||
public async createCoreViewSort(
|
||||
@@ -49,7 +49,7 @@ export class ViewSortSyncService {
|
||||
const direction =
|
||||
workspaceViewSort.direction.toUpperCase() as ViewSortDirection;
|
||||
|
||||
const coreViewSort: Partial<ViewSort> = {
|
||||
const coreViewSort: Partial<ViewSortEntity> = {
|
||||
id: workspaceViewSort.id,
|
||||
fieldMetadataId: workspaceViewSort.fieldMetadataId,
|
||||
viewId: workspaceViewSort.viewId,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
|
||||
import { View } from 'src/engine/core-modules/view/entities/view.entity';
|
||||
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
|
||||
import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum';
|
||||
import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in';
|
||||
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
|
||||
@@ -14,13 +14,13 @@ import { type ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view
|
||||
@Injectable()
|
||||
export class ViewSyncService {
|
||||
constructor(
|
||||
@InjectRepository(View, 'core')
|
||||
private readonly coreViewRepository: Repository<View>,
|
||||
@InjectRepository(ViewEntity, 'core')
|
||||
private readonly coreViewRepository: Repository<ViewEntity>,
|
||||
) {}
|
||||
|
||||
private parseUpdateDataFromDiff(
|
||||
diff: Partial<ObjectRecordDiff<ViewWorkspaceEntity>>,
|
||||
): Partial<View> {
|
||||
): Partial<ViewEntity> {
|
||||
const updateData: Record<string, unknown> = {};
|
||||
|
||||
for (const key of Object.keys(diff)) {
|
||||
@@ -50,7 +50,7 @@ export class ViewSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
return updateData as Partial<View>;
|
||||
return updateData as Partial<ViewEntity>;
|
||||
}
|
||||
|
||||
public async createCoreView(
|
||||
@@ -64,7 +64,7 @@ export class ViewSyncService {
|
||||
viewName = 'All {objectLabelPlural}';
|
||||
}
|
||||
|
||||
const coreView: Partial<View> = {
|
||||
const coreView: Partial<ViewEntity> = {
|
||||
id: workspaceView.id,
|
||||
name: viewName,
|
||||
objectMetadataId: workspaceView.objectMetadataId,
|
||||
|
||||
@@ -2,12 +2,12 @@ import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
|
||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||
import { ViewField } from 'src/engine/core-modules/view/entities/view-field.entity';
|
||||
import { ViewFilterGroup } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
|
||||
import { ViewFilter } from 'src/engine/core-modules/view/entities/view-filter.entity';
|
||||
import { ViewGroup } from 'src/engine/core-modules/view/entities/view-group.entity';
|
||||
import { ViewSort } from 'src/engine/core-modules/view/entities/view-sort.entity';
|
||||
import { View } from 'src/engine/core-modules/view/entities/view.entity';
|
||||
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';
|
||||
import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
|
||||
import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity';
|
||||
import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity';
|
||||
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
|
||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
import { ViewFieldListener } from 'src/modules/view/listeners/view-field.listener';
|
||||
import { ViewFilterGroupListener } from 'src/modules/view/listeners/view-filter-group.listener';
|
||||
@@ -27,7 +27,14 @@ import { ViewService } from 'src/modules/view/services/view.service';
|
||||
@Module({
|
||||
imports: [
|
||||
TypeOrmModule.forFeature(
|
||||
[View, ViewField, ViewFilter, ViewFilterGroup, ViewGroup, ViewSort],
|
||||
[
|
||||
ViewEntity,
|
||||
ViewFieldEntity,
|
||||
ViewFilterEntity,
|
||||
ViewFilterGroupEntity,
|
||||
ViewGroupEntity,
|
||||
ViewSortEntity,
|
||||
],
|
||||
'core',
|
||||
),
|
||||
TypeOrmModule.forFeature([ObjectMetadataEntity], 'core'),
|
||||
|
||||
Reference in New Issue
Block a user