Add deleteOneRelation resolver (#2569)
This commit is contained in:
@ -42,7 +42,7 @@ import { RelationMetadataDTO } from './dtos/relation-metadata.dto';
|
|||||||
pagingStrategy: PagingStrategies.CURSOR,
|
pagingStrategy: PagingStrategies.CURSOR,
|
||||||
create: { many: { disabled: true } },
|
create: { many: { disabled: true } },
|
||||||
update: { disabled: true },
|
update: { disabled: true },
|
||||||
delete: { disabled: true },
|
delete: { many: { disabled: true } },
|
||||||
guards: [JwtAuthGuard],
|
guards: [JwtAuthGuard],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -35,6 +35,44 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
|
|||||||
super(relationMetadataRepository);
|
super(relationMetadataRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override async deleteOne(id: string): Promise<RelationMetadataEntity> {
|
||||||
|
const relationMetadata = await this.relationMetadataRepository.findOne({
|
||||||
|
where: { id },
|
||||||
|
relations: ['fromFieldMetadata', 'toFieldMetadata'],
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!relationMetadata) {
|
||||||
|
throw new NotFoundException('Relation does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
!relationMetadata.toFieldMetadata.isCustom ||
|
||||||
|
!relationMetadata.fromFieldMetadata.isCustom
|
||||||
|
) {
|
||||||
|
throw new BadRequestException("Standard Relations can't be deleted");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
relationMetadata.toFieldMetadata.isActive ||
|
||||||
|
relationMetadata.fromFieldMetadata.isActive
|
||||||
|
) {
|
||||||
|
throw new BadRequestException("Active relations can't be deleted");
|
||||||
|
}
|
||||||
|
|
||||||
|
const deletedRelationMetadata = super.deleteOne(id);
|
||||||
|
|
||||||
|
this.fieldMetadataService.deleteMany({
|
||||||
|
id: {
|
||||||
|
in: [
|
||||||
|
relationMetadata.fromFieldMetadataId,
|
||||||
|
relationMetadata.toFieldMetadataId,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return deletedRelationMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
override async createOne(
|
override async createOne(
|
||||||
record: CreateRelationInput,
|
record: CreateRelationInput,
|
||||||
): Promise<RelationMetadataEntity> {
|
): Promise<RelationMetadataEntity> {
|
||||||
|
|||||||
Reference in New Issue
Block a user