Files
ApiCore/ApiCore-Backend/src/task-templates/dto/create-task-template.dto.ts
T
Nick Szaunig 4609a0f9ec feat: Wiederkehrende Aufgaben-Vorlagen (recurring task templates)
Neue TaskTemplate-Entität mit YEARLY/MONTHLY/INTERVAL_DAYS-Wiederholung.
Fällige Aufgaben werden lazy bei GET /tasks erzeugt (Compare-and-Swap auf
nextDueDate), damit mehrere API-Replicas im Kubernetes-Cluster dieselbe
Vorlage nicht doppelt feuern - ohne zusätzliche Cron-Abhängigkeit.

Frontend: Verwaltungsseite unter /settings/task-templates zum Anlegen,
Auflisten und Deaktivieren von Vorlagen.
2026-08-25 05:36:55 +02:00

54 lines
1.2 KiB
TypeScript

import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsEnum, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
import {
TaskPriority,
TaskTemplateRecurrenceType,
} from '../../../generated/prisma';
export class CreateTaskTemplateDto {
@ApiProperty()
@IsString()
title!: string;
@ApiPropertyOptional()
@IsOptional()
@IsString()
description?: string;
@ApiPropertyOptional({ enum: TaskPriority })
@IsOptional()
@IsEnum(TaskPriority)
priority?: TaskPriority;
@ApiPropertyOptional()
@IsOptional()
@IsString()
assignedUserId?: string;
@ApiProperty({ enum: TaskTemplateRecurrenceType })
@IsEnum(TaskTemplateRecurrenceType)
recurrenceType!: TaskTemplateRecurrenceType;
@ApiPropertyOptional({ description: '1-12, erforderlich bei YEARLY' })
@IsOptional()
@IsInt()
@Min(1)
@Max(12)
recurrenceMonth?: number;
@ApiPropertyOptional({
description: '1-31, erforderlich bei YEARLY und MONTHLY',
})
@IsOptional()
@IsInt()
@Min(1)
@Max(31)
recurrenceDayOfMonth?: number;
@ApiPropertyOptional({ description: 'erforderlich bei INTERVAL_DAYS' })
@IsOptional()
@IsInt()
@Min(1)
intervalDays?: number;
}