From 454f5cf67cd55eca56ddab29e1070e032ad9fc90 Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Wed, 8 Jun 2022 17:50:14 +0200 Subject: [PATCH 1/4] test(seeds): new environment config --- test/seeds/seeds-runner.spec.ts | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/test/seeds/seeds-runner.spec.ts b/test/seeds/seeds-runner.spec.ts index 81af3260..31c3d105 100644 --- a/test/seeds/seeds-runner.spec.ts +++ b/test/seeds/seeds-runner.spec.ts @@ -96,4 +96,62 @@ test.group('Seeds Runner', (group) => { delete process.env.NODE_ENV await db.manager.closeAll() }) + + test('mark file as ignored when "environment = production" and not running in production mode', async ({ + assert, + }) => { + process.env.NODE_ENV = 'development' + + const app = await setupApplication() + const db = getDb(app) + const runner = new SeedsRunner(db, app) + + await fs.add( + 'database/seeders/User.ts', + `export default class FooSeeder { + public static invoked = false + public static environment = ['production'] + + run () { + (this.constructor as any).invoked = true + } + }` + ) + + const files = await runner.getList() + const report = await runner.run(files[0]) + assert.equal(report.status, 'ignored') + + delete process.env.NODE_ENV + await db.manager.closeAll() + }) + + test('mark file as ignored when "environment = development" and not running in development mode', async ({ + assert, + }) => { + process.env.NODE_ENV = 'production' + + const app = await setupApplication() + const db = getDb(app) + const runner = new SeedsRunner(db, app) + + await fs.add( + 'database/seeders/User.ts', + `export default class FooSeeder { + public static invoked = false + public static environment = ['development'] + + run () { + (this.constructor as any).invoked = true + } + }` + ) + + const files = await runner.getList() + const report = await runner.run(files[0]) + assert.equal(report.status, 'ignored') + + delete process.env.NODE_ENV + await db.manager.closeAll() + }) }) From c2db8829153c2a8a2e7d6ee5b88ec5a672cc8fe7 Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Wed, 8 Jun 2022 17:50:28 +0200 Subject: [PATCH 2/4] feat(seeds): new environment config --- adonis-typings/seeder.ts | 1 + src/SeedsRunner/index.ts | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/adonis-typings/seeder.ts b/adonis-typings/seeder.ts index 6cac5559..b7c77888 100644 --- a/adonis-typings/seeder.ts +++ b/adonis-typings/seeder.ts @@ -15,6 +15,7 @@ declare module '@ioc:Adonis/Lucid/Seeder' { */ export type SeederConstructorContract = { developmentOnly: boolean + environment: string[] new (client: QueryClientContract): { client: QueryClientContract run(): Promise diff --git a/src/SeedsRunner/index.ts b/src/SeedsRunner/index.ts index dc9dc301..355df9a2 100644 --- a/src/SeedsRunner/index.ts +++ b/src/SeedsRunner/index.ts @@ -58,10 +58,9 @@ export class SeedsRunner { } /** - * Ignore when running in non-development environment and seeder is development - * only + * Ignore when when the node environement is not the same as the seeder configuration. */ - if (Source.developmentOnly && !this.app.inDev) { + if (Source.developmentOnly && !this.app.inDev || Source.environment && !Source.environment.includes(this.app.nodeEnvironment)) { seeder.status = 'ignored' return seeder } From 4153c12f702a857fd77099af0c1b50ba15cafea0 Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Wed, 8 Jun 2022 18:14:43 +0200 Subject: [PATCH 3/4] style(seeds): correct formating --- src/SeedsRunner/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SeedsRunner/index.ts b/src/SeedsRunner/index.ts index 355df9a2..9d5c3e00 100644 --- a/src/SeedsRunner/index.ts +++ b/src/SeedsRunner/index.ts @@ -60,7 +60,10 @@ export class SeedsRunner { /** * Ignore when when the node environement is not the same as the seeder configuration. */ - if (Source.developmentOnly && !this.app.inDev || Source.environment && !Source.environment.includes(this.app.nodeEnvironment)) { + if ( + (Source.developmentOnly && !this.app.inDev) || + (Source.environment && !Source.environment.includes(this.app.nodeEnvironment)) + ) { seeder.status = 'ignored' return seeder } From e32a0a5f4f172a3932f500aaf13123754e1e92f8 Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Thu, 23 Jun 2022 12:20:48 +0200 Subject: [PATCH 4/4] feat(seeds): add deprecation warning --- adonis-typings/seeder.ts | 3 +++ src/BaseSeeder/index.ts | 4 ++++ src/SeedsRunner/index.ts | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/adonis-typings/seeder.ts b/adonis-typings/seeder.ts index b7c77888..f6ccb17d 100644 --- a/adonis-typings/seeder.ts +++ b/adonis-typings/seeder.ts @@ -14,6 +14,9 @@ declare module '@ioc:Adonis/Lucid/Seeder' { * Shape of seeder class */ export type SeederConstructorContract = { + /** + * @deprecated + */ developmentOnly: boolean environment: string[] new (client: QueryClientContract): { diff --git a/src/BaseSeeder/index.ts b/src/BaseSeeder/index.ts index f4865b77..28371252 100644 --- a/src/BaseSeeder/index.ts +++ b/src/BaseSeeder/index.ts @@ -10,7 +10,11 @@ import { QueryClientContract } from '@ioc:Adonis/Lucid/Database' export class BaseSeeder { + /** + * @deprecated + */ public static developmentOnly: boolean + public static environment: string[] constructor(public client: QueryClientContract) {} public async run() {} diff --git a/src/SeedsRunner/index.ts b/src/SeedsRunner/index.ts index 9d5c3e00..db2d640a 100644 --- a/src/SeedsRunner/index.ts +++ b/src/SeedsRunner/index.ts @@ -57,6 +57,10 @@ export class SeedsRunner { file: file, } + if ('developmentOnly' in Source) { + this.app.logger.warn(`Seeder "${file.name}" is using the deprecated flag "developmentOnly".`) + } + /** * Ignore when when the node environement is not the same as the seeder configuration. */