Создание seed.ts для Prisma в проекте NestJS

от пример файла seed.ts, который заполняет вашу базу данных тестовыми данными для моделей DocumentTypeFolder и Documents. Этот файл создаст по 10 записей для каждой модели.

typescript

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function main() {
  // Создание тестовых данных для DocumentType
  const documentTypes = await Promise.all(
    Array.from({ length: 10 }).map((_, i) =>
      prisma.documentType.create({
        data: {
          typeName: `DocumentType_${i + 1}`,
        },
      })
    )
  );

  // Создание тестовых данных для Folder
  const folders = await Promise.all(
    Array.from({ length: 10 }).map((_, i) =>
      prisma.folder.create({
        data: {
          folderName: `Folder_${i + 1}`,
        },
      })
    )
  );

  // Создание тестовых данных для Documents
  await Promise.all(
    Array.from({ length: 10 }).map((_, i) =>
      prisma.documents.create({
        data: {
          documentNumber: `DOC-${i + 1}`,
          documentDate: new Date(),
          title: `Document Title ${i + 1}`,
          filepath: `/path/to/document_${i + 1}.pdf`,
          folderId: folders[i % folders.length].id, // Связь с папкой
          documentTypeId: documentTypes[i % documentTypes.length].id, // Связь с типом документа
        },
      })
    )
  );

  console.log('Seeding завершено!');
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

Объяснение кода:

  1. DocumentType:
    • Создаются 10 записей с уникальными именами DocumentType_1DocumentType_2 и т.д.
  2. Folder:
    • Создаются 10 записей с уникальными именами Folder_1Folder_2 и т.д.
  3. Documents:
    • Создаются 10 записей с уникальными номерами документов, текущей датой, заголовками и путями к файлам.
    • Каждая запись связывается с одной из папок (Folder) и одним из типов документов (DocumentType) через их id.

Как запустить seed.ts:

  1. Убедитесь, что в package.json добавлена команда для запуска seed:json"prisma": { "seed": "ts-node prisma/seed.ts" }
  2. Выполните команду:bashnpx prisma db seed

Теперь ваша база данных будет заполнена тестовыми данными!