mirror of
https://github.com/immich-app/immich.git
synced 2026-05-26 17:02:36 -04:00
013ea37a0d
* refactor!: change number to integer types * fix oversight
53 lines
2.0 KiB
TypeScript
53 lines
2.0 KiB
TypeScript
import { createZodDto } from 'nestjs-zod';
|
|
import { Session } from 'src/database';
|
|
import z from 'zod';
|
|
|
|
const SessionCreateSchema = z
|
|
.object({
|
|
duration: z.int().min(1).optional().describe('Session duration in seconds'),
|
|
deviceType: z.string().optional().describe('Device type'),
|
|
deviceOS: z.string().optional().describe('Device OS'),
|
|
})
|
|
.meta({ id: 'SessionCreateDto' });
|
|
|
|
const SessionUpdateSchema = z
|
|
.object({
|
|
isPendingSyncReset: z.boolean().optional().describe('Reset pending sync state'),
|
|
})
|
|
.meta({ id: 'SessionUpdateDto' });
|
|
|
|
const SessionResponseSchema = z
|
|
.object({
|
|
id: z.string().describe('Session ID'),
|
|
createdAt: z.string().describe('Creation date'),
|
|
updatedAt: z.string().describe('Last update date'),
|
|
expiresAt: z.string().optional().describe('Expiration date'),
|
|
current: z.boolean().describe('Is current session'),
|
|
deviceType: z.string().describe('Device type'),
|
|
deviceOS: z.string().describe('Device OS'),
|
|
appVersion: z.string().nullable().describe('App version'),
|
|
isPendingSyncReset: z.boolean().describe('Is pending sync reset'),
|
|
})
|
|
.meta({ id: 'SessionResponseDto' });
|
|
|
|
const SessionCreateResponseSchema = SessionResponseSchema.extend({
|
|
token: z.string().describe('Session token'),
|
|
}).meta({ id: 'SessionCreateResponseDto' });
|
|
|
|
export class SessionCreateDto extends createZodDto(SessionCreateSchema) {}
|
|
export class SessionUpdateDto extends createZodDto(SessionUpdateSchema) {}
|
|
export class SessionResponseDto extends createZodDto(SessionResponseSchema) {}
|
|
export class SessionCreateResponseDto extends createZodDto(SessionCreateResponseSchema) {}
|
|
|
|
export const mapSession = (entity: Session, currentId?: string): SessionResponseDto => ({
|
|
id: entity.id,
|
|
createdAt: entity.createdAt.toISOString(),
|
|
updatedAt: entity.updatedAt.toISOString(),
|
|
expiresAt: entity.expiresAt?.toISOString(),
|
|
current: currentId === entity.id,
|
|
appVersion: entity.appVersion,
|
|
deviceOS: entity.deviceOS,
|
|
deviceType: entity.deviceType,
|
|
isPendingSyncReset: entity.isPendingSyncReset,
|
|
});
|