/
Saypi
/
task-manager-test
Обзор
Документация
Войти
/
Saypi
/
task-manager-test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/application/tasks/task.use-cases.ts
111 строк
4 KB
Saipykurbanov
first_commit
05 ноя 2025, 21:19
05 ноя 2025, 21:19
ed9bfce
Код
Авторство
О чём код?
import { status } from "elysia" import { NotFound } from "../../domain/common/errors" import { TypeTask, TypeTaskStatus } from "../../domain/common/types" import { Task } from "../../domain/tasks/task.entity" import prisma from "../../infrastructure/interfaces/db" import { notifications } from "../../infrastructure/interfaces/redis" export const allTasks = async (query_status: TypeTaskStatus) => { //INFO: Получение всех задач try { let data = await prisma.task.findMany({ where: query_status ? { status: query_status } : {} }) return status(200, {data, message: data?.length ? 'Все задачи получены' : 'Список пуст', status: 200}) } catch (error: any) { let statusCode: number = error.status || 500 console.error(`❌ ${error.message}`) return status(statusCode, { success: false, message: error.message, status: statusCode }) } } export const detailTask = async (id: number) => { //INFO: Получение информации о задаче try { const data = await prisma.task.findUnique({where: {id}}) return status(200, {data, message: `Информация о задаче ${data?.title}`, status: 200}) } catch (error: any) { let statusCode: number = error.status || 500 console.error(`❌ ${error.message}`) return status(statusCode, { success: false, message: error.message, status: statusCode }) } } export const createTask = async (body: TypeTask) => { //INFO: Создание задачи try { const task = new Task(body) task.validateTitle() task.validateDueDate() task.validateStatus() let data = await prisma.task.create({ data: body }) if(task.isDueSoon()) { notifications(data.id) } return status(200, {data, message: 'Задача успешно создана', status: 200}) } catch (error: any) { let statusCode: number = error.status || 500 console.error(`❌ ${error.message}`) return status(statusCode, { success: false, message: error.message, status: statusCode }) } } export const updateTask = async (body: Partial<TypeTask>, id: number) => { //INFO: Обновление задачи try { const update_task = await prisma.task.findUnique({where: {id}}) if(!update_task) throw new NotFound('Задача не найдена') const task = new Task(update_task as TypeTask) task.update(body) let data = await prisma.task.update({ where: {id}, data: body }) if(task.isDueSoon()) { notifications(data.id) } return status(200, {data, message: 'Задача успешно обновлена', status: 200}) } catch (error: any) { let statusCode: number = error.status || 500 console.error(`❌ ${error.message}`) return status(statusCode, { success: false, message: error.message, status: statusCode }) } } export const deleteTask = async (id: number) => { //INFO: Удаление задачи try { let task = await prisma.task.findUnique({where: {id}}) if(!task) throw new NotFound('Задача не найдена') const delete_task = await prisma.task.delete({where: {id}}) return status(200, {data: delete_task, message: 'Задача успешно удалена', status: 200}) } catch (error: any) { let statusCode: number = error.status || 500 console.error(`❌ ${error.message}`) return status(statusCode, { success: false, message: error.message, status: statusCode }) } }