mirror of
https://github.com/immich-app/immich.git
synced 2026-05-22 23:12:32 -04:00
46 lines
2.1 KiB
TypeScript
46 lines
2.1 KiB
TypeScript
import { createZodDto } from 'nestjs-zod';
|
|
import { isoDatetimeToDate, latitudeSchema, longitudeSchema, stringToBool } from 'src/validation';
|
|
import z from 'zod';
|
|
|
|
const MapReverseGeocodeSchema = z
|
|
.object({
|
|
lat: z.coerce.number().meta({ format: 'double' }).pipe(latitudeSchema).describe('Latitude (-90 to 90)'),
|
|
lon: z.coerce.number().meta({ format: 'double' }).pipe(longitudeSchema).describe('Longitude (-180 to 180)'),
|
|
})
|
|
.meta({ id: 'MapReverseGeocodeDto' });
|
|
|
|
const MapReverseGeocodeResponseSchema = z
|
|
.object({
|
|
city: z.string().nullable().describe('City name'),
|
|
state: z.string().nullable().describe('State/Province name'),
|
|
country: z.string().nullable().describe('Country name'),
|
|
})
|
|
.meta({ id: 'MapReverseGeocodeResponseDto' });
|
|
|
|
const MapMarkerSchema = z
|
|
.object({
|
|
isArchived: stringToBool.optional().describe('Filter by archived status'),
|
|
isFavorite: stringToBool.optional().describe('Filter by favorite status'),
|
|
fileCreatedAfter: isoDatetimeToDate.optional().describe('Filter assets created after this date'),
|
|
fileCreatedBefore: isoDatetimeToDate.optional().describe('Filter assets created before this date'),
|
|
withPartners: stringToBool.optional().describe('Include partner assets'),
|
|
withSharedAlbums: stringToBool.optional().describe('Include shared album assets'),
|
|
})
|
|
.meta({ id: 'MapMarkerDto' });
|
|
|
|
const MapMarkerResponseSchema = z
|
|
.object({
|
|
id: z.string().describe('Asset ID'),
|
|
lat: z.number().meta({ format: 'double' }).describe('Latitude'),
|
|
lon: z.number().meta({ format: 'double' }).describe('Longitude'),
|
|
city: z.string().nullable().describe('City name'),
|
|
state: z.string().nullable().describe('State/Province name'),
|
|
country: z.string().nullable().describe('Country name'),
|
|
})
|
|
.meta({ id: 'MapMarkerResponseDto' });
|
|
|
|
export class MapReverseGeocodeDto extends createZodDto(MapReverseGeocodeSchema) {}
|
|
export class MapReverseGeocodeResponseDto extends createZodDto(MapReverseGeocodeResponseSchema) {}
|
|
export class MapMarkerDto extends createZodDto(MapMarkerSchema) {}
|
|
export class MapMarkerResponseDto extends createZodDto(MapMarkerResponseSchema) {}
|