mirror of
https://github.com/documenso/documenso.git
synced 2026-06-22 04:12:06 +10:00
c4754553c9
- Added function to handle template searches based on user input - Introduced in the TRPC router to facilitate authenticated template searches - Updated to include template search results alongside document search results - Enhanced query handling by enabling searches only when the input is valid - Created corresponding Zod schemas for request and response validation in
78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import { nanoid } from 'nanoid';
|
|
|
|
import { prisma } from '..';
|
|
import { DocumentStatus } from '../client';
|
|
import { seedBlankDocument } from './documents';
|
|
import { seedUser } from './users';
|
|
|
|
const MEDIUM_ACCOUNT_EMAIL = 'medium-account@documenso.com';
|
|
const DOCUMENT_COUNT = 1000;
|
|
|
|
const STATUSES = [DocumentStatus.DRAFT, DocumentStatus.PENDING, DocumentStatus.COMPLETED];
|
|
|
|
export const seedDatabase = async () => {
|
|
const existingUser = await prisma.user.findFirst({
|
|
where: {
|
|
email: MEDIUM_ACCOUNT_EMAIL,
|
|
},
|
|
});
|
|
|
|
if (existingUser) {
|
|
return;
|
|
}
|
|
|
|
console.log(`[SEEDING]: Creating medium account with ${DOCUMENT_COUNT} documents...`);
|
|
|
|
const { user, team } = await seedUser({
|
|
name: 'Medium Account',
|
|
email: MEDIUM_ACCOUNT_EMAIL,
|
|
});
|
|
|
|
const recipientEmails = Array.from({ length: 20 }, (_, i) => `recipient-${i}@test.documenso.com`);
|
|
|
|
for (let i = 0; i < DOCUMENT_COUNT; i++) {
|
|
const status = STATUSES[i % STATUSES.length];
|
|
|
|
const document = await seedBlankDocument(user, team.id, {
|
|
key: `medium-${i}`,
|
|
createDocumentOptions: {
|
|
title: `[MEDIUM] Document ${i} - ${status}`,
|
|
status,
|
|
},
|
|
});
|
|
|
|
// Add 1-3 recipients per document.
|
|
const recipientCount = (i % 3) + 1;
|
|
|
|
for (let r = 0; r < recipientCount; r++) {
|
|
await prisma.recipient.create({
|
|
data: {
|
|
email: recipientEmails[(i + r) % recipientEmails.length],
|
|
name: `Recipient ${r}`,
|
|
token: nanoid(),
|
|
envelopeId: document.id,
|
|
},
|
|
});
|
|
}
|
|
|
|
// Also create some documents where the medium user is a recipient (not owner).
|
|
// Every 5th document, create an extra doc owned by a "ghost" sender with medium user as recipient.
|
|
if (i % 5 === 0) {
|
|
await prisma.recipient.create({
|
|
data: {
|
|
email: MEDIUM_ACCOUNT_EMAIL,
|
|
name: 'Medium Account',
|
|
token: nanoid(),
|
|
envelopeId: document.id,
|
|
},
|
|
});
|
|
}
|
|
|
|
if (i % 100 === 0) {
|
|
console.log(`[SEEDING]: Created ${i}/${DOCUMENT_COUNT} documents...`);
|
|
}
|
|
}
|
|
|
|
console.log(`[SEEDING]: Medium account seeded with ${DOCUMENT_COUNT} documents.`);
|
|
};
|