e334443919
* initial pagination impl * use limit + offset instead of take + skip * wip web pagination * working infinite scroll * update api * formatting * fix rebase * search refactor * re-add runtime config for vector search * fix rebase * fixes * useless omitBy * unnecessary handling * add sql decorator for `searchAssets` * fixed search builder * fixed sql * remove mock method * linting * fixed pagination * fixed unit tests * formatting * fix e2e tests * re-flatten search builder * refactor endpoints * clean up dto * refinements * don't break everything just yet * update openapi spec & sql * update api * linting * update sql * fixes * optimize web code * fix typing * add page limit * make limit based on asset count * increase limit * simpler import
104 lines
1.7 KiB
TypeScript
104 lines
1.7 KiB
TypeScript
import { Type } from 'class-transformer';
|
|
import {
|
|
IsBoolean,
|
|
IsDateString,
|
|
IsInt,
|
|
IsLatitude,
|
|
IsLongitude,
|
|
IsNotEmpty,
|
|
IsPositive,
|
|
IsString,
|
|
ValidateIf,
|
|
} from 'class-validator';
|
|
import { Optional, ValidateUUID } from '../../domain.util';
|
|
import { BulkIdsDto } from '../response-dto';
|
|
|
|
export class DeviceIdDto {
|
|
@IsNotEmpty()
|
|
@IsString()
|
|
deviceId!: string;
|
|
}
|
|
|
|
export enum AssetOrder {
|
|
ASC = 'asc',
|
|
DESC = 'desc',
|
|
}
|
|
|
|
const hasGPS = (o: { latitude: undefined; longitude: undefined }) =>
|
|
o.latitude !== undefined || o.longitude !== undefined;
|
|
const ValidateGPS = () => ValidateIf(hasGPS);
|
|
|
|
export class AssetBulkUpdateDto extends BulkIdsDto {
|
|
@Optional()
|
|
@IsBoolean()
|
|
isFavorite?: boolean;
|
|
|
|
@Optional()
|
|
@IsBoolean()
|
|
isArchived?: boolean;
|
|
|
|
@Optional()
|
|
@ValidateUUID()
|
|
stackParentId?: string;
|
|
|
|
@Optional()
|
|
@IsBoolean()
|
|
removeParent?: boolean;
|
|
|
|
@Optional()
|
|
@IsDateString()
|
|
dateTimeOriginal?: string;
|
|
|
|
@ValidateGPS()
|
|
@IsLatitude()
|
|
@IsNotEmpty()
|
|
latitude?: number;
|
|
|
|
@ValidateGPS()
|
|
@IsLongitude()
|
|
@IsNotEmpty()
|
|
longitude?: number;
|
|
}
|
|
|
|
export class UpdateAssetDto {
|
|
@Optional()
|
|
@IsBoolean()
|
|
isFavorite?: boolean;
|
|
|
|
@Optional()
|
|
@IsBoolean()
|
|
isArchived?: boolean;
|
|
|
|
@Optional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@Optional()
|
|
@IsDateString()
|
|
dateTimeOriginal?: string;
|
|
|
|
@ValidateGPS()
|
|
@IsLatitude()
|
|
@IsNotEmpty()
|
|
latitude?: number;
|
|
|
|
@ValidateGPS()
|
|
@IsLongitude()
|
|
@IsNotEmpty()
|
|
longitude?: number;
|
|
}
|
|
|
|
export class RandomAssetsDto {
|
|
@Optional()
|
|
@IsInt()
|
|
@IsPositive()
|
|
@Type(() => Number)
|
|
count?: number;
|
|
}
|
|
|
|
export class AssetBulkDeleteDto extends BulkIdsDto {
|
|
@Optional()
|
|
@IsBoolean()
|
|
force?: boolean;
|
|
}
|