/
codiart
/
new_light_server
Обзор
Документация
Войти
/
codiart
/
new_light_server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/infrastructure/database/TaskRepository.ts
81 строка
2 KB
Maxim
Initial
05 ноя 2025, 18:08
05 ноя 2025, 18:08
b73e3bd
Код
Авторство
О чём код?
import { drizzle } from 'drizzle-orm/node-postgres'; import { Task } from "../../domain/entities/Task"; import { DB_CONFIG } from "../configuration/Database"; import { TaskRepository } from "../../domain/repositories/TaskReposotory"; import { tasks as taskSchema } from './schema'; import { QueryResult } from 'pg'; import { eq, sql } from 'drizzle-orm'; const db = drizzle(`postgres://${DB_CONFIG.user}:${DB_CONFIG.password}@${DB_CONFIG.host}:5433/${DB_CONFIG.database}`); /** * Класс репозитория задач, реализующий интерфейс TaskRepository для работы с PostgreSQL базой данных. */ export class PostgresTaskRepository implements TaskRepository { async findAll(): Promise<Task[]> { const tasks = await db.select().from(taskSchema); return tasks.map(task => ({ id: task.id, title: task.title || '', text: task.text || '', completed: task.completed || false, created: task.created || '', updated: task.updated || '', priority: task.priority || 0 })); } async add(task: Task): Promise<QueryResult> { const result = await db.insert(taskSchema).values({ title: task.title, text: task.text, completed: task.completed, created: task.created, updated: task.updated, priority: task.priority }); return result } async remove(taskId: number): Promise<QueryResult> { const result = await db.delete(taskSchema).where(eq(taskSchema.id, taskId)); return result } async find(taskId: number): Promise<Task | null> { const [task] = await db.select().from(taskSchema).where(eq(taskSchema.id, taskId)); if (!task) { return null; } return { id: task.id!, title: task.title!, text: task.text!, completed: task.completed!, created: task.created!, updated: task.updated!, priority: task.priority! } } async update(task: Task): Promise<QueryResult> { const result = await db .update(taskSchema) .set({ title: task.title, text: task.text, completed: task.completed, created: task.created, priority: task.priority, updated: sql`NOW()` }) .where(eq(taskSchema.id, task.id)); return result } }