diff --git a/server/package.json b/server/package.json index 54fa693..5d96e4d 100644 --- a/server/package.json +++ b/server/package.json @@ -8,18 +8,10 @@ "dev:classic": "node --watch src/index.js", "start": "node src/index.js", "db:migrate": "prisma migrate dev", - "db:migrate:test": "node --env-file=.dev_env ./node_modules/prisma/build/index.js migrate deploy", - "db:seed": "prisma db seed", - "db:seed:test": "node --env-file=.dev_env prisma/seed.js", - "db:reset:test": "node --env-file=.dev_env ./node_modules/prisma/build/index.js migrate reset --force", "db:studio": "prisma studio", - "db:studio:test": "node --env-file=.dev_env ./node_modules/prisma/build/index.js studio", "test": "vitest run", "test:watch": "vitest" }, - "prisma": { - "seed": "node prisma/seed.js" - }, "dependencies": { "@fastify/cors": "^11.2.0", "@fastify/jwt": "^10.0.0", diff --git a/server/prisma/seed.js b/server/prisma/seed.js deleted file mode 100644 index 8e57afe..0000000 --- a/server/prisma/seed.js +++ /dev/null @@ -1,209 +0,0 @@ -import { PrismaClient } from '@prisma/client' - -const prisma = new PrismaClient() - -async function main() { - const toys = await prisma.category.upsert({ - where: { slug: 'igrushki' }, - update: {}, - create: { name: 'Игрушки', slug: 'igrushki', sort: 1 }, - }) - const gifts = await prisma.category.upsert({ - where: { slug: 'suveniry' }, - update: {}, - create: { name: 'Сувениры', slug: 'suveniry', sort: 2 }, - }) - - await prisma.product.upsert({ - where: { slug: 'myagkaya-sova' }, - update: {}, - create: { - title: 'Мягкая сова', - slug: 'myagkaya-sova', - shortDescription: 'Мягкая игрушка ручной работы.', - description: 'Ручная работа, хлопок и синтепон.', - materials: JSON.stringify(['хлопок', 'синтепон']), - quantity: 3, - priceCents: 189000, - imageUrl: - 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=600&q=80', - published: true, - categoryId: toys.id, - }, - }) - - await prisma.product.upsert({ - where: { slug: 'suvenir-kolokolchik' }, - update: {}, - create: { - title: 'Колокольчик керамический', - slug: 'suvenir-kolokolchik', - shortDescription: 'Керамика с ручной росписью.', - description: 'Глазурь, ручная роспись.', - materials: JSON.stringify(['керамика', 'глазурь']), - quantity: 5, - priceCents: 45000, - imageUrl: - 'https://images.unsplash.com/photo-1513519245088-0e12902e5a38?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - }) - - const more = [ - { - title: 'Зайчик в свитере', - slug: 'zaychik-v-svitere', - shortDescription: 'Тёплый подарок — мягкий зайчик.', - description: 'Мягкая игрушка. Свитер связан вручную.', - materials: ['акрил', 'хлопок', 'синтепон'], - quantity: 2, - priceCents: 219000, - imageUrl: 'https://images.unsplash.com/photo-1543852786-1cf6624b9987?w=600&q=80', - published: true, - categoryId: toys.id, - }, - { - title: 'Подвеска “Лес”', - slug: 'podveska-les', - shortDescription: 'Лёгкая подвеска из дерева и смолы.', - description: 'Фактура дерева + прозрачная смола.', - materials: ['дерево', 'эпоксидная смола'], - quantity: 8, - priceCents: 69000, - imageUrl: 'https://images.unsplash.com/photo-1522312346375-d1a52e2b99b3?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Набор открыток (3 шт.)', - slug: 'nabor-otkrytok-3', - shortDescription: 'Мини-коллекция с акварелью.', - description: 'Три открытки с авторской акварелью.', - materials: ['бумага', 'акварель'], - quantity: 12, - priceCents: 39000, - imageUrl: 'https://images.unsplash.com/photo-1524995997946-a1c2e315a42f?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Свеча “Ягоды”', - slug: 'svecha-yagody', - shortDescription: 'Ароматная свеча с ягодной нотой.', - description: 'Соевый воск, хлопковый фитиль.', - materials: ['соевый воск', 'ароматизатор', 'хлопковый фитиль'], - quantity: 10, - priceCents: 55000, - imageUrl: 'https://images.unsplash.com/photo-1542315192-1f61a2b1a3c0?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Мишка “Карамель”', - slug: 'mishka-karamel', - shortDescription: 'Плюшевый мишка с вышивкой.', - description: 'Плюш, вышивка вручную.', - materials: ['плюш', 'нитки'], - quantity: 4, - priceCents: 199000, - imageUrl: 'https://images.unsplash.com/photo-1545315003-c5ad6226c272?w=600&q=80', - published: true, - categoryId: toys.id, - }, - { - title: 'Брелок макраме', - slug: 'brelok-makrame', - shortDescription: 'Мини-брелок, плетение макраме.', - description: 'Подходит на ключи или рюкзак.', - materials: ['хлопковый шнур', 'кольцо'], - quantity: 15, - priceCents: 25000, - imageUrl: 'https://images.unsplash.com/photo-1520975958225-2f3ab6f4c1c1?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Кукла “Тильда”', - slug: 'kukla-tilda', - shortDescription: 'Классическая кукла в стиле тильда.', - description: 'Платье шьётся вручную, можно выбрать цвет.', - materials: ['хлопок', 'лен', 'синтепух'], - quantity: 1, - priceCents: 349000, - imageUrl: 'https://images.unsplash.com/photo-1563906267088-b029e7101114?w=600&q=80', - published: true, - categoryId: toys.id, - }, - { - title: 'Ёлочная игрушка “Звезда”', - slug: 'elochnaya-igrushka-zvezda', - shortDescription: 'Фетр, вышивка, ленточка.', - description: 'Лёгкая игрушка для ёлки или декора.', - materials: ['фетр', 'нитки'], - quantity: 20, - priceCents: 29000, - imageUrl: 'https://images.unsplash.com/photo-1543589077-47d81606c1bf?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Панно “Горы”', - slug: 'panno-gory', - shortDescription: 'Минималистичное панно на стену.', - description: 'Деревянная основа, роспись акрилом.', - materials: ['дерево', 'акрил'], - quantity: 2, - priceCents: 129000, - imageUrl: 'https://images.unsplash.com/photo-1452860606245-08befc0ff44b?w=600&q=80', - published: true, - categoryId: gifts.id, - }, - { - title: 'Мягкий котик (под заказ)', - slug: 'myagkiy-kotik-pod-zakaz', - shortDescription: 'Можно выбрать цвет и имя.', - description: 'Делаем под заказ: выберите цвет и вышивку имени.', - materials: ['хлопок', 'синтепон'], - quantity: 0, - inStock: false, - leadTimeDays: 7, - priceCents: 229000, - imageUrl: 'https://images.unsplash.com/photo-1518791841217-8f162f1e1131?w=600&q=80', - published: true, - categoryId: toys.id, - }, - ] - - for (const p of more) { - await prisma.product.upsert({ - where: { slug: p.slug }, - update: {}, - create: { - title: p.title, - slug: p.slug, - shortDescription: p.shortDescription, - description: p.description, - materials: JSON.stringify(p.materials), - quantity: p.quantity, - priceCents: p.priceCents, - imageUrl: p.imageUrl, - published: p.published, - inStock: p.inStock ?? true, - leadTimeDays: p.leadTimeDays ?? null, - categoryId: p.categoryId, - }, - }) - } - - console.log('Seed готов:', { toys: toys.slug, gifts: gifts.slug }) -} - -main() - .catch((e) => { - console.error(e) - process.exit(1) - }) - .finally(async () => { - await prisma.$disconnect() - }) diff --git a/server/uploads/.cache/08c066dd-1ab8-4393-aff0-a6de97e43b70_w320.avif b/server/uploads/.cache/08c066dd-1ab8-4393-aff0-a6de97e43b70_w320.avif new file mode 100644 index 0000000..447d532 Binary files /dev/null and b/server/uploads/.cache/08c066dd-1ab8-4393-aff0-a6de97e43b70_w320.avif differ diff --git a/server/uploads/.cache/3b5a9666-7748-464e-83fb-ef3830cf40a9_w320.avif b/server/uploads/.cache/3b5a9666-7748-464e-83fb-ef3830cf40a9_w320.avif new file mode 100644 index 0000000..3b2a3b9 Binary files /dev/null and b/server/uploads/.cache/3b5a9666-7748-464e-83fb-ef3830cf40a9_w320.avif differ diff --git a/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w1600.avif b/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w1600.avif new file mode 100644 index 0000000..4a1205e Binary files /dev/null and b/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w1600.avif differ diff --git a/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w320.avif b/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w320.avif new file mode 100644 index 0000000..e41fa89 Binary files /dev/null and b/server/uploads/.cache/45652cd8-69f4-4758-b0f3-49d5cf6e48ba_w320.avif differ diff --git a/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w1600.avif b/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w1600.avif new file mode 100644 index 0000000..9b378c0 Binary files /dev/null and b/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w1600.avif differ diff --git a/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w320.avif b/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w320.avif new file mode 100644 index 0000000..2178fa0 Binary files /dev/null and b/server/uploads/.cache/4c8444e8-b0b4-451f-b493-e85db9659d85_w320.avif differ diff --git a/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1024.avif b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1024.avif new file mode 100644 index 0000000..9b378c0 Binary files /dev/null and b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1024.avif differ diff --git a/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1600.avif b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1600.avif new file mode 100644 index 0000000..9b378c0 Binary files /dev/null and b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w1600.avif differ diff --git a/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w320.avif b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w320.avif new file mode 100644 index 0000000..2178fa0 Binary files /dev/null and b/server/uploads/.cache/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd_w320.avif differ diff --git a/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1024.avif b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1024.avif new file mode 100644 index 0000000..de16c59 Binary files /dev/null and b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1024.avif differ diff --git a/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1600.avif b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1600.avif new file mode 100644 index 0000000..ad07579 Binary files /dev/null and b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w1600.avif differ diff --git a/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w320.avif b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w320.avif new file mode 100644 index 0000000..983af73 Binary files /dev/null and b/server/uploads/.cache/cef7cb4d-e908-463e-901a-28bd5bae631f_w320.avif differ diff --git a/server/uploads/.cache/d8dc8901-f627-41bb-aad9-60160b241bfb_w320.avif b/server/uploads/.cache/d8dc8901-f627-41bb-aad9-60160b241bfb_w320.avif new file mode 100644 index 0000000..447d532 Binary files /dev/null and b/server/uploads/.cache/d8dc8901-f627-41bb-aad9-60160b241bfb_w320.avif differ diff --git a/server/uploads/3b5a9666-7748-464e-83fb-ef3830cf40a9.jpg b/server/uploads/3b5a9666-7748-464e-83fb-ef3830cf40a9.jpg deleted file mode 100644 index abe2f41..0000000 Binary files a/server/uploads/3b5a9666-7748-464e-83fb-ef3830cf40a9.jpg and /dev/null differ diff --git a/server/uploads/4c8444e8-b0b4-451f-b493-e85db9659d85.png b/server/uploads/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd.png similarity index 100% rename from server/uploads/4c8444e8-b0b4-451f-b493-e85db9659d85.png rename to server/uploads/73efe99d-3a66-4f88-ae5e-d2abd7cad8dd.png diff --git a/server/uploads/45652cd8-69f4-4758-b0f3-49d5cf6e48ba.jpg b/server/uploads/cef7cb4d-e908-463e-901a-28bd5bae631f.png similarity index 56% rename from server/uploads/45652cd8-69f4-4758-b0f3-49d5cf6e48ba.jpg rename to server/uploads/cef7cb4d-e908-463e-901a-28bd5bae631f.png index b39c452..c3a9bdc 100644 Binary files a/server/uploads/45652cd8-69f4-4758-b0f3-49d5cf6e48ba.jpg and b/server/uploads/cef7cb4d-e908-463e-901a-28bd5bae631f.png differ diff --git a/server/uploads/08c066dd-1ab8-4393-aff0-a6de97e43b70.png b/server/uploads/d8dc8901-f627-41bb-aad9-60160b241bfb.png similarity index 100% rename from server/uploads/08c066dd-1ab8-4393-aff0-a6de97e43b70.png rename to server/uploads/d8dc8901-f627-41bb-aad9-60160b241bfb.png