feat: добавить модуль базы данных с PGlite и Drizzle-ORM, а также CRUD для категорий списка желаний

This commit is contained in:
2025-12-06 11:15:38 +03:00
parent 7eb4fb731b
commit 043b2fd681
5 changed files with 57 additions and 151 deletions

View File

@@ -22,7 +22,7 @@ const databaseProvider = {
const client = new PGlite(dbPath);
const db = drizzle(client, { schema });
// Создаем таблицу напрямую вместо использования миграций
// Создаем таблицы напрямую вместо использования миграций
try {
await client.exec(`
CREATE TABLE IF NOT EXISTS events (
@@ -42,6 +42,32 @@ const databaseProvider = {
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS wishlist_categories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL UNIQUE,
slug TEXT NOT NULL UNIQUE,
min_price INTEGER NOT NULL DEFAULT 0,
max_price INTEGER,
color TEXT,
icon TEXT,
"order" INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS wishlist_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
description TEXT,
price INTEGER NOT NULL,
currency TEXT NOT NULL DEFAULT 'RUB',
link TEXT,
images TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
category_id UUID NOT NULL REFERENCES wishlist_categories(id) ON DELETE RESTRICT,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
`);
console.log('✅ Database initialized successfully');
} catch (error) {
@@ -58,4 +84,4 @@ const databaseProvider = {
providers: [databaseProvider],
exports: [DATABASE_CONNECTION],
})
export class DatabaseModule {}
export class DatabaseModule { }