src/task/task.repository.ts
Repository
Methods |
|
| Async createTask | |||||||||
createTask(createTaskDTO: CreateTaskDTO, user: User)
|
|||||||||
|
Defined in src/task/task.repository.ts:11
|
|||||||||
|
Parameters :
Returns :
Promise<Task>
|
| Async getTasks | |||||||||
getTasks(filterDto: GetTasksFilterDto, user: User)
|
|||||||||
|
Defined in src/task/task.repository.ts:31
|
|||||||||
|
Parameters :
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;
}
}