Skip to content

Commit

Permalink
feat(core): add defineConfig helper (#3500)
Browse files Browse the repository at this point in the history
  • Loading branch information
B4nan committed Sep 13, 2022
1 parent b68ed47 commit 67d3c68
Show file tree
Hide file tree
Showing 15 changed files with 92 additions and 16 deletions.
22 changes: 22 additions & 0 deletions docs/docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,28 @@ export default {
};
```

To have the config type-safe, we can define the options variable first, with the `Options` type:

```ts
import { Options } from '@mikro-orm/core';

const config: Options = {
// ...
};

export default config;
```

Alternatively, we can use the `defineConfig` helper that should provide intellisense even in JavaScript files, without the need for type hints via jsdoc:

```ts
import { defineConfig } from '@mikro-orm/core';

export default defineConfig({
// ...
});
```

When we have `useTsNode` disabled and `ts-node` is not already registered and detected,
TS config files will be ignored.

Expand Down
6 changes: 5 additions & 1 deletion packages/better-sqlite/src/BetterSqliteMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { BetterSqliteDriver } from './BetterSqliteDriver';

Expand All @@ -12,3 +12,7 @@ export class BetterSqliteMikroORM extends MikroORM<BetterSqliteDriver> {
}

export type BetterSqliteOptions = Options<BetterSqliteDriver>;

export function defineBetterSqliteConfig(options: BetterSqliteOptions) {
return defineConfig({ driver: BetterSqliteDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/better-sqlite/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ export * from './BetterSqliteDriver';
export * from './BetterSqlitePlatform';
export * from './BetterSqliteSchemaHelper';
export * from './BetterSqliteExceptionConverter';
export { BetterSqliteMikroORM as MikroORM, BetterSqliteOptions as Options } from './BetterSqliteMikroORM';
export {
BetterSqliteMikroORM as MikroORM,
BetterSqliteOptions as Options,
defineBetterSqliteConfig as defineConfig,
} from './BetterSqliteMikroORM';
7 changes: 7 additions & 0 deletions packages/core/src/utils/Configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,13 @@ export class Configuration<D extends IDatabaseDriver = IDatabaseDriver> {

}

/**
* Type helper to make it easier to use `mikro-orm.config.js`.
*/
export function defineConfig<D extends IDatabaseDriver>(options: Options<D>) {
return options;
}

export interface DynamicPassword {
password: string;
expirationChecker?: () => boolean;
Expand Down
6 changes: 5 additions & 1 deletion packages/mariadb/src/MariaDbMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { MariaDbDriver } from './MariaDbDriver';

Expand All @@ -12,3 +12,7 @@ export class MariaDbMikroORM extends MikroORM<MariaDbDriver> {
}

export type MariaDbOptions = Options<MariaDbDriver>;

export function defineMariaDbConfig(options: MariaDbOptions) {
return defineConfig({ driver: MariaDbDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/mariadb/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ export * from './MariaDbSchemaHelper';
export * from './MariaDbPlatform';
export * from './MariaDbDriver';
export * from './MariaDbExceptionConverter';
export { MariaDbMikroORM as MikroORM, MariaDbOptions as Options } from './MariaDbMikroORM';
export {
MariaDbMikroORM as MikroORM,
MariaDbOptions as Options,
defineMariaDbConfig as defineConfig,
} from './MariaDbMikroORM';
6 changes: 5 additions & 1 deletion packages/mongodb/src/MongoMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { MongoDriver } from './MongoDriver';

Expand All @@ -12,3 +12,7 @@ export class MongoMikroORM extends MikroORM<MongoDriver> {
}

export type MongoOptions = Options<MongoDriver>;

export function defineMongoConfig(options: MongoOptions) {
return defineConfig({ driver: MongoDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/mongodb/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,9 @@ export * from './MongoEntityRepository';
export * from './MongoSchemaGenerator';
export { MongoEntityManager as EntityManager } from './MongoEntityManager';
export { MongoEntityRepository as EntityRepository } from './MongoEntityRepository';
export { MongoMikroORM as MikroORM, MongoOptions as Options } from './MongoMikroORM';
export {
MongoMikroORM as MikroORM,
MongoOptions as Options,
defineMongoConfig as defineConfig,
} from './MongoMikroORM';
export { ObjectId } from 'bson';
6 changes: 5 additions & 1 deletion packages/mysql/src/MySqlMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { MySqlDriver } from './MySqlDriver';

Expand All @@ -12,3 +12,7 @@ export class MySqlMikroORM extends MikroORM<MySqlDriver> {
}

export type MySqlOptions = Options<MySqlDriver>;

export function defineMySqlConfig(options: MySqlOptions) {
return defineConfig({ driver: MySqlDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/mysql/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ export * from './MySqlDriver';
export * from './MySqlPlatform';
export * from './MySqlSchemaHelper';
export * from './MySqlExceptionConverter';
export { MySqlMikroORM as MikroORM, MySqlOptions as Options } from './MySqlMikroORM';
export {
MySqlMikroORM as MikroORM,
MySqlOptions as Options,
defineMySqlConfig as defineConfig,
} from './MySqlMikroORM';
6 changes: 5 additions & 1 deletion packages/postgresql/src/PostgreSqlMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { PostgreSqlDriver } from './PostgreSqlDriver';

Expand All @@ -12,3 +12,7 @@ export class PostgreSqlMikroORM extends MikroORM<PostgreSqlDriver> {
}

export type PostgreSqlOptions = Options<PostgreSqlDriver>;

export function definePostgreSqlConfig(options: PostgreSqlOptions) {
return defineConfig({ driver: PostgreSqlDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/postgresql/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ export * from './PostgreSqlPlatform';
export * from './PostgreSqlSchemaHelper';
export * from './PostgreSqlExceptionConverter';
export * from './types';
export { PostgreSqlMikroORM as MikroORM, PostgreSqlOptions as Options } from './PostgreSqlMikroORM';
export {
PostgreSqlMikroORM as MikroORM,
PostgreSqlOptions as Options,
definePostgreSqlConfig as defineConfig,
} from './PostgreSqlMikroORM';
6 changes: 5 additions & 1 deletion packages/sqlite/src/SqliteMikroORM.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MikroORM } from '@mikro-orm/core';
import { defineConfig, MikroORM } from '@mikro-orm/core';
import type { Options } from '@mikro-orm/core';
import { SqliteDriver } from './SqliteDriver';

Expand All @@ -12,3 +12,7 @@ export class SqliteMikroORM extends MikroORM<SqliteDriver> {
}

export type SqliteOptions = Options<SqliteDriver>;

export function defineSqliteConfig(options: SqliteOptions) {
return defineConfig({ driver: SqliteDriver, ...options });
}
6 changes: 5 additions & 1 deletion packages/sqlite/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ export * from './SqliteDriver';
export * from './SqlitePlatform';
export * from './SqliteSchemaHelper';
export * from './SqliteExceptionConverter';
export { SqliteMikroORM as MikroORM, SqliteOptions as Options } from './SqliteMikroORM';
export {
SqliteMikroORM as MikroORM,
SqliteOptions as Options,
defineSqliteConfig as defineConfig,
} from './SqliteMikroORM';
7 changes: 3 additions & 4 deletions tests/cli-config.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { JavaScriptMetadataProvider } from '@mikro-orm/core';
import { Options, SqliteDriver } from '@mikro-orm/sqlite';
import { defineConfig } from '@mikro-orm/sqlite';
import { BASE_DIR } from './helpers';

const { BaseEntity4, Test3 } = require('./entities-js/index');

const config: Options = {
const config = defineConfig({
entities: [Test3, BaseEntity4],
dbName: './mikro_orm_test.db',
baseDir: BASE_DIR,
driver: SqliteDriver,
metadataProvider: JavaScriptMetadataProvider,
};
});

export default async () => config;

0 comments on commit 67d3c68

Please sign in to comment.