src/task/tasks.service.ts
Methods |
|
constructor(taskRepository: TaskRepository)
|
||||||
Defined in src/task/tasks.service.ts:12
|
||||||
Parameters :
|
Async createTask | ||||||||||||
createTask(createTaskDto: CreateTaskDTO, user: User)
|
||||||||||||
Defined in src/task/tasks.service.ts:75
|
||||||||||||
Create a task
Parameters :
Example :
Returns :
Promise<Task>
New task created for user |
Async deleteTask | ||||||||||||
deleteTask(id: string, user: User)
|
||||||||||||
Defined in src/task/tasks.service.ts:111
|
||||||||||||
Delete a task
Parameters :
Example :
Returns :
Promise<DeleteResult>
The number of tasks were affected by delete |
Async getTaskById |
getTaskById(id: string, user: User)
|
Defined in src/task/tasks.service.ts:54
|
Gets a single task
Example :
Returns :
Promise<Task>
A task by user. |
Async getTasks | ||||||||||||
getTasks(filterDto: GetTasksFilterDto, user: User)
|
||||||||||||
Defined in src/task/tasks.service.ts:39
|
||||||||||||
Get all tasks /w filter options
Parameters :
Example :
Returns :
Promise<Task[]>
The assosited task/(s) for this user by criteria all/status/search |
Async updateTaskStatus | ||||||||||||||||
updateTaskStatus(id: string, status: TaskStatus, user: User)
|
||||||||||||||||
Defined in src/task/tasks.service.ts:94
|
||||||||||||||||
Update a task status
Parameters :
Example :
Returns :
Promise<Task>
Updated task for user |
import { TaskRepository } from './task.repository';
import { GetTasksFilterDto } from './dto/get-tasks-filter.dto';
import { CreateTaskDTO } from './dto/create-task.dto';
import { Injectable, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository, DeleteResult } from 'typeorm';
import { Task } from './task-entity';
import { TaskStatus } from './task-status.enum';
import { User } from '../auth/user.entity';
@Injectable()
export class TasksService {
constructor(@InjectRepository(TaskRepository) private taskRepository: TaskRepository) {}
/**
* Get all tasks /w filter options
*
* @example
* This gets all tasks for user
* getTasks(user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @example
* This is keyword search for hello
* getTasks(search: hello, user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @example
* This is a status query
* getTasks(status: DONE, user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @example
* This is a keyword search within a status
* getTasks(search: hello, status: DONE, user)
*
* @param {string} search Searches tasks with search term {@link task-status.enum.dto}
* @param {string} status Searches tasks with different status {@link task-status.enum.dto}
* @param {string} user Searches for tasks owned by user {@link user.entity.ts}
* @returns The assosited task/(s) for this user by criteria all/status/search
*/
async getTasks(filterDto: GetTasksFilterDto, user: User): Promise<Task[]> {
return await this.taskRepository.getTasks(filterDto, user);
}
/**
* Gets a single task
*
* @example
* Gets single task for user by id
* getTaskById(id: 642d510f-fb27-45f0-a650-5991428aae9d, user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @param {string} id Task by id
* @param {string} user User who owns task
* @returns A task by user.
*/
async getTaskById(id: string, user: User): Promise<Task> {
const found = await this.taskRepository.findOne({ where: { id, userId: user.id } });
if (!found) {
throw new NotFoundException(`Task with ID ${id} not found.`);
}
return found;
}
/**
* Create a task
*
* @example
* Creates a task
* createTask(title: Hello, description: World, user),
*
* @param {string} title Title of your task {@link create.task.dto}
* @param {string} description Description of your task {@link create.task.dto}
* @param {string} user Creates task for this user {@link user.auth.entity}
* @returns New task created for user
*/
async createTask(
createTaskDto: CreateTaskDTO,
user: User,
): Promise<Task> {
return await this.taskRepository.createTask(createTaskDto, user);
}
/**
* Update a task status
*
* @example
* Updates a task status
* updateTaskStatus(id: 642d510f-fb27-45f0-a650-5991428aae9d, status: DONE, user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @param {string} id Id of your task {@link task-entity}
* @param {string} status Status of your task {@link task-status.enum}
* @param {string} user Authorized user for {@link user.entity}
* @returns Updated task for user
*/
async updateTaskStatus(id: string, status: TaskStatus, user: User): Promise<Task> {
const task = await this.getTaskById(id, user);
task.status = status;
await task.save();
return task;
}
/**
* Delete a task
*
* @example
* deleteTask(id: 642d510f-fb27-45f0-a650-5991428aae9d, user: 642d510f-fb27-45f0-a650-5991428aae9d)
*
* @param {string} id Id of your task {@link task-entity}
* @param {string} user Id of user {@link user.entity}
* @returns The number of tasks were affected by delete
*/
async deleteTask(id: string, user: User): Promise<DeleteResult> {
const result = await this.taskRepository.delete({ id, userId: user.id });
if (result.affected === 0) {
throw new NotFoundException(`Task with ID ${id} not found`);
}
return result;
}
}