- Added city, state, and country optional fields to Complex model - Updated onboarding to include optional location fields - Created new settings page with sidebar navigation (Datos del Complejo, Canchas) - Replaced ESLint with Biome for frontend and backend linting - Added parallel dev script with concurrently - Migrated register-routes to use direct app.route() pattern
65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import 'dotenv/config';
|
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
import { v7 as uuidv7 } from 'uuid';
|
|
import { PrismaClient } from '../src/generated/prisma/client';
|
|
import { planSeeds } from './plans.seed-data';
|
|
import { sportSeeds } from './sports.seed-data';
|
|
|
|
const databaseUrl = process.env.DATABASE_URL;
|
|
|
|
if (!databaseUrl) {
|
|
throw new Error('Missing DATABASE_URL in environment for seeding.');
|
|
}
|
|
|
|
const adapter = new PrismaPg({
|
|
connectionString: databaseUrl,
|
|
});
|
|
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
async function run() {
|
|
for (const plan of planSeeds) {
|
|
await prisma.plan.upsert({
|
|
where: { code: plan.code },
|
|
update: {
|
|
name: plan.name,
|
|
price: plan.price,
|
|
rules: plan.rules,
|
|
lastUpdatedAt: new Date(),
|
|
},
|
|
create: {
|
|
code: plan.code,
|
|
name: plan.name,
|
|
price: plan.price,
|
|
rules: plan.rules,
|
|
},
|
|
});
|
|
}
|
|
|
|
for (const sport of sportSeeds) {
|
|
await prisma.sport.upsert({
|
|
where: { slug: sport.slug },
|
|
update: {
|
|
name: sport.name,
|
|
isActive: true,
|
|
},
|
|
create: {
|
|
id: uuidv7(),
|
|
name: sport.name,
|
|
slug: sport.slug,
|
|
isActive: true,
|
|
},
|
|
});
|
|
}
|
|
}
|
|
|
|
run()
|
|
.then(async () => {
|
|
await prisma.$disconnect();
|
|
})
|
|
.catch(async (error) => {
|
|
console.error(error);
|
|
await prisma.$disconnect();
|
|
process.exit(1);
|
|
});
|