fix(server): clean face tables after delete (#12375)

clean face tables after delete
This commit is contained in:
Mert 2024-09-05 19:09:19 -04:00 committed by GitHub
parent 649897f737
commit eb7777639d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,7 @@ import { AssetFaceEntity } from 'src/entities/asset-face.entity';
import { AssetJobStatusEntity } from 'src/entities/asset-job-status.entity'; import { AssetJobStatusEntity } from 'src/entities/asset-job-status.entity';
import { AssetEntity } from 'src/entities/asset.entity'; import { AssetEntity } from 'src/entities/asset.entity';
import { PersonEntity } from 'src/entities/person.entity'; import { PersonEntity } from 'src/entities/person.entity';
import { SourceType } from 'src/enum';
import { import {
AssetFaceId, AssetFaceId,
DeleteAllFacesOptions, DeleteAllFacesOptions,
@ -53,16 +54,20 @@ export class PersonRepository implements IPersonRepository {
} }
async deleteAllFaces({ sourceType }: DeleteAllFacesOptions): Promise<void> { async deleteAllFaces({ sourceType }: DeleteAllFacesOptions): Promise<void> {
if (sourceType) { if (!sourceType) {
return this.assetFaceRepository.query('TRUNCATE TABLE asset_faces CASCADE');
}
await this.assetFaceRepository await this.assetFaceRepository
.createQueryBuilder('asset_faces') .createQueryBuilder('asset_faces')
.delete() .delete()
.andWhere('sourceType = :sourceType', { sourceType }) .andWhere('sourceType = :sourceType', { sourceType })
.execute(); .execute();
return;
}
await this.assetFaceRepository.query('TRUNCATE TABLE asset_faces CASCADE'); await this.assetFaceRepository.query('VACUUM ANALYZE asset_faces, face_search');
if (sourceType === SourceType.MACHINE_LEARNING) {
await this.assetFaceRepository.query('REINDEX INDEX face_index');
}
} }
getAllFaces( getAllFaces(