diff --git a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts index 2faf7274..5d0beb17 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts @@ -27,6 +27,7 @@ export async function setupPostgres( ssl: false, // Use SSL drop: false, // Drop database before migration seed: false, // Seed database after migration + migrate: false, // Migrate database }, false, 'pg') // Config generation @@ -70,6 +71,7 @@ export default { dbUrl: env.url, dbDrop: env.drop, dbSeed: env.seed, + dbMigrate: env.migrate, }, migrationDir: join(options.serverDir, options.dir.migrations), }) diff --git a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/seed/index.ts b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/seed/index.ts index cb4e93f2..e1b44c40 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/seed/index.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/seed/index.ts @@ -3,6 +3,7 @@ export default function (data: { dbUrl: string dbDrop: string dbSeed: string + dbMigrate: string } migrationDir: string }) { @@ -17,8 +18,9 @@ import { seed1 } from './seed1' config() const dbUrl = process.env.${data.env.dbUrl} -const dbDrop = process.env.${data.env.dbDrop} -const dbSeed = process.env.${data.env.dbSeed} +const dbDrop = process.env.${data.env.dbDrop} === 'true' +const dbSeed = process.env.${data.env.dbSeed} === 'true' +const dbMigrate = process.env.${data.env.dbMigrate} === 'true' const migrationDir = resolve('${data.migrationDir}') @@ -46,9 +48,12 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE EXTENSION IF NOT EXISTS "uuid-ossp" SCHEMA "public"; \`) } + + if (dbMigrate) { console.warn('Migrating database...') await migrate(db, { migrationsFolder: migrationDir }) console.warn('Migrating database... done') + } if (dbSeed) { console.warn('Seeding database...') diff --git a/packages/nuxt/src/runtime/modules/drizzle/index.ts b/packages/nuxt/src/runtime/modules/drizzle/index.ts index 99be376c..34c2e963 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/index.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/index.ts @@ -75,6 +75,10 @@ export default definePergelModule({ driver: driver ?? 'pg', } as any, studio: true, + watch: { + push: true, + seed: true, + }, } }, async setup({ nuxt, options }) { @@ -194,9 +198,9 @@ export default definePergelModule({ return if (match) { - if (activeProject.dev?.cli !== false) { + if (activeProject.watch?.push) { execSync( - activeProject.dev?.cli ?? `pergel module -s=push -p=${projectName} -m=${moduleName}`, + `pergel module -s=push -p=${projectName} -m=${moduleName}`, { stdio: 'inherit', cwd: nuxt.options.rootDir, @@ -204,6 +208,16 @@ export default definePergelModule({ ) _logger.info(`Pushed ${projectName} schema`) } + if (activeProject.watch?.seed) { + execSync( + `pergel module -s=seed -p=${projectName} -m=${moduleName}`, + { + stdio: 'inherit', + cwd: nuxt.options.rootDir, + }, + ) + _logger.info(`Seeded ${projectName} schema`) + } } } }) diff --git a/packages/nuxt/src/runtime/modules/drizzle/types.ts b/packages/nuxt/src/runtime/modules/drizzle/types.ts index 83bba750..9380ca85 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/types.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/types.ts @@ -44,12 +44,18 @@ export interface DrizzleConfig extends PergelModuleOptions { */ studio?: false - dev?: { + watch?: { /** - * Database seeds + * Database push changes * @default 'pergel module -s=push -p={projectName} -m={moduleName}' */ - cli?: string | false + push?: string | false + + /** + * Database seeds + * @default 'pergel module -s=seed -p={projectName} -m={moduleName}' + */ + seed?: string | false } } @@ -119,12 +125,18 @@ export interface ResolvedDrizzleConfig extends ResolvedPergelModuleOptions { studio: boolean - dev?: { + watch: { /** - * Database seeds + * Database push changes * @default 'pergel module -s=push -p={projectName} -m={moduleName}' */ - cli: string | boolean + push: string | false + + /** + * Database seeds + * @default 'pergel module -s=seed -p={projectName} -m={moduleName}' + */ + seed: string | false } }