@damourlabs/euro-clinical-trials
Version:
A Nuxt 3 application for visualizing and managing clinical trials data in Europe, built with modern web technologies.
45 lines (36 loc) • 1.35 kB
text/typescript
import { PGlite } from '@electric-sql/pglite'
import { SeedsManager } from './seeds-manager'
interface SeedsConfig {
enabled: boolean
seedsPath: string
environment: string
forceReseed: boolean
dataDir: string
seedsTable: string
autoSeed: boolean
apiEndpoints: boolean
skipIfDataExists: boolean
}
export default defineNitroPlugin(async () => {
const seedsConfig = useRuntimeConfig().pgliteSeeds as SeedsConfig
const migrationsConfig = useRuntimeConfig().pgliteMigrations as { dataDir?: string }
// Skip if not enabled or auto-seed is disabled
if (!seedsConfig?.enabled || !seedsConfig?.autoSeed) {
return
}
try {
// Wait a bit to ensure migrations have completed
await new Promise(resolve => setTimeout(resolve, 1000))
// Initialize PGLite database (using same config as migrations)
const db = new PGlite({
dataDir: migrationsConfig?.dataDir || seedsConfig.dataDir,
})
const seedsManager = new SeedsManager(db, seedsConfig)
const result = await seedsManager.runSeeds()
if (result.errors.length > 0) {
console.warn(`🌱 Seeding completed with ${result.errors.length} errors`)
}
} catch (error) {
console.error('🌱 Failed to initialize seeding:', error)
}
})