1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2024-12-29 15:11:58 +00:00

fix(server): include partner assets in random endpoint (#12599)

This commit is contained in:
Jason Rasmussen 2024-09-12 13:56:38 -04:00 committed by GitHub
parent d03e97f650
commit 7b737786b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 10 deletions

View file

@ -175,7 +175,7 @@ export interface IAssetRepository {
libraryId?: string,
withDeleted?: boolean,
): Paginated<AssetEntity>;
getRandom(userId: string, count: number): Promise<AssetEntity[]>;
getRandom(userIds: string[], count: number): Promise<AssetEntity[]>;
getFirstAssetForAlbumId(albumId: string): Promise<AssetEntity | null>;
getLastUpdatedAssetForAlbumId(albumId: string): Promise<AssetEntity | null>;
getExternalLibraryAssetPaths(pagination: PaginationOptions, libraryId: string): Paginated<AssetPathEntity>;

View file

@ -623,14 +623,9 @@ export class AssetRepository implements IAssetRepository {
return result;
}
@GenerateSql({ params: [DummyValue.UUID, DummyValue.NUMBER] })
getRandom(ownerId: string, count: number): Promise<AssetEntity[]> {
const builder = this.getBuilder({
userIds: [ownerId],
exifInfo: true,
});
return builder.orderBy('RANDOM()').limit(count).getMany();
@GenerateSql({ params: [[DummyValue.UUID], DummyValue.NUMBER] })
getRandom(userIds: string[], count: number): Promise<AssetEntity[]> {
return this.getBuilder({ userIds, exifInfo: true }).orderBy('RANDOM()').limit(count).getMany();
}
@GenerateSql({ params: [{ size: TimeBucketSize.MONTH }] })

View file

@ -98,7 +98,12 @@ export class AssetService {
}
async getRandom(auth: AuthDto, count: number): Promise<AssetResponseDto[]> {
const assets = await this.assetRepository.getRandom(auth.user.id, count);
const partnerIds = await getMyPartnerIds({
userId: auth.user.id,
repository: this.partnerRepository,
timelineEnabled: true,
});
const assets = await this.assetRepository.getRandom([auth.user.id, ...partnerIds], count);
return assets.map((a) => mapAsset(a, { auth }));
}