From 474da2ec42c70aaf1920a621bdfb80619d06ecb8 Mon Sep 17 00:00:00 2001 From: NewZAZ Date: Mon, 14 Jul 2025 10:44:32 +0200 Subject: [PATCH 1/3] fix: natural order on seeder --- src/seeders/source.ts | 6 +++- src/types/database.ts | 1 + test/seeders/seeders_source.spec.ts | 47 +++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/seeders/source.ts b/src/seeders/source.ts index 9d1d33d2b..6288e1ece 100644 --- a/src/seeders/source.ts +++ b/src/seeders/source.ts @@ -26,7 +26,11 @@ export class SeedersSource { * paths are resolved from the project root */ private async getDirectoryFiles(directoryPath: string): Promise[]> { - const { files } = await sourceFiles(this.app.appRoot, directoryPath, false) + const { files } = await sourceFiles( + this.app.appRoot, + directoryPath, + this.config.seeders?.naturalSort || false + ) return files } diff --git a/src/types/database.ts b/src/types/database.ts index 0d11f978f..39a46c787 100644 --- a/src/types/database.ts +++ b/src/types/database.ts @@ -326,6 +326,7 @@ export type MigratorConfig = { */ export type SeedersConfig = { paths: string[] + naturalSort?: boolean } /** diff --git a/test/seeders/seeders_source.spec.ts b/test/seeders/seeders_source.spec.ts index fa59c3436..073f7324e 100644 --- a/test/seeders/seeders_source.spec.ts +++ b/test/seeders/seeders_source.spec.ts @@ -144,4 +144,51 @@ test.group('Seeds Source', (group) => { ] ) }) + + test('use a natural sort to order files when configured', async ({ fs, assert }) => { + const app = new AppFactory().create(fs.baseUrl, () => {}) + await app.init() + const db = getDb() + + const config = Object.assign({}, db.getRawConnection('primary')!.config, { + seeders: { + naturalSort: true, + paths: ['database/seeders'], + }, + }) + + const seedersSource = new SeedersSource(config, app) + await fs.create('database/seeders/1.ts', '') + await fs.create('database/seeders/2.ts', '') + await fs.create('database/seeders/10.ts', '') + await fs.create('database/seeders/3.ts', '') + await fs.create('database/seeders/100.ts', '') + await fs.create('database/seeders/4.ts', '') + await db.manager.closeAll() + + const files = await seedersSource.getSeeders() + assert.deepEqual( + files.map((file) => { + return { absPath: file.absPath, name: file.name } + }), + [ + { + absPath: join(fs.basePath, 'database/seeders/1.ts'), + name: 'database/seeders/1', + }, + { + absPath: join(fs.basePath, 'database/seeders/2.ts'), + name: 'database/seeders/2', + }, + { + absPath: join(fs.basePath, 'database/seeders/10.ts'), + name: 'database/seeders/10', + }, + { + absPath: join(fs.basePath, 'database/seeders/100.ts'), + name: 'database/seeders/100', + }, + ] + ) + }) }) From b680a12d5c7c6dd6e78c6594211e5b9d87982105 Mon Sep 17 00:00:00 2001 From: NewZAZ Date: Mon, 14 Jul 2025 11:06:57 +0200 Subject: [PATCH 2/3] feat: set paths optional --- src/seeders/source.ts | 2 +- src/types/database.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/seeders/source.ts b/src/seeders/source.ts index 6288e1ece..bf132cf15 100644 --- a/src/seeders/source.ts +++ b/src/seeders/source.ts @@ -29,7 +29,7 @@ export class SeedersSource { const { files } = await sourceFiles( this.app.appRoot, directoryPath, - this.config.seeders?.naturalSort || false + this.config.seeders?.naturalSort || true ) return files } diff --git a/src/types/database.ts b/src/types/database.ts index 39a46c787..232f11aac 100644 --- a/src/types/database.ts +++ b/src/types/database.ts @@ -325,7 +325,7 @@ export type MigratorConfig = { * Seeders config */ export type SeedersConfig = { - paths: string[] + paths?: string[] naturalSort?: boolean } From 2e25c3f2c7db3e6e1070162446489112d2cb85c8 Mon Sep 17 00:00:00 2001 From: NewZAZ Date: Mon, 14 Jul 2025 11:16:35 +0200 Subject: [PATCH 3/3] feat: change default natural sort to false --- src/seeders/source.ts | 2 +- test/seeders/seeders_source.spec.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/seeders/source.ts b/src/seeders/source.ts index bf132cf15..6288e1ece 100644 --- a/src/seeders/source.ts +++ b/src/seeders/source.ts @@ -29,7 +29,7 @@ export class SeedersSource { const { files } = await sourceFiles( this.app.appRoot, directoryPath, - this.config.seeders?.naturalSort || true + this.config.seeders?.naturalSort || false ) return files } diff --git a/test/seeders/seeders_source.spec.ts b/test/seeders/seeders_source.spec.ts index 073f7324e..d122850ce 100644 --- a/test/seeders/seeders_source.spec.ts +++ b/test/seeders/seeders_source.spec.ts @@ -180,6 +180,14 @@ test.group('Seeds Source', (group) => { absPath: join(fs.basePath, 'database/seeders/2.ts'), name: 'database/seeders/2', }, + { + absPath: join(fs.basePath, 'database/seeders/3.ts'), + name: 'database/seeders/3', + }, + { + absPath: join(fs.basePath, 'database/seeders/4.ts'), + name: 'database/seeders/4', + }, { absPath: join(fs.basePath, 'database/seeders/10.ts'), name: 'database/seeders/10',