Skip to content

Commit

Permalink
fix: circular dependencies between seder and data-source-options
Browse files Browse the repository at this point in the history
  • Loading branch information
tada5hi committed May 29, 2023
1 parent 0cc73b6 commit c5d1d09
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 44 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.DS_Store
dist
bin
doc
node_modules
.vscode
Expand Down
39 changes: 36 additions & 3 deletions src/data-source/options/module.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
import type { DataSourceOptions } from 'typeorm';
import { ConnectionOptionsReader } from 'typeorm';
import { useEnv } from '../../env';
import type { SeederOptions } from '../../seeder';
import { findDataSource } from '../find';
import type { DataSourceOptionsBuildContext } from './type';
import { setDefaultSeederOptions } from '../../seeder';
import {
adjustFilePathsForDataSourceOptions,
mergeDataSourceOptionsWithEnv,
readDataSourceOptionsFromEnv,
} from './utils';
import { findDataSource } from '../find';

export function extendDataSourceOptionsWithSeederOptions<T extends Partial<DataSourceOptions> & SeederOptions>(options: T): T {
if (
!Array.isArray(options.factories) ||
options.factories.length === 0
) {
let factories = useEnv('factories');
if (factories.length === 0) {
factories = ['src/database/factories/**/*{.ts,.js}'];
}

Object.assign(options, {
factories,
});
}

if (
!Array.isArray(options.seeds) ||
options.seeds.length === 0
) {
let seeds = useEnv('seeds');
if (seeds.length === 0) {
seeds = ['src/database/seeds/**/*{.ts,.js}'];
}

Object.assign(options, {
seeds,
});
}

return options;
}

export async function extendDataSourceOptions(
options: DataSourceOptions,
tsConfigDirectory?: string,
) : Promise<DataSourceOptions> {
options = setDefaultSeederOptions(options);
options = extendDataSourceOptionsWithSeederOptions(options);

await adjustFilePathsForDataSourceOptions(options, { root: tsConfigDirectory });

Expand Down
6 changes: 3 additions & 3 deletions src/seeder/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import type { DataSource, DataSourceOptions } from 'typeorm';
import { getModuleExport, load } from 'locter';
import { hasOwnProperty } from '../utils';
import type { SeederConstructor, SeederOptions } from './type';
import { resolveFilePaths, resolveFilePatterns, setDefaultSeederOptions } from './utils';
import { resolveFilePaths, resolveFilePatterns } from './utils';
import {
adjustFilePathsForDataSourceOptions,
adjustFilePathsForDataSourceOptions, extendDataSourceOptionsWithSeederOptions,
setDataSource,
} from '../data-source';
import type { SeederFactoryConfig } from './factory';
Expand All @@ -15,7 +15,7 @@ async function prepareSeeder(
) : Promise<SeederConstructor[]> {
options = options ?? {};

options = setDefaultSeederOptions(options);
options = extendDataSourceOptionsWithSeederOptions(options);
await adjustFilePathsForDataSourceOptions(options, {
keys: ['seeds', 'factories'],
});
Expand Down
1 change: 0 additions & 1 deletion src/seeder/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export * from './file-path';
export * from './promise';
export * from './options';
35 changes: 0 additions & 35 deletions src/seeder/utils/options.ts

This file was deleted.

4 changes: 2 additions & 2 deletions test/unit/connection/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { buildLegacyDataSourceOptions, setDefaultSeederOptions } from "../../../src";
import { buildLegacyDataSourceOptions } from "../../../src";
import * as path from "path";

describe('src/connection/index.ts', () => {
Expand All @@ -10,7 +10,7 @@ describe('src/connection/index.ts', () => {
});

let ormConfig = require('../../data/typeorm/ormconfig.json');
ormConfig = setDefaultSeederOptions(ormConfig);
ormConfig = extendDataSourceOptionsWithSeederOptions(ormConfig);

expect(connectionOptions).toEqual(ormConfig);
})
Expand Down

0 comments on commit c5d1d09

Please sign in to comment.