feat: implement core platform features including business directory, admin dashboard, authentication, and API infrastructure
Some checks failed
Build and Push App / build (push) Failing after 16m2s
Some checks failed
Build and Push App / build (push) Failing after 16m2s
This commit is contained in:
71
scratch/seed_stats.ts
Normal file
71
scratch/seed_stats.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import { PrismaPg } from '@prisma/adapter-pg';
|
||||
import pg from 'pg';
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
dotenv.config({ path: '.env.local' });
|
||||
|
||||
const connectionString = process.env.DATABASE_URL!;
|
||||
const pool = new pg.Pool({ connectionString });
|
||||
const adapter = new PrismaPg(pool);
|
||||
const prisma = new PrismaClient({ adapter });
|
||||
|
||||
async function main() {
|
||||
const business = await prisma.business.findFirst();
|
||||
if (!business) {
|
||||
console.log("No business found to seed stats for.");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Seeding stats for business: ${business.name} (${business.id})`);
|
||||
|
||||
const events = [];
|
||||
const typeViews = 'BUSINESS_VIEW';
|
||||
const typeClicks = 'BUSINESS_CONTACT_CLICK';
|
||||
|
||||
// Seed last 30 days
|
||||
for (let i = 0; i < 30; i++) {
|
||||
const date = new Date();
|
||||
date.setDate(date.getDate() - i);
|
||||
|
||||
// Random number of views (5 to 50)
|
||||
const viewCount = Math.floor(Math.random() * 45) + 5;
|
||||
for (let j = 0; j < viewCount; j++) {
|
||||
events.push({
|
||||
type: typeViews,
|
||||
path: `/annuaire/${business.id}`,
|
||||
label: business.name,
|
||||
metadata: { businessId: business.id },
|
||||
createdAt: new Date(date.getTime() + Math.random() * 3600000 * 24) // Random time in that day
|
||||
});
|
||||
}
|
||||
|
||||
// Random number of clicks (0 to 10)
|
||||
const clickCount = Math.floor(Math.random() * 11);
|
||||
for (let k = 0; k < clickCount; k++) {
|
||||
events.push({
|
||||
type: typeClicks,
|
||||
path: `/annuaire/${business.id}`,
|
||||
label: business.name,
|
||||
metadata: { businessId: business.id },
|
||||
createdAt: new Date(date.getTime() + Math.random() * 3600000 * 24)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Batch insert
|
||||
await prisma.analyticsEvent.createMany({
|
||||
data: events
|
||||
});
|
||||
|
||||
console.log(`Successfully seeded ${events.length} events.`);
|
||||
}
|
||||
|
||||
main()
|
||||
.catch(e => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
})
|
||||
.finally(async () => {
|
||||
await prisma.$disconnect();
|
||||
});
|
||||
Reference in New Issue
Block a user