от пример файла seed.ts
, который заполняет вашу базу данных тестовыми данными для моделей DocumentType
, Folder
и 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();
});
Объяснение кода:
- DocumentType:
- Создаются 10 записей с уникальными именами
DocumentType_1
,DocumentType_2
и т.д.
- Создаются 10 записей с уникальными именами
- Folder:
- Создаются 10 записей с уникальными именами
Folder_1
,Folder_2
и т.д.
- Создаются 10 записей с уникальными именами
- Documents:
- Создаются 10 записей с уникальными номерами документов, текущей датой, заголовками и путями к файлам.
- Каждая запись связывается с одной из папок (
Folder
) и одним из типов документов (DocumentType
) через ихid
.
Как запустить seed.ts
:
- Убедитесь, что в
package.json
добавлена команда для запуска seed:json"prisma": { "seed": "ts-node prisma/seed.ts" }
- Выполните команду:bash
npx prisma db seed
Теперь ваша база данных будет заполнена тестовыми данными!