1+ import { MongoClient } from "mongodb" ;
2+
13import { mappings } from "./config/mapping.js" ;
24import { parseQuery } from "./utils/parser.js" ;
35import { connect } from "./utils/database.js" ;
46import { SqlToNoSqlType } from "./types/index.js" ;
57
68export class SqlToNoSql {
7- constructor ( private config : SqlToNoSqlType ) {
8- connect ( this . config . connection ) ;
9- }
9+ client : MongoClient | undefined ;
10+
11+ constructor ( private config : SqlToNoSqlType ) { }
1012
11- run ( query : string ) {
13+ async run ( query : string ) {
1214 if ( ! query ) {
1315 throw new Error ( "missing query!" ) ;
1416 }
@@ -19,6 +21,7 @@ export class SqlToNoSql {
1921 }
2022
2123 const q = parseQuery ( query ) ;
24+ this . client = await connect ( this . config . connection ) ;
2225
2326 const filters : {
2427 [ key : string ] : {
@@ -43,15 +46,18 @@ export class SqlToNoSql {
4346 query : filters ,
4447 } ;
4548
46- return mongoQuery ;
49+ try {
50+ await this . client . connect ( ) ;
51+ const db = this . client . db ( ) ;
52+ const collection = db . collection ( mongoQuery . collection ) ;
53+ const data = await collection [ mongoQuery [ q . command ] ] (
54+ mongoQuery . query ,
55+ ) . toArray ( ) ;
56+
57+ return data ;
58+ } catch ( err ) {
59+ console . error ( err ) ;
60+ throw Error ( "Something went wrong!" ) ;
61+ }
4762 }
4863}
49-
50- const runner = new SqlToNoSql ( {
51- srcDBtype : "postgresql" ,
52- destDBtype : "mongodb" ,
53- connection : "mongodb://localhost:27017" ,
54- } ) ;
55-
56- console . log ( runner . run ( "SELECT * FROM users" ) ) ;
57- console . log ( runner . run ( "select * from users where id = 1" ) ) ;
0 commit comments