Files
immich/server/src/dtos/queue.dto.ts
Timon 8db61d341f docs(openapi): add descriptions to OpenAPI specification (#25185)
* faces

* add openapi descriptions

* remove dto descriptions

* gen openapi

* dtos

* fix dtos

* fix more

* fix build

* more

* complete dtos

* descriptions on rebase

* gen rebase

* revert correct integer type conversion

* gen after revert

* revert correct nullables

* regen after revert

* actually incorrect adding default here

* revert correct number type conversion

* regen after revert

* revert nullable usage

* regen fully

* readd some comments

* one more

* one more

* use enum

* add missing

* add missing controllers

* add missing dtos

* complete it

* more

* describe global key and slug

* add remaining body and param descriptions

* lint and format

* cleanup

* response and schema descriptions

* test patch according to suggestion

* revert added api response objects

* revert added api body objects

* revert added api param object

* revert added api query objects

* revert reorganized http code objects

* revert reorganize ApiOkResponse objects

* revert added api response objects (2)

* revert added api tag object

* revert added api schema objects

* migrate missing asset.dto.ts

* regenerate openapi builds

* delete generated mustache files

* remove descriptions from properties that are schemas

* lint

* revert nullable type changes

* revert int/num type changes

* remove explicit default

* readd comment

* lint

* pr fixes

* last bits and pieces

* lint and format

* chore: remove rejected patches

* fix: deleting asset from asset-viewer on search results (#25596)

* fix: escape handling in search asset viewer (#25621)

* fix: correctly show owner in album options modal (#25618)

* fix: validation issues

* fix: validation issues

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Paul Makles <me@insrt.uk>
2026-01-29 08:49:15 -05:00

83 lines
2.7 KiB
TypeScript

import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { HistoryBuilder } from 'src/decorators';
import { JobName, QueueCommand, QueueJobStatus, QueueName } from 'src/enum';
import { ValidateBoolean, ValidateEnum } from 'src/validation';
export class QueueNameParamDto {
@ValidateEnum({ enum: QueueName, name: 'QueueName', description: 'Queue name' })
name!: QueueName;
}
export class QueueCommandDto {
@ValidateEnum({ enum: QueueCommand, name: 'QueueCommand', description: 'Queue command to execute' })
command!: QueueCommand;
@ValidateBoolean({ optional: true, description: 'Force the command execution (if applicable)' })
force?: boolean; // TODO: this uses undefined as a third state, which should be refactored to be more explicit
}
export class QueueUpdateDto {
@ValidateBoolean({ optional: true, description: 'Whether to pause the queue' })
isPaused?: boolean;
}
export class QueueDeleteDto {
@ValidateBoolean({
optional: true,
description: 'If true, will also remove failed jobs from the queue.',
history: new HistoryBuilder().added('v2.4.0').alpha('v2.4.0'),
})
failed?: boolean;
}
export class QueueJobSearchDto {
@ValidateEnum({
enum: QueueJobStatus,
name: 'QueueJobStatus',
optional: true,
each: true,
description: 'Filter jobs by status',
})
status?: QueueJobStatus[];
}
export class QueueJobResponseDto {
@ApiPropertyOptional({ description: 'Job ID' })
id?: string;
@ValidateEnum({ enum: JobName, name: 'JobName', description: 'Job name' })
name!: JobName;
@ApiProperty({ description: 'Job data payload', type: Object })
data!: object;
@ApiProperty({ type: 'integer', description: 'Job creation timestamp' })
timestamp!: number;
}
export class QueueStatisticsDto {
@ApiProperty({ type: 'integer', description: 'Number of active jobs' })
active!: number;
@ApiProperty({ type: 'integer', description: 'Number of completed jobs' })
completed!: number;
@ApiProperty({ type: 'integer', description: 'Number of failed jobs' })
failed!: number;
@ApiProperty({ type: 'integer', description: 'Number of delayed jobs' })
delayed!: number;
@ApiProperty({ type: 'integer', description: 'Number of waiting jobs' })
waiting!: number;
@ApiProperty({ type: 'integer', description: 'Number of paused jobs' })
paused!: number;
}
export class QueueResponseDto {
@ValidateEnum({ enum: QueueName, name: 'QueueName', description: 'Queue name' })
name!: QueueName;
@ValidateBoolean({ description: 'Whether the queue is paused' })
isPaused!: boolean;
// Description lives on schema to avoid duplication
@ApiProperty({ description: undefined })
statistics!: QueueStatisticsDto;
}