1
0
mirror of https://github.com/immich-app/immich.git synced 2024-12-26 10:50:29 +02:00

chore(server): search filename using originalFileName (#7691)

This commit is contained in:
Alex 2024-03-06 21:36:08 -06:00 committed by GitHub
parent 4323d18387
commit 1eea547aa2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 10 additions and 10 deletions

View File

@ -35,7 +35,7 @@ export const ASSET_CHECKSUM_CONSTRAINT = 'UQ_assets_owner_library_checksum';
@Index('IDX_day_of_month', { synchronize: false }) @Index('IDX_day_of_month', { synchronize: false })
@Index('IDX_month', { synchronize: false }) @Index('IDX_month', { synchronize: false })
@Index('IDX_originalPath_libraryId', ['originalPath', 'libraryId']) @Index('IDX_originalPath_libraryId', ['originalPath', 'libraryId'])
@Index('idx_originalpath_trigram', { synchronize: false }) @Index('idx_originalFileName_trigram', { synchronize: false })
// For all assets, each originalpath must be unique per user and library // For all assets, each originalpath must be unique per user and library
export class AssetEntity { export class AssetEntity {
@PrimaryGeneratedColumn('uuid') @PrimaryGeneratedColumn('uuid')

View File

@ -159,12 +159,12 @@ export function searchAssetBuilder(
builder.andWhere(`${builder.alias}.ownerId IN (:...userIds)`, { userIds: options.userIds }); builder.andWhere(`${builder.alias}.ownerId IN (:...userIds)`, { userIds: options.userIds });
} }
const path = _.pick(options, ['encodedVideoPath', 'originalFileName', 'resizePath', 'webpPath']); const path = _.pick(options, ['encodedVideoPath', 'originalPath', 'resizePath', 'webpPath']);
builder.andWhere(_.omitBy(path, _.isUndefined)); builder.andWhere(_.omitBy(path, _.isUndefined));
if (options.originalPath) { if (options.originalFileName) {
builder.andWhere(`f_unaccent(${builder.alias}.originalPath) ILIKE f_unaccent(:originalPath)`, { builder.andWhere(`f_unaccent(${builder.alias}.originalFileName) ILIKE f_unaccent(:originalFileName)`, {
originalPath: `%${options.originalPath}%`, originalFileName: `%${options.originalFileName}%`,
}); });
} }

View File

@ -3,12 +3,12 @@ import { MigrationInterface, QueryRunner } from 'typeorm';
export class AddAssetOriginalPathTrigramIndex1709608140355 implements MigrationInterface { export class AddAssetOriginalPathTrigramIndex1709608140355 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> { public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(` await queryRunner.query(`
CREATE INDEX idx_originalpath_trigram CREATE INDEX idx_originalFileName_trigram
ON assets ON assets
USING gin (f_unaccent("originalPath") gin_trgm_ops)`); USING gin (f_unaccent("originalFileName") gin_trgm_ops)`);
} }
public async down(queryRunner: QueryRunner): Promise<void> { public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "idx_originalpath_trigram"`); await queryRunner.query(`DROP INDEX "idx_originalFileName_trigram"`);
} }
} }

View File

@ -94,7 +94,7 @@
let payload: SmartSearchDto | MetadataSearchDto = { let payload: SmartSearchDto | MetadataSearchDto = {
query: filter.context || undefined, query: filter.context || undefined,
originalPath: filter.filename, originalFileName: filter.filename,
country: filter.location.country, country: filter.location.country,
state: filter.location.state, state: filter.location.state,
city: filter.location.city, city: filter.location.city,

View File

@ -173,7 +173,7 @@
make: 'Camera brand', make: 'Camera brand',
model: 'Camera model', model: 'Camera model',
personIds: 'People', personIds: 'People',
originalPath: 'File name', originalFileName: 'File name',
}; };
return keyMap[key] || key; return keyMap[key] || key;
} }