feat(api): add admin bulk import endpoints (MS21-MIG-004) (#567)
All checks were successful
ci/woodpecker/push/api Pipeline was successful
All checks were successful
ci/woodpecker/push/api Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #567.
This commit is contained in:
76
apps/api/src/import/dto/import-task.dto.ts
Normal file
76
apps/api/src/import/dto/import-task.dto.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { IsArray, IsNumber, IsOptional, IsString, MaxLength, MinLength } from "class-validator";
|
||||
|
||||
/**
|
||||
* DTO for a single jarvis-brain task record.
|
||||
* This matches the task object shape consumed by scripts/migrate-brain.ts.
|
||||
*/
|
||||
export class ImportTaskDto {
|
||||
@IsString({ message: "id must be a string" })
|
||||
@MinLength(1, { message: "id must not be empty" })
|
||||
@MaxLength(255, { message: "id must not exceed 255 characters" })
|
||||
id!: string;
|
||||
|
||||
@IsString({ message: "title must be a string" })
|
||||
@MinLength(1, { message: "title must not be empty" })
|
||||
@MaxLength(255, { message: "title must not exceed 255 characters" })
|
||||
title!: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "domain must be a string" })
|
||||
domain?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "project must be a string" })
|
||||
project?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsArray({ message: "related must be an array" })
|
||||
@IsString({ each: true, message: "related items must be strings" })
|
||||
related?: string[];
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "priority must be a string" })
|
||||
priority?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "status must be a string" })
|
||||
status?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsNumber({}, { message: "progress must be a number" })
|
||||
progress?: number | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "due must be a string" })
|
||||
due?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsArray({ message: "blocks must be an array" })
|
||||
@IsString({ each: true, message: "blocks items must be strings" })
|
||||
blocks?: string[];
|
||||
|
||||
@IsOptional()
|
||||
@IsArray({ message: "blocked_by must be an array" })
|
||||
@IsString({ each: true, message: "blocked_by items must be strings" })
|
||||
blocked_by?: string[];
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "assignee must be a string" })
|
||||
assignee?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "created must be a string" })
|
||||
created?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "updated must be a string" })
|
||||
updated?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "notes must be a string" })
|
||||
notes?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString({ message: "notes_nontechnical must be a string" })
|
||||
notes_nontechnical?: string | null;
|
||||
}
|
||||
Reference in New Issue
Block a user