mirror of
https://github.com/documenso/documenso.git
synced 2025-11-19 11:12:06 +10:00
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import { DateTime } from 'luxon';
|
|
|
|
import { hashSync } from '@documenso/lib/server-only/auth/hash';
|
|
|
|
import { prisma } from '.';
|
|
import { Role } from './client';
|
|
|
|
const USERS_PER_MONTH = 20;
|
|
const MONTHS_OF_HISTORY = 12;
|
|
|
|
export const seedMAUData = async () => {
|
|
const now = DateTime.now();
|
|
|
|
for (let monthsAgo = MONTHS_OF_HISTORY - 1; monthsAgo >= 0; monthsAgo--) {
|
|
const monthStart = now.minus({ months: monthsAgo }).startOf('month');
|
|
const monthEnd = monthStart.endOf('month');
|
|
|
|
console.log(`Seeding users for ${monthStart.toFormat('yyyy-MM')}`);
|
|
|
|
const users = await Promise.all(
|
|
Array.from({ length: USERS_PER_MONTH }).map(async (_, index) => {
|
|
const createdAt = DateTime.fromMillis(
|
|
monthStart.toMillis() + Math.random() * (monthEnd.toMillis() - monthStart.toMillis()),
|
|
).toJSDate();
|
|
|
|
const lastSignedIn =
|
|
Math.random() > 0.3
|
|
? DateTime.fromMillis(
|
|
createdAt.getTime() + Math.random() * (now.toMillis() - createdAt.getTime()),
|
|
).toJSDate()
|
|
: createdAt;
|
|
|
|
return prisma.user.create({
|
|
data: {
|
|
name: `MAU Test User ${monthsAgo}-${index}`,
|
|
email: `mau-test-${monthsAgo}-${index}@documenso.com`,
|
|
password: hashSync('password'),
|
|
emailVerified: createdAt,
|
|
createdAt,
|
|
lastSignedIn,
|
|
roles: [Role.USER],
|
|
},
|
|
});
|
|
}),
|
|
);
|
|
|
|
console.log(`Created ${users.length} users for ${monthStart.toFormat('yyyy-MM')}`);
|
|
}
|
|
};
|
|
|
|
// Run the seed if this file is executed directly
|
|
if (require.main === module) {
|
|
seedMAUData()
|
|
.then(() => {
|
|
console.log('MAU seed completed successfully');
|
|
process.exit(0);
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error seeding MAU data:', error);
|
|
process.exit(1);
|
|
});
|
|
}
|