mirror of
https://github.com/immich-app/immich.git
synced 2026-03-22 14:19:26 +03:00
fix: implement existing withStacked on searchAssetBuilder (#26607)
Co-authored-by: Joe <code@joebabbitt.com>
This commit is contained in:
@@ -404,6 +404,7 @@ export function searchAssetBuilder(kysely: Kysely<DB>, options: AssetSearchBuild
|
|||||||
.$if(!!options.isNotInAlbum && (!options.albumIds || options.albumIds.length === 0), (qb) =>
|
.$if(!!options.isNotInAlbum && (!options.albumIds || options.albumIds.length === 0), (qb) =>
|
||||||
qb.where((eb) => eb.not(eb.exists((eb) => eb.selectFrom('album_asset').whereRef('assetId', '=', 'asset.id')))),
|
qb.where((eb) => eb.not(eb.exists((eb) => eb.selectFrom('album_asset').whereRef('assetId', '=', 'asset.id')))),
|
||||||
)
|
)
|
||||||
|
.$if(options.withStacked === false, (qb) => qb.where('asset.stackId', 'is', null))
|
||||||
.$if(!!options.withExif, withExifInner)
|
.$if(!!options.withExif, withExifInner)
|
||||||
.$if(!!(options.withFaces || options.withPeople), (qb) => qb.select(withFacesAndPeople))
|
.$if(!!(options.withFaces || options.withPeople), (qb) => qb.select(withFacesAndPeople))
|
||||||
.$if(!options.withDeleted, (qb) => qb.where('asset.deletedAt', 'is', null));
|
.$if(!options.withDeleted, (qb) => qb.where('asset.deletedAt', 'is', null));
|
||||||
|
|||||||
@@ -88,4 +88,24 @@ describe(SearchService.name, () => {
|
|||||||
expect(result).toEqual({ total: 0 });
|
expect(result).toEqual({ total: 0 });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('withStacked option', () => {
|
||||||
|
it('should exclude stacked assets when withStacked is false', async () => {
|
||||||
|
const { sut, ctx } = setup();
|
||||||
|
const { user } = await ctx.newUser();
|
||||||
|
|
||||||
|
const { asset: primaryAsset } = await ctx.newAsset({ ownerId: user.id });
|
||||||
|
const { asset: stackedAsset } = await ctx.newAsset({ ownerId: user.id });
|
||||||
|
const { asset: unstackedAsset } = await ctx.newAsset({ ownerId: user.id });
|
||||||
|
|
||||||
|
await ctx.newStack({ ownerId: user.id }, [primaryAsset.id, stackedAsset.id]);
|
||||||
|
|
||||||
|
const auth = factory.auth({ user: { id: user.id } });
|
||||||
|
|
||||||
|
const response = await sut.searchMetadata(auth, { withStacked: false });
|
||||||
|
|
||||||
|
expect(response.assets.items.length).toBe(1);
|
||||||
|
expect(response.assets.items[0].id).toBe(unstackedAsset.id);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user