import { Command } from '@nestjs/cqrs'; import { SprintDetails } from '@task-stream/api/tracker/domain'; import { CommandResult } from './command-result'; export class CreateSprintCommand extends Command { constructor( public readonly actorId: string, public readonly projectId: string, public readonly name: string, public readonly startDate: string, public readonly endDate: string, public readonly goal: string | null = null, ) { super(); } } export class UpdateSprintCommand extends Command { constructor( public readonly actorId: string, public readonly sprintId: string, public readonly changes: SprintDetails, ) { super(); } } export class StartSprintCommand extends Command { constructor( public readonly actorId: string, public readonly sprintId: string, ) { super(); } } /** Ends a sprint; unfinished tickets go to `carryOverTo` (null: backlog). */ export class CloseSprintCommand extends Command { constructor( public readonly actorId: string, public readonly sprintId: string, public readonly carryOverTo: string | null, ) { super(); } } /** A planned sprint (people), or any sprint of a deleted project (`cascade`, saga). */ export class DeleteSprintCommand extends Command { constructor( public readonly actorId: string, public readonly sprintId: string, public readonly cascade = false, ) { super(); } } /** Puts a ticket in a sprint (null: back to the backlog). */ export class SetIssueSprintCommand extends Command { constructor( public readonly actorId: string, public readonly issueId: string, public readonly sprintId: string | null, ) { super(); } } /** * Saga only: a sprint closed (or was deleted), so a ticket of it moves to * `toSprintId` (null: backlog). With `onlyUnfinished`, finished ones stay as * the record of what the sprint achieved. */ export class CarryOverIssueCommand extends Command { constructor( public readonly actorId: string, public readonly issueId: string, public readonly fromSprintId: string, public readonly toSprintId: string | null, public readonly onlyUnfinished: boolean, ) { super(); } }