@@ -2,6 +2,9 @@ import {Model} from "./Model";
22import { DEFAULT_DEFINE_OPTIONS , getModels } from "../services/models" ;
33import { getAssociations , processAssociation } from "../services/association" ;
44import { ISequelizeConfig } from "../interfaces/ISequelizeConfig" ;
5+ import { ISequelizeUriConfig } from "../interfaces/ISequelizeUriConfig" ;
6+ import { ISequelizeDbNameConfig } from "../interfaces/ISequelizeDbNameConfig" ;
7+ import { SequelizeConfig } from "../types/SequelizeConfig" ;
58import { resolveScopes } from "../services/scopes" ;
69import { ISequelizeValidationOnlyConfig } from "../interfaces/ISequelizeValidationOnlyConfig" ;
710import { extend } from "../utils/object" ;
@@ -19,6 +22,18 @@ export abstract class BaseSequelize {
1922 thoughMap : { [ through : string ] : any } = { } ;
2023 _ : { [ modelName : string ] : ( typeof Model ) } = { } ;
2124
25+ static isISequelizeConfig ( obj : any ) : obj is ISequelizeConfig {
26+ return obj . hasOwnProperty ( "database" ) && obj . hasOwnProperty ( "username" ) ;
27+ }
28+
29+ static isISequelizeDbNameConfig ( obj : any ) : obj is ISequelizeDbNameConfig {
30+ return obj . hasOwnProperty ( "name" ) && obj . hasOwnProperty ( "username" ) ;
31+ }
32+
33+ static isISequelizeUriConfig ( obj : any ) : obj is ISequelizeUriConfig {
34+ return obj . hasOwnProperty ( "uri" ) ;
35+ }
36+
2237 static extend ( target : any ) : void {
2338
2439 extend ( target , this ) ;
@@ -27,7 +42,7 @@ export abstract class BaseSequelize {
2742 /**
2843 * Prepares sequelize config passed to original sequelize constructor
2944 */
30- static prepareConfig ( config : ISequelizeConfig | ISequelizeValidationOnlyConfig ) : ISequelizeConfig {
45+ static prepareConfig ( config : SequelizeConfig | ISequelizeValidationOnlyConfig ) : SequelizeConfig {
3146 if ( ! config . define ) {
3247 config . define = { } ;
3348 }
@@ -37,13 +52,21 @@ export abstract class BaseSequelize {
3752
3853 return this . getValidationOnlyConfig ( config ) ;
3954 }
40- return { ...config as ISequelizeConfig } ;
55+
56+ if ( BaseSequelize . isISequelizeDbNameConfig ( config ) ) {
57+ // Sequelize uses "database" property as a database name.
58+ // @TODO : "name" property is deprecated, use "database" instead
59+ const database = config . name ;
60+ return { ...config , database} as ISequelizeConfig ;
61+ }
62+
63+ return { ...config as SequelizeConfig } ;
4164 }
4265
43- static getValidationOnlyConfig ( config : ISequelizeConfig | ISequelizeValidationOnlyConfig ) : ISequelizeConfig {
66+ static getValidationOnlyConfig ( config : SequelizeConfig | ISequelizeValidationOnlyConfig ) : ISequelizeConfig {
4467 return {
4568 ...config ,
46- name : '_name_' ,
69+ database : '_name_' ,
4770 username : '_username_' ,
4871 password : '_password_' ,
4972 dialect : 'sqlite' ,
@@ -64,7 +87,7 @@ export abstract class BaseSequelize {
6487 models . forEach ( model => this . _ [ model . name ] = model ) ;
6588 }
6689
67- init ( config : ISequelizeConfig ) : void {
90+ init ( config : SequelizeConfig ) : void {
6891
6992 if ( config . modelPaths ) this . addModels ( config . modelPaths ) ;
7093 }
0 commit comments