Commit 97c94e49 authored by nanahira's avatar nanahira

fix

parent 52eb78dc
Pipeline #7153 passed with stages
in 1 minute and 11 seconds
import { ConsoleLogger } from '@nestjs/common';
import { ClassConstructor } from 'class-transformer';
import {
DeleteResult,
IsNull,
Not,
Repository,
......@@ -44,12 +45,12 @@ export class CrudBase<
const repo = mdb.getRepository(this.entityClass);
if (ent.id != null) {
const existingEnt = await repo.findOne({
where: { id: ent.id, deleteTime: Not(IsNull()) },
select: ['id'],
where: { id: ent.id },
select: ['id', 'deleteTime'],
withDeleted: true,
});
if (existingEnt) {
if (existingEnt) {
if (existingEnt.deleteTime) {
await repo.delete(existingEnt.id);
} else {
throw new BlankReturnMessageDto(
......@@ -95,12 +96,16 @@ export class CrudBase<
return this.repo.createQueryBuilder(this.entityAliasName);
}
async findOne(id: EntityId<T>) {
async findOne(
id: EntityId<T>,
extraQuery: (qb: SelectQueryBuilder<T>) => void = () => {},
) {
const query = this.queryBuilder()
.where(`${this.entityAliasName}.id = :id`, { id })
.take(1);
this.applyRelationsToQuery(query);
this.extraGetQuery(query);
extraQuery(query);
let ent: T;
try {
ent = await query.getOne();
......@@ -119,13 +124,17 @@ export class CrudBase<
return new ReturnMessageDto(200, 'success', ent);
}
async findAll(ent?: T) {
async findAll(
ent?: T,
extraQuery: (qb: SelectQueryBuilder<T>) => void = () => {},
) {
const query = this.queryBuilder();
if (ent) {
ent.applyQuery(query, this.entityAliasName);
}
this.applyRelationsToQuery(query);
this.extraGetQuery(query);
extraQuery(query);
try {
return new ReturnMessageDto(200, 'success', await query.getMany());
} catch (e) {
......@@ -157,10 +166,12 @@ export class CrudBase<
return new BlankReturnMessageDto(200, 'success');
}
async remove(id: EntityId<T>) {
let result: UpdateResult;
async remove(id: EntityId<T>, hardDelete = false) {
let result: UpdateResult | DeleteResult;
try {
result = await this.repo.softDelete(id);
result = await (hardDelete
? this.repo.delete(id)
: this.repo.softDelete(id));
} catch (e) {
this.error(`Failed to delete entity ID ${id}: ${e.toString()}`);
throw new BlankReturnMessageDto(500, 'internal error').toException();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment