diff --git a/server/src/database.ts b/server/src/database.ts index 45e7cad490..9ab89b96a5 100644 --- a/server/src/database.ts +++ b/server/src/database.ts @@ -1,4 +1,4 @@ -import { AssetStatus, AssetType, MemoryType, Permission, UserStatus } from 'src/enum'; +import { AlbumUserRole, AssetStatus, AssetType, MemoryType, Permission, UserStatus } from 'src/enum'; import { OnThisDayData, UserMetadataItem } from 'src/types'; export type AuthUser = { @@ -10,6 +10,11 @@ export type AuthUser = { quotaSizeInBytes: number | null; }; +export type AlbumUser = { + user: User; + role: AlbumUserRole; +}; + export type Library = { id: string; ownerId: string; diff --git a/server/src/entities/album-user.entity.ts b/server/src/entities/album-user.entity.ts deleted file mode 100644 index b27c68dc74..0000000000 --- a/server/src/entities/album-user.entity.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { User } from 'src/database'; -import { AlbumEntity } from 'src/entities/album.entity'; -import { AlbumUserRole } from 'src/enum'; - -export class AlbumUserEntity { - albumId!: string; - userId!: string; - album!: AlbumEntity; - user!: User; - role!: AlbumUserRole; -} diff --git a/server/src/entities/album.entity.ts b/server/src/entities/album.entity.ts index 42f5b5fa02..eb20c1afdd 100644 --- a/server/src/entities/album.entity.ts +++ b/server/src/entities/album.entity.ts @@ -1,5 +1,4 @@ -import { User } from 'src/database'; -import { AlbumUserEntity } from 'src/entities/album-user.entity'; +import { AlbumUser, User } from 'src/database'; import { AssetEntity } from 'src/entities/asset.entity'; import { SharedLinkEntity } from 'src/entities/shared-link.entity'; import { AssetOrder } from 'src/enum'; @@ -16,7 +15,7 @@ export class AlbumEntity { deletedAt!: Date | null; albumThumbnailAsset!: AssetEntity | null; albumThumbnailAssetId!: string | null; - albumUsers!: AlbumUserEntity[]; + albumUsers!: AlbumUser[]; assets!: AssetEntity[]; sharedLinks!: SharedLinkEntity[]; isActivityEnabled!: boolean; diff --git a/server/src/services/album.service.ts b/server/src/services/album.service.ts index cbe81f1c0d..eac000005b 100644 --- a/server/src/services/album.service.ts +++ b/server/src/services/album.service.ts @@ -7,13 +7,13 @@ import { CreateAlbumDto, GetAlbumsDto, UpdateAlbumDto, + UpdateAlbumUserDto, mapAlbum, mapAlbumWithAssets, mapAlbumWithoutAssets, } from 'src/dtos/album.dto'; import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto'; import { AuthDto } from 'src/dtos/auth.dto'; -import { AlbumUserEntity } from 'src/entities/album-user.entity'; import { AlbumEntity } from 'src/entities/album.entity'; import { Permission } from 'src/enum'; import { AlbumAssetCount, AlbumInfoOptions } from 'src/repositories/album.repository'; @@ -247,7 +247,7 @@ export class AlbumService extends BaseService { await this.albumUserRepository.delete({ albumsId: id, usersId: userId }); } - async updateUser(auth: AuthDto, id: string, userId: string, dto: Partial): Promise { + async updateUser(auth: AuthDto, id: string, userId: string, dto: UpdateAlbumUserDto): Promise { await this.requireAccess({ auth, permission: Permission.ALBUM_SHARE, ids: [id] }); await this.albumUserRepository.update({ albumsId: id, usersId: userId }, { role: dto.role }); } diff --git a/server/src/services/notification.service.spec.ts b/server/src/services/notification.service.spec.ts index 823f1614ea..bd6c6e098a 100644 --- a/server/src/services/notification.service.spec.ts +++ b/server/src/services/notification.service.spec.ts @@ -1,7 +1,7 @@ import { plainToInstance } from 'class-transformer'; import { defaults, SystemConfig } from 'src/config'; +import { AlbumUser } from 'src/database'; import { SystemConfigDto } from 'src/dtos/system-config.dto'; -import { AlbumUserEntity } from 'src/entities/album-user.entity'; import { AssetFileEntity } from 'src/entities/asset-files.entity'; import { AssetFileType, JobName, JobStatus, UserMetadataKey } from 'src/enum'; import { EmailTemplate } from 'src/repositories/notification.repository'; @@ -503,7 +503,7 @@ describe(NotificationService.name, () => { it('should skip recipient that could not be looked up', async () => { mocks.album.getById.mockResolvedValue({ ...albumStub.emptyWithValidThumbnail, - albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUserEntity], + albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUser], }); mocks.user.get.mockResolvedValueOnce(userStub.user1); mocks.notification.renderEmail.mockResolvedValue({ html: '', text: '' }); @@ -516,7 +516,7 @@ describe(NotificationService.name, () => { it('should skip recipient with disabled email notifications', async () => { mocks.album.getById.mockResolvedValue({ ...albumStub.emptyWithValidThumbnail, - albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUserEntity], + albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUser], }); mocks.user.get.mockResolvedValue({ ...userStub.user1, @@ -537,7 +537,7 @@ describe(NotificationService.name, () => { it('should skip recipient with disabled email notifications for the album update event', async () => { mocks.album.getById.mockResolvedValue({ ...albumStub.emptyWithValidThumbnail, - albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUserEntity], + albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUser], }); mocks.user.get.mockResolvedValue({ ...userStub.user1, @@ -558,7 +558,7 @@ describe(NotificationService.name, () => { it('should send email', async () => { mocks.album.getById.mockResolvedValue({ ...albumStub.emptyWithValidThumbnail, - albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUserEntity], + albumUsers: [{ user: { id: userStub.user1.id } } as AlbumUser], }); mocks.user.get.mockResolvedValue(userStub.user1); mocks.notification.renderEmail.mockResolvedValue({ html: '', text: '' }); diff --git a/server/test/fixtures/album.stub.ts b/server/test/fixtures/album.stub.ts index 3d2899d3c6..5a1c141512 100644 --- a/server/test/fixtures/album.stub.ts +++ b/server/test/fixtures/album.stub.ts @@ -38,10 +38,7 @@ export const albumStub = { albumUsers: [ { user: userStub.user1, - album: undefined as unknown as AlbumEntity, role: AlbumUserRole.EDITOR, - userId: userStub.user1.id, - albumId: 'album-2', }, ], isActivityEnabled: true, @@ -63,17 +60,11 @@ export const albumStub = { albumUsers: [ { user: userStub.user1, - album: undefined as unknown as AlbumEntity, role: AlbumUserRole.EDITOR, - userId: userStub.user1.id, - albumId: 'album-3', }, { user: userStub.user2, - album: undefined as unknown as AlbumEntity, role: AlbumUserRole.EDITOR, - userId: userStub.user2.id, - albumId: 'album-3', }, ], isActivityEnabled: true, @@ -95,10 +86,7 @@ export const albumStub = { albumUsers: [ { user: userStub.admin, - album: undefined as unknown as AlbumEntity, role: AlbumUserRole.EDITOR, - userId: userStub.admin.id, - albumId: 'album-3', }, ], isActivityEnabled: true,