From 52bee379d417d37b21b3d6f0cac8e67f83716925 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 4 Mar 2026 16:03:44 +0100 Subject: [PATCH] feat: add task duplicate frontend model and service --- frontend/src/modelTypes/ITaskDuplicate.ts | 7 +++++++ frontend/src/models/taskDuplicateModel.ts | 17 +++++++++++++++++ frontend/src/services/taskDuplicateService.ts | 15 +++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 frontend/src/modelTypes/ITaskDuplicate.ts create mode 100644 frontend/src/models/taskDuplicateModel.ts create mode 100644 frontend/src/services/taskDuplicateService.ts diff --git a/frontend/src/modelTypes/ITaskDuplicate.ts b/frontend/src/modelTypes/ITaskDuplicate.ts new file mode 100644 index 000000000..4ae313eb3 --- /dev/null +++ b/frontend/src/modelTypes/ITaskDuplicate.ts @@ -0,0 +1,7 @@ +import type {IAbstract} from './IAbstract' +import type {ITask} from './ITask' + +export interface ITaskDuplicate extends IAbstract { + taskId: number + duplicatedTask: ITask | null +} diff --git a/frontend/src/models/taskDuplicateModel.ts b/frontend/src/models/taskDuplicateModel.ts new file mode 100644 index 000000000..209a7806b --- /dev/null +++ b/frontend/src/models/taskDuplicateModel.ts @@ -0,0 +1,17 @@ +import AbstractModel from './abstractModel' +import TaskModel from './task' + +import type {ITaskDuplicate} from '@/modelTypes/ITaskDuplicate' +import type {ITask} from '@/modelTypes/ITask' + +export default class TaskDuplicateModel extends AbstractModel implements ITaskDuplicate { + taskId = 0 + duplicatedTask: ITask | null = null + + constructor(data: Partial) { + super() + this.assignData(data) + + this.duplicatedTask = this.duplicatedTask ? new TaskModel(this.duplicatedTask) : null + } +} diff --git a/frontend/src/services/taskDuplicateService.ts b/frontend/src/services/taskDuplicateService.ts new file mode 100644 index 000000000..5a5724020 --- /dev/null +++ b/frontend/src/services/taskDuplicateService.ts @@ -0,0 +1,15 @@ +import AbstractService from './abstractService' +import TaskDuplicateModel from '@/models/taskDuplicateModel' +import type {ITaskDuplicate} from '@/modelTypes/ITaskDuplicate' + +export default class TaskDuplicateService extends AbstractService { + constructor() { + super({ + create: '/tasks/{taskId}/duplicate', + }) + } + + modelFactory(data: Partial) { + return new TaskDuplicateModel(data) + } +}