refactor(server): change asset entity to date type (#2599)

* refactor(server): change asset entity to date type

* lower coverage threshold
This commit is contained in:
Michel Heusschen
2023-05-29 16:05:14 +02:00
committed by GitHub
parent caba462703
commit 94d0705607
18 changed files with 98 additions and 93 deletions

View File

@@ -15,8 +15,8 @@ export interface LivePhotoSearchOptions {
export interface MapMarkerSearchOptions {
isFavorite?: boolean;
fileCreatedBefore?: string;
fileCreatedAfter?: string;
fileCreatedBefore?: Date;
fileCreatedAfter?: Date;
}
export interface MapMarker {

View File

@@ -1,7 +1,7 @@
import { ApiProperty } from '@nestjs/swagger';
import { toBoolean } from 'apps/immich/src/utils/transform.util';
import { Transform } from 'class-transformer';
import { IsBoolean, IsISO8601, IsOptional } from 'class-validator';
import { Transform, Type } from 'class-transformer';
import { IsBoolean, IsDate, IsOptional } from 'class-validator';
export class MapMarkerDto {
@ApiProperty()
@@ -10,13 +10,13 @@ export class MapMarkerDto {
@Transform(toBoolean)
isFavorite?: boolean;
@ApiProperty({ format: 'date-time' })
@IsOptional()
@IsISO8601({ strict: true, strictSeparator: true })
fileCreatedAfter?: string;
@IsDate()
@Type(() => Date)
fileCreatedAfter?: Date;
@ApiProperty({ format: 'date-time' })
@IsOptional()
@IsISO8601({ strict: true, strictSeparator: true })
fileCreatedBefore?: string;
@IsDate()
@Type(() => Date)
fileCreatedBefore?: Date;
}

View File

@@ -16,9 +16,9 @@ export class AssetResponseDto {
originalPath!: string;
originalFileName!: string;
resized!: boolean;
fileCreatedAt!: string;
fileModifiedAt!: string;
updatedAt!: string;
fileCreatedAt!: Date;
fileModifiedAt!: Date;
updatedAt!: Date;
isFavorite!: boolean;
isArchived!: boolean;
mimeType!: string | null;

View File

@@ -107,7 +107,7 @@ export class StorageTemplateCore {
this.render(
template,
{
fileCreatedAt: new Date().toISOString(),
fileCreatedAt: new Date(),
originalPath: '/upload/test/IMG_123.jpg',
type: AssetType.IMAGE,
} as AssetEntity,
@@ -140,7 +140,7 @@ export class StorageTemplateCore {
filetypefull: asset.type == AssetType.IMAGE ? 'IMAGE' : 'VIDEO',
};
const dt = luxon.DateTime.fromISO(new Date(asset.fileCreatedAt).toISOString());
const dt = luxon.DateTime.fromJSDate(asset.fileCreatedAt);
const dateTokens = [
...supportedYearTokens,

View File

@@ -140,8 +140,8 @@ export const assetEntityStub = {
id: 'asset-id',
originalFileName: 'asset_1.jpeg',
deviceAssetId: 'device-asset-id',
fileModifiedAt: '2023-02-23T05:06:29.716Z',
fileCreatedAt: '2023-02-23T05:06:29.716Z',
fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'),
fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'),
owner: userEntityStub.user1,
ownerId: 'user-id',
deviceId: 'device-id',
@@ -151,8 +151,8 @@ export const assetEntityStub = {
type: AssetType.IMAGE,
webpPath: null,
encodedVideoPath: null,
createdAt: '2023-02-23T05:06:29.716Z',
updatedAt: '2023-02-23T05:06:29.716Z',
createdAt: new Date('2023-02-23T05:06:29.716Z'),
updatedAt: new Date('2023-02-23T05:06:29.716Z'),
mimeType: null,
isFavorite: true,
isArchived: false,
@@ -168,8 +168,8 @@ export const assetEntityStub = {
image: Object.freeze<AssetEntity>({
id: 'asset-id',
deviceAssetId: 'device-asset-id',
fileModifiedAt: '2023-02-23T05:06:29.716Z',
fileCreatedAt: '2023-02-23T05:06:29.716Z',
fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'),
fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'),
owner: userEntityStub.user1,
ownerId: 'user-id',
deviceId: 'device-id',
@@ -179,8 +179,8 @@ export const assetEntityStub = {
type: AssetType.IMAGE,
webpPath: null,
encodedVideoPath: null,
createdAt: '2023-02-23T05:06:29.716Z',
updatedAt: '2023-02-23T05:06:29.716Z',
createdAt: new Date('2023-02-23T05:06:29.716Z'),
updatedAt: new Date('2023-02-23T05:06:29.716Z'),
mimeType: null,
isFavorite: true,
isArchived: false,
@@ -198,8 +198,8 @@ export const assetEntityStub = {
id: 'asset-id',
originalFileName: 'asset-id.ext',
deviceAssetId: 'device-asset-id',
fileModifiedAt: '2023-02-23T05:06:29.716Z',
fileCreatedAt: '2023-02-23T05:06:29.716Z',
fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'),
fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'),
owner: userEntityStub.user1,
ownerId: 'user-id',
deviceId: 'device-id',
@@ -209,8 +209,8 @@ export const assetEntityStub = {
type: AssetType.VIDEO,
webpPath: null,
encodedVideoPath: null,
createdAt: '2023-02-23T05:06:29.716Z',
updatedAt: '2023-02-23T05:06:29.716Z',
createdAt: new Date('2023-02-23T05:06:29.716Z'),
updatedAt: new Date('2023-02-23T05:06:29.716Z'),
mimeType: null,
isFavorite: true,
isArchived: false,
@@ -229,8 +229,8 @@ export const assetEntityStub = {
ownerId: authStub.user1.id,
type: AssetType.VIDEO,
isVisible: false,
fileModifiedAt: '2022-06-19T23:41:36.910Z',
fileCreatedAt: '2022-06-19T23:41:36.910Z',
fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'),
fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'),
} as AssetEntity),
livePhotoStillAsset: Object.freeze({
@@ -240,15 +240,15 @@ export const assetEntityStub = {
type: AssetType.IMAGE,
livePhotoVideoId: 'live-photo-motion-asset',
isVisible: true,
fileModifiedAt: '2022-06-19T23:41:36.910Z',
fileCreatedAt: '2022-06-19T23:41:36.910Z',
fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'),
fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'),
} as AssetEntity),
withLocation: Object.freeze<AssetEntity>({
id: 'asset-with-favorite-id',
deviceAssetId: 'device-asset-id',
fileModifiedAt: '2023-02-23T05:06:29.716Z',
fileCreatedAt: '2023-02-23T05:06:29.716Z',
fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'),
fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'),
owner: userEntityStub.user1,
ownerId: 'user-id',
deviceId: 'device-id',
@@ -259,8 +259,8 @@ export const assetEntityStub = {
type: AssetType.IMAGE,
webpPath: null,
encodedVideoPath: null,
createdAt: '2023-02-23T05:06:29.716Z',
updatedAt: '2023-02-23T05:06:29.716Z',
createdAt: new Date('2023-02-23T05:06:29.716Z'),
updatedAt: new Date('2023-02-23T05:06:29.716Z'),
mimeType: null,
isFavorite: false,
isArchived: false,
@@ -280,8 +280,8 @@ export const assetEntityStub = {
sidecar: Object.freeze<AssetEntity>({
id: 'asset-id',
deviceAssetId: 'device-asset-id',
fileModifiedAt: '2023-02-23T05:06:29.716Z',
fileCreatedAt: '2023-02-23T05:06:29.716Z',
fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'),
fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'),
owner: userEntityStub.user1,
ownerId: 'user-id',
deviceId: 'device-id',
@@ -291,8 +291,8 @@ export const assetEntityStub = {
type: AssetType.IMAGE,
webpPath: null,
encodedVideoPath: null,
createdAt: '2023-02-23T05:06:29.716Z',
updatedAt: '2023-02-23T05:06:29.716Z',
createdAt: new Date('2023-02-23T05:06:29.716Z'),
updatedAt: new Date('2023-02-23T05:06:29.716Z'),
mimeType: null,
isFavorite: true,
isArchived: false,
@@ -447,9 +447,9 @@ const assetResponse: AssetResponseDto = {
originalPath: 'fake_path/jpeg',
originalFileName: 'asset_1.jpeg',
resized: false,
fileModifiedAt: today.toISOString(),
fileCreatedAt: today.toISOString(),
updatedAt: today.toISOString(),
fileModifiedAt: today,
fileCreatedAt: today,
updatedAt: today,
isFavorite: false,
isArchived: false,
mimeType: 'image/jpeg',
@@ -700,10 +700,10 @@ export const sharedLinkStub = {
originalPath: 'fake_path/jpeg',
resizePath: '',
checksum: Buffer.from('file hash', 'utf8'),
fileModifiedAt: today.toISOString(),
fileCreatedAt: today.toISOString(),
createdAt: today.toISOString(),
updatedAt: today.toISOString(),
fileModifiedAt: today,
fileCreatedAt: today,
createdAt: today,
updatedAt: today,
isFavorite: false,
isArchived: false,
mimeType: 'image/jpeg',

View File

@@ -55,16 +55,16 @@ export class AssetEntity {
encodedVideoPath!: string | null;
@CreateDateColumn({ type: 'timestamptz' })
createdAt!: string;
createdAt!: Date;
@UpdateDateColumn({ type: 'timestamptz' })
updatedAt!: string;
updatedAt!: Date;
@Column({ type: 'timestamptz' })
fileCreatedAt!: string;
fileCreatedAt!: Date;
@Column({ type: 'timestamptz' })
fileModifiedAt!: string;
fileModifiedAt!: Date;
@Column({ type: 'boolean', default: false })
isFavorite!: boolean;