File

src/task/tasks.service.ts

Index

Methods

Constructor

constructor(taskRepository: TaskRepository)
Parameters :
Name Type Optional
taskRepository TaskRepository No

Methods

Async createTask
createTask(createTaskDto: CreateTaskDTO, user: User)

Create a task

Parameters :
Name Type Optional Description
createTaskDto CreateTaskDTO No
user User No

Creates task for this user {

Example :
Creates a task
createTask(title: Hello, description: World, user),
Returns : Promise<Task>

New task created for user

Async deleteTask
deleteTask(id: string, user: User)

Delete a task

Parameters :
Name Type Optional Description
id string No

Id of your task {

user User No

Id of user {

Example :
deleteTask(id: 642d510f-fb27-45f0-a650-5991428aae9d, user: 642d510f-fb27-45f0-a650-5991428aae9d)
Returns : Promise<DeleteResult>

The number of tasks were affected by delete

Async getTaskById
getTaskById(id: string, user: User)

Gets a single task

Parameters :
Name Type Optional Description
id string No

Task by id

user User No

User who owns task

Example :
Gets single task for user by id
getTaskById(id: 642d510f-fb27-45f0-a650-5991428aae9d, user: 642d510f-fb27-45f0-a650-5991428aae9d)
Returns : Promise<Task>

A task by user.

Async getTasks
getTasks(filterDto: GetTasksFilterDto, user: User)

Get all tasks /w filter options

Parameters :
Name Type Optional Description
filterDto GetTasksFilterDto No
user User No

Searches for tasks owned by user {

Example :
This gets all tasks for user
getTasks(user: 642d510f-fb27-45f0-a650-5991428aae9d)
This is keyword search for hello
getTasks(search: hello, user: 642d510f-fb27-45f0-a650-5991428aae9d)
This is a status query
getTasks(status: DONE, user: 642d510f-fb27-45f0-a650-5991428aae9d)
This is a keyword search within a status
getTasks(search: hello, status: DONE, user)
Returns : Promise<Task[]>

The assosited task/(s) for this user by criteria all/status/search

Async updateTaskStatus
updateTaskStatus(id: string, status: TaskStatus, user: User)

Update a task status

Parameters :
Name Type Optional Description
id string No

Id of your task {

status TaskStatus No

Status of your task {

user User No

Authorized user for {

Example :
Updates a task status
updateTaskStatus(id: 642d510f-fb27-45f0-a650-5991428aae9d, status: DONE, user: 642d510f-fb27-45f0-a650-5991428aae9d)
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;
    }
}

result-matching ""

    No results matching ""