Add soft delete to metadata (#2072)
This commit is contained in:
@ -58,9 +58,4 @@ export class CreateFieldInput {
|
|||||||
@IsOptional()
|
@IsOptional()
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
icon?: string;
|
icon?: string;
|
||||||
|
|
||||||
@IsString()
|
|
||||||
@IsOptional()
|
|
||||||
@Field({ nullable: true })
|
|
||||||
placeholder?: string;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,11 +34,6 @@ export class UpdateFieldInput {
|
|||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
icon?: string;
|
icon?: string;
|
||||||
|
|
||||||
@IsString()
|
|
||||||
@IsOptional()
|
|
||||||
@Field({ nullable: true })
|
|
||||||
placeholder?: string;
|
|
||||||
|
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { Field, ID, ObjectType } from '@nestjs/graphql';
|
|||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
CreateDateColumn,
|
CreateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
Entity,
|
Entity,
|
||||||
JoinColumn,
|
JoinColumn,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
@ -76,8 +77,7 @@ export class FieldMetadata {
|
|||||||
@Column({ nullable: true, name: 'icon' })
|
@Column({ nullable: true, name: 'icon' })
|
||||||
icon: string;
|
icon: string;
|
||||||
|
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true, deprecationReason: 'Use label name instead' })
|
||||||
@Column({ nullable: true, name: 'placeholder' })
|
|
||||||
placeholder: string;
|
placeholder: string;
|
||||||
|
|
||||||
@Column('text', { nullable: true, array: true })
|
@Column('text', { nullable: true, array: true })
|
||||||
@ -109,4 +109,7 @@ export class FieldMetadata {
|
|||||||
@Field()
|
@Field()
|
||||||
@UpdateDateColumn({ name: 'updated_at' })
|
@UpdateDateColumn({ name: 'updated_at' })
|
||||||
updatedAt: Date;
|
updatedAt: Date;
|
||||||
|
|
||||||
|
@DeleteDateColumn({ name: 'deleted_at' })
|
||||||
|
deletedAt?: Date;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadata> {
|
|||||||
private readonly tenantMigrationService: TenantMigrationService,
|
private readonly tenantMigrationService: TenantMigrationService,
|
||||||
private readonly migrationRunnerService: MigrationRunnerService,
|
private readonly migrationRunnerService: MigrationRunnerService,
|
||||||
) {
|
) {
|
||||||
super(fieldMetadataRepository);
|
super(fieldMetadataRepository, { useSoftDelete: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
override async createOne(record: FieldMetadata): Promise<FieldMetadata> {
|
override async createOne(record: FieldMetadata): Promise<FieldMetadata> {
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import { InitMetadataTables1695214465080 } from './migrations/1695214465080-Init
|
|||||||
import { AlterFieldMetadataTable1695717691800 } from './migrations/1695717691800-alter-field-metadata-table';
|
import { AlterFieldMetadataTable1695717691800 } from './migrations/1695717691800-alter-field-metadata-table';
|
||||||
import { AddTargetColumnMap1696409050890 } from './migrations/1696409050890-add-target-column-map';
|
import { AddTargetColumnMap1696409050890 } from './migrations/1696409050890-add-target-column-map';
|
||||||
import { MetadataNameLabelRefactoring1697126636202 } from './migrations/1697126636202-MetadataNameLabelRefactoring';
|
import { MetadataNameLabelRefactoring1697126636202 } from './migrations/1697126636202-MetadataNameLabelRefactoring';
|
||||||
|
import { RemoveFieldMetadataPlaceholder1697471445015 } from './migrations/1697471445015-removeFieldMetadataPlaceholder';
|
||||||
|
import { AddSoftDelete1697474804403 } from './migrations/1697474804403-addSoftDelete';
|
||||||
|
|
||||||
config();
|
config();
|
||||||
|
|
||||||
@ -27,6 +29,8 @@ export const typeORMMetadataModuleOptions: TypeOrmModuleOptions = {
|
|||||||
AlterFieldMetadataTable1695717691800,
|
AlterFieldMetadataTable1695717691800,
|
||||||
AddTargetColumnMap1696409050890,
|
AddTargetColumnMap1696409050890,
|
||||||
MetadataNameLabelRefactoring1697126636202,
|
MetadataNameLabelRefactoring1697126636202,
|
||||||
|
RemoveFieldMetadataPlaceholder1697471445015,
|
||||||
|
AddSoftDelete1697474804403,
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
|
export class RemoveFieldMetadataPlaceholder1697471445015
|
||||||
|
implements MigrationInterface
|
||||||
|
{
|
||||||
|
name = 'RemoveFieldMetadataPlaceholder1697471445015';
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."field_metadata" DROP COLUMN "placeholder"`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."field_metadata" ADD "placeholder" character varying`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
|
export class AddSoftDelete1697474804403 implements MigrationInterface {
|
||||||
|
name = 'AddSoftDelete1697474804403';
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."object_metadata" ADD "deleted_at" TIMESTAMP`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."field_metadata" ADD "deleted_at" TIMESTAMP`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."field_metadata" DROP COLUMN "deleted_at"`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "metadata"."object_metadata" DROP COLUMN "deleted_at"`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -38,7 +38,6 @@ export const objectMetadataAutoResolverOpts: AutoResolverOpts<
|
|||||||
update: {
|
update: {
|
||||||
many: { disabled: true },
|
many: { disabled: true },
|
||||||
},
|
},
|
||||||
delete: { disabled: true },
|
|
||||||
guards: [JwtAuthGuard],
|
guards: [JwtAuthGuard],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { ObjectType, ID, Field } from '@nestjs/graphql';
|
|||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
CreateDateColumn,
|
CreateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
Entity,
|
Entity,
|
||||||
OneToMany,
|
OneToMany,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
@ -92,4 +93,7 @@ export class ObjectMetadata {
|
|||||||
@Field()
|
@Field()
|
||||||
@UpdateDateColumn({ name: 'updated_at' })
|
@UpdateDateColumn({ name: 'updated_at' })
|
||||||
updatedAt: Date;
|
updatedAt: Date;
|
||||||
|
|
||||||
|
@DeleteDateColumn({ name: 'deleted_at' })
|
||||||
|
deletedAt?: Date;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadata> {
|
|||||||
private readonly tenantMigrationService: TenantMigrationService,
|
private readonly tenantMigrationService: TenantMigrationService,
|
||||||
private readonly migrationRunnerService: MigrationRunnerService,
|
private readonly migrationRunnerService: MigrationRunnerService,
|
||||||
) {
|
) {
|
||||||
super(objectMetadataRepository);
|
super(objectMetadataRepository, { useSoftDelete: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
override async createOne(record: ObjectMetadata): Promise<ObjectMetadata> {
|
override async createOne(record: ObjectMetadata): Promise<ObjectMetadata> {
|
||||||
|
|||||||
Reference in New Issue
Block a user