chore(server) Add user FK to album entity (#1569)

This commit is contained in:
Alex
2023-02-06 20:47:06 -06:00
committed by GitHub
parent ac39ebddc0
commit 3cc4af5947
14 changed files with 173 additions and 96 deletions

View File

@@ -13,7 +13,7 @@ export class AlbumResponseDto {
shared!: boolean;
sharedUsers!: UserResponseDto[];
assets!: AssetResponseDto[];
owner?: UserResponseDto;
@ApiProperty({ type: 'integer' })
assetCount!: number;
}
@@ -27,6 +27,7 @@ export function mapAlbum(entity: AlbumEntity): AlbumResponseDto {
sharedUsers.push(user);
}
});
return {
albumName: entity.albumName,
albumThumbnailAssetId: entity.albumThumbnailAssetId,
@@ -34,6 +35,7 @@ export function mapAlbum(entity: AlbumEntity): AlbumResponseDto {
updatedAt: entity.updatedAt,
id: entity.id,
ownerId: entity.ownerId,
owner: entity.owner ? mapUser(entity.owner) : undefined,
sharedUsers,
shared: sharedUsers.length > 0 || entity.sharedLinks?.length > 0,
assets: entity.assets?.map((assetAlbum) => mapAsset(assetAlbum.assetInfo)) || [],
@@ -50,6 +52,7 @@ export function mapAlbumExcludeAssetInfo(entity: AlbumEntity): AlbumResponseDto
sharedUsers.push(user);
}
});
return {
albumName: entity.albumName,
albumThumbnailAssetId: entity.albumThumbnailAssetId,
@@ -57,6 +60,7 @@ export function mapAlbumExcludeAssetInfo(entity: AlbumEntity): AlbumResponseDto
updatedAt: entity.updatedAt,
id: entity.id,
ownerId: entity.ownerId,
owner: entity.owner ? mapUser(entity.owner) : undefined,
sharedUsers,
shared: sharedUsers.length > 0 || entity.sharedLinks?.length > 0,
assets: [],

View File

@@ -25,7 +25,7 @@ export class AssetResponseDto {
exifInfo?: ExifResponseDto;
smartInfo?: SmartInfoResponseDto;
livePhotoVideoId?: string | null;
tags!: TagResponseDto[];
tags?: TagResponseDto[];
}
export function mapAsset(entity: AssetEntity): AssetResponseDto {

View File

@@ -7,7 +7,14 @@ import {
UserEntity,
UserTokenEntity,
} from '@app/infra/db/entities';
import { AlbumResponseDto, AssetResponseDto, AuthUserDto, ExifResponseDto, SharedLinkResponseDto } from '../src';
import {
AlbumResponseDto,
AssetResponseDto,
AuthUserDto,
ExifResponseDto,
mapUser,
SharedLinkResponseDto,
} from '../src';
const today = new Date();
const tomorrow = new Date();
@@ -15,68 +22,6 @@ const yesterday = new Date();
tomorrow.setDate(today.getDate() + 1);
yesterday.setDate(yesterday.getDate() - 1);
const assetInfo: ExifResponseDto = {
id: 1,
make: 'camera-make',
model: 'camera-model',
imageName: 'fancy-image',
exifImageWidth: 500,
exifImageHeight: 500,
fileSizeInByte: 100,
orientation: 'orientation',
dateTimeOriginal: today,
modifyDate: today,
lensModel: 'fancy',
fNumber: 100,
focalLength: 100,
iso: 100,
exposureTime: '1/16',
latitude: 100,
longitude: 100,
city: 'city',
state: 'state',
country: 'country',
};
const assetResponse: AssetResponseDto = {
id: 'id_1',
deviceAssetId: 'device_asset_id_1',
ownerId: 'user_id_1',
deviceId: 'device_id_1',
type: AssetType.VIDEO,
originalPath: 'fake_path/jpeg',
resizePath: '',
createdAt: today.toISOString(),
modifiedAt: today.toISOString(),
updatedAt: today.toISOString(),
isFavorite: false,
mimeType: 'image/jpeg',
smartInfo: {
id: 'should-be-a-number',
tags: [],
objects: ['a', 'b', 'c'],
},
webpPath: '',
encodedVideoPath: '',
duration: '0:00:00.00000',
exifInfo: assetInfo,
livePhotoVideoId: null,
tags: [],
};
const albumResponse: AlbumResponseDto = {
albumName: 'Test Album',
albumThumbnailAssetId: null,
createdAt: today.toISOString(),
updatedAt: today.toISOString(),
id: 'album-123',
ownerId: 'admin_id',
sharedUsers: [],
shared: false,
assets: [],
assetCount: 1,
};
export const authStub = {
admin: Object.freeze<AuthUserDto>({
id: 'admin_id',
@@ -145,6 +90,69 @@ export const userEntityStub = {
}),
};
const assetInfo: ExifResponseDto = {
id: 1,
make: 'camera-make',
model: 'camera-model',
imageName: 'fancy-image',
exifImageWidth: 500,
exifImageHeight: 500,
fileSizeInByte: 100,
orientation: 'orientation',
dateTimeOriginal: today,
modifyDate: today,
lensModel: 'fancy',
fNumber: 100,
focalLength: 100,
iso: 100,
exposureTime: '1/16',
latitude: 100,
longitude: 100,
city: 'city',
state: 'state',
country: 'country',
};
const assetResponse: AssetResponseDto = {
id: 'id_1',
deviceAssetId: 'device_asset_id_1',
ownerId: 'user_id_1',
deviceId: 'device_id_1',
type: AssetType.VIDEO,
originalPath: 'fake_path/jpeg',
resizePath: '',
createdAt: today.toISOString(),
modifiedAt: today.toISOString(),
updatedAt: today.toISOString(),
isFavorite: false,
mimeType: 'image/jpeg',
smartInfo: {
id: 'should-be-a-number',
tags: [],
objects: ['a', 'b', 'c'],
},
webpPath: '',
encodedVideoPath: '',
duration: '0:00:00.00000',
exifInfo: assetInfo,
livePhotoVideoId: null,
tags: [],
};
const albumResponse: AlbumResponseDto = {
albumName: 'Test Album',
albumThumbnailAssetId: null,
createdAt: today.toISOString(),
updatedAt: today.toISOString(),
id: 'album-123',
ownerId: 'admin_id',
owner: mapUser(userEntityStub.admin),
sharedUsers: [],
shared: false,
assets: [],
assetCount: 1,
};
export const userTokenEntityStub = {
userToken: Object.freeze<UserTokenEntity>({
id: 'token-id',
@@ -331,6 +339,7 @@ export const sharedLinkStub = {
album: {
id: 'album-123',
ownerId: authStub.admin.id,
owner: userEntityStub.admin,
albumName: 'Test Album',
createdAt: today.toISOString(),
updatedAt: today.toISOString(),