@@ -32,6 +32,7 @@ import {RelationLoader} from "../query-builder/RelationLoader.ts";
3232import { RelationIdLoader } from "../query-builder/RelationIdLoader.ts" ;
3333import { EntitySchema } from "../index.ts" ;
3434import { ObjectUtils } from "../util/ObjectUtils.ts" ;
35+ import { PromiseUtils } from "../util/PromiseUtils.ts" ;
3536import { IsolationLevel } from "../driver/types/IsolationLevel.ts" ;
3637import { QueryBuilderFactory } from "../query-builder/QueryBuilderFactory.ts" ;
3738
@@ -255,7 +256,19 @@ export class Connection {
255256 async dropDatabase ( ) : Promise < void > {
256257 const queryRunner = this . createQueryRunner ( "master" ) ;
257258 try {
258- await queryRunner . clearDatabase ( ) ;
259+ if (
260+ false /*this.driver instanceof SqlServerDriver ||*/ // TODO(uki00a) uncomment this when SqlServerDriver is implemented.
261+ /* this.driver instanceof MysqlDriver ||*/ // TODO(uki00a) uncomment this when MysqlDriver is implemented.
262+ /*this.driver instanceof AuroraDataApiDriver*/ ) { // TODO(uki00a) uncomment this when AuroraDataApiDriver is implemented.
263+ const databases : string [ ] = this . driver . database ? [ this . driver . database ] : [ ] ;
264+ this . entityMetadatas . forEach ( metadata => {
265+ if ( metadata . database && databases . indexOf ( metadata . database ) === - 1 )
266+ databases . push ( metadata . database ) ;
267+ } ) ;
268+ await PromiseUtils . runInSequence ( databases , database => queryRunner . clearDatabase ( database ) ) ;
269+ } else {
270+ await queryRunner . clearDatabase ( ) ;
271+ }
259272 } finally {
260273 await queryRunner . release ( ) ;
261274 }
@@ -514,13 +527,13 @@ export class Connection {
514527 protected getDatabaseName ( ) : string {
515528 const options = this . options ;
516529 switch ( options . type ) {
517- // case "mysql" :
518- // case "mariadb" :
519- // case "postgres":
520- // case "cockroachdb":
521- // case "mssql":
522- // case "oracle":
523- // return (options.replication ? options.replication.master.database : options.database) as string;
530+ case "mysql" :
531+ case "mariadb" :
532+ case "postgres" :
533+ // case "cockroachdb": // TODO(uki00a) uncomment this when CockroachDriver is implemented.
534+ // case "mssql": // TODO(uki00a) uncomment this when SqlServerDriver is implemented.
535+ // case "oracle": // TODO(uki00a) uncomment this when OracleDriver is implemented.
536+ return ( options . replication ? options . replication . master . database : options . database ) as string ;
524537 default :
525538 return options . database as string ;
526539 }
0 commit comments