@@ -21,7 +21,7 @@ const logger = Logger("app:mongo.service");
2121interface InternalClient {
2222 db : Db ;
2323 client : MongoClient ;
24- event : Collection < Schema_Event > ;
24+ event : Collection < Omit < Schema_Event , "_id" > > ;
2525 sync : Collection < Schema_Sync > ;
2626 user : Collection < Schema_User > ;
2727 waitlist : Collection < Schema_Waitlist > ;
@@ -39,7 +39,7 @@ class MongoService {
3939 *
4040 * mongo collection
4141 */
42- get event ( ) : Collection < Schema_Event > {
42+ get event ( ) : InternalClient [ "event" ] {
4343 return this . #accessInternalCollectionProps( "event" ) ;
4444 }
4545
@@ -48,7 +48,7 @@ class MongoService {
4848 *
4949 * mongo collection
5050 */
51- get sync ( ) : Collection < Schema_Sync > {
51+ get sync ( ) : InternalClient [ "sync" ] {
5252 return this . #accessInternalCollectionProps( "sync" ) ;
5353 }
5454
@@ -57,7 +57,7 @@ class MongoService {
5757 *
5858 * mongo collection
5959 */
60- get user ( ) : Collection < Schema_User > {
60+ get user ( ) : InternalClient [ "user" ] {
6161 return this . #accessInternalCollectionProps( "user" ) ;
6262 }
6363
@@ -66,12 +66,12 @@ class MongoService {
6666 *
6767 * mongo collection
6868 */
69- get waitlist ( ) : Collection < Schema_Waitlist > {
69+ get waitlist ( ) : InternalClient [ "waitlist" ] {
7070 return this . #accessInternalCollectionProps( "waitlist" ) ;
7171 }
7272
73- private onConnect ( client : MongoClient ) {
74- this . #internalClient = this . createInternalClient ( client ) ;
73+ private onConnect ( client : MongoClient , useDynamicDb = false ) {
74+ this . #internalClient = this . createInternalClient ( client , useDynamicDb ) ;
7575
7676 Object . seal ( this ) ;
7777 }
@@ -81,7 +81,6 @@ class MongoService {
8181 }
8282
8383 private onError ( error : Error ) : void {
84- console . log ( "hey there!" ) ;
8584 logger . error ( error . message , error ) ;
8685 }
8786
@@ -93,13 +92,16 @@ class MongoService {
9392 logger . debug ( `Connection to database: '${ event . address } ' closed` ) ;
9493 }
9594
96- private createInternalClient ( client : MongoClient ) : InternalClient {
97- const db = client . db ( ENV . DB ) ;
95+ private createInternalClient (
96+ client : MongoClient ,
97+ useDynamicDb = false ,
98+ ) : InternalClient {
99+ const db = client . db ( useDynamicDb ? undefined : ENV . DB ) ;
98100
99101 return {
100102 db,
101103 client,
102- event : db . collection < Schema_Event > ( Collections . EVENT ) ,
104+ event : db . collection < Omit < Schema_Event , "_id" > > ( Collections . EVENT ) ,
103105 sync : db . collection < Schema_Sync > ( Collections . SYNC ) ,
104106 user : db . collection < Schema_User > ( Collections . USER ) ,
105107 waitlist : db . collection < Schema_Waitlist > ( Collections . WAITLIST ) ,
@@ -134,14 +136,14 @@ class MongoService {
134136 return retry ;
135137 }
136138
137- async start ( uri : string = ENV . MONGO_URI ) : Promise < MongoService > {
139+ async start ( useDynamicDb = false ) : Promise < MongoService > {
138140 if ( this . #internalClient) return this ;
139141
140- const client = new MongoClient ( uri , {
142+ const client = new MongoClient ( ENV . MONGO_URI , {
141143 serverApi : { strict : true , version : "1" } ,
142144 } ) ;
143145
144- client . on ( "open" , this . onConnect . bind ( this ) ) ;
146+ client . on ( "open" , ( client ) => this . onConnect ( client , useDynamicDb ) ) ;
145147 client . on ( "close" , this . onDisconnect . bind ( this ) ) ;
146148 client . on ( "error" , this . onError . bind ( this ) ) ;
147149 client . on ( "connectionClosed" , this . onClose . bind ( this ) ) ;
0 commit comments