File

src/task/task.repository.ts

Extends

Repository

Index

Methods

Methods

Async createTask
createTask(createTaskDTO: CreateTaskDTO, user: User)
Parameters :
Name Type Optional
createTaskDTO CreateTaskDTO No
user User No
Returns : Promise<Task>
Async getTasks
getTasks(filterDto: GetTasksFilterDto, user: User)
Parameters :
Name Type Optional
filterDto GetTasksFilterDto No
user User No
Returns : Promise<Task[]>
import { GetTasksFilterDto } from './dto/get-tasks-filter.dto';
import { Repository, EntityRepository } from 'typeorm';
import { Task } from './task-entity';
import { TaskStatus } from './task-status.enum';
import { CreateTaskDTO } from './dto/create-task.dto';
import { User } from '../auth/user.entity';

@EntityRepository(Task)
export class TaskRepository extends Repository<Task> {

    async createTask(
      createTaskDTO: CreateTaskDTO,
      user: User,
      ): Promise<Task> {
        const { title, description } = createTaskDTO;
        const query = this.createQueryBuilder('task');

        query.where('task.userId = :userId', { userId: user.id});

        const task = new Task();
        task.title = title;
        task.description = description;
        task.status = TaskStatus.OPEN;
        task.user = user;
        await task.save();

        delete task.user;
        return task;
    }

    async getTasks(filterDto: GetTasksFilterDto, user: User): Promise<Task[]> {
        const { status, search } = filterDto;
        const query = this.createQueryBuilder('task');

        query.where('task.userId = :userId', { userId: user.id});

        if (status) {
          query.andWhere('task.status = :status', { status });
        }

        if (search) {
          query.andWhere('task.title LIKE :search OR task.description LIKE :search', { search: `%${search}%` });
        }

        const tasks = await query.getMany();
        return tasks;
      }
}

result-matching ""

    No results matching ""