forked from Cutlery/immich
* Fix lint issues and some other TS issues - set TypeScript in strict mode - add npm commands to lint / check code - fix all lint issues - fix some TS issues - rename User reponse DTO to make it consistent with the other ones - override Express/User interface to use UserResponseDto interface This is for when the accessing the `user` from a Express Request, like in `asset-upload-config` * Fix the rest of TS issues - fix all the remaining TypeScript errors - add missing `@types/mapbox__mapbox-sdk` package * Move global.d.ts to server `src` folder * Update AssetReponseDto duration type This is now of type `string` that defaults to '0:00:00.00000' if not set which is what the mobile app currently expects * Set context when logging error in asset.service Use `ServeFile` as the context for logging an error when asset.resizePath is not set * Fix wrong AppController merge conflict resolution `redirectToWebpage` was removed in main as is no longer used.
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { AssetEntity, AssetType } from '@app/database/entities/asset.entity';
|
|
import { ExifResponseDto, mapExif } from './exif-response.dto';
|
|
import { SmartInfoResponseDto, mapSmartInfo } from './smart-info-response.dto';
|
|
|
|
export interface AssetResponseDto {
|
|
id: string;
|
|
deviceAssetId: string;
|
|
ownerId: string;
|
|
deviceId: string;
|
|
type: AssetType;
|
|
originalPath: string;
|
|
resizePath: string | null;
|
|
createdAt: string;
|
|
modifiedAt: string;
|
|
isFavorite: boolean;
|
|
mimeType: string | null;
|
|
duration: string;
|
|
exifInfo?: ExifResponseDto;
|
|
smartInfo?: SmartInfoResponseDto;
|
|
}
|
|
|
|
export function mapAsset(entity: AssetEntity): AssetResponseDto {
|
|
return {
|
|
id: entity.id,
|
|
deviceAssetId: entity.deviceAssetId,
|
|
ownerId: entity.userId,
|
|
deviceId: entity.deviceId,
|
|
type: entity.type,
|
|
originalPath: entity.originalPath,
|
|
resizePath: entity.resizePath,
|
|
createdAt: entity.createdAt,
|
|
modifiedAt: entity.modifiedAt,
|
|
isFavorite: entity.isFavorite,
|
|
mimeType: entity.mimeType,
|
|
duration: entity.duration ?? '0:00:00.00000',
|
|
exifInfo: entity.exifInfo ? mapExif(entity.exifInfo) : undefined,
|
|
smartInfo: entity.smartInfo ? mapSmartInfo(entity.smartInfo) : undefined,
|
|
};
|
|
}
|