1
1
/**
2
2
* @since 0.0.1
3
3
*/
4
+ import * as Data from "effect/Data"
4
5
import * as Effect from "effect/Effect"
5
6
import * as F from "effect/Function"
6
7
import type * as Scope from "effect/Scope"
@@ -10,13 +11,14 @@ import * as Db from "./Db.js"
10
11
import { mongoErrorOrDie } from "./internal/mongo-error.js"
11
12
import * as MongoError from "./MongoError.js"
12
13
13
- export type MongoClient = MongoClient_
14
+ export class MongoClient extends Data . TaggedClass ( "MongoClient" ) < { client : MongoClient_ } > { }
14
15
15
16
export const connect = (
16
17
url : string ,
17
18
options ?: MongoClientOptions
18
19
) : Effect . Effect < MongoClient , MongoError . MongoError > =>
19
20
Effect . promise ( ( ) => MongoClient_ . connect ( url , options ) ) . pipe (
21
+ Effect . map ( ( client ) => new MongoClient ( { client } ) ) ,
20
22
Effect . catchAllDefect ( mongoErrorOrDie ( errorSource ( [ new URL ( url ) . host ] , "connect" ) ) )
21
23
)
22
24
@@ -25,7 +27,7 @@ export const close: {
25
27
( client : MongoClient , force ?: boolean ) : Effect . Effect < void , MongoError . MongoError >
26
28
} = F . dual (
27
29
( args ) => isMongoClient ( args [ 0 ] ) ,
28
- ( client : MongoClient , force ?: boolean ) : Effect . Effect < void , MongoError . MongoError > =>
30
+ ( { client } : MongoClient , force ?: boolean ) : Effect . Effect < void , MongoError . MongoError > =>
29
31
Effect . promise ( ( ) => client . close ( force ) ) . pipe (
30
32
Effect . catchAllDefect ( mongoErrorOrDie ( errorSource ( client . options . hosts . map ( ( x ) => x . host ?? "NO_HOST" ) , "close" ) ) )
31
33
)
@@ -47,7 +49,8 @@ export const db: {
47
49
( client : MongoClient , dbName ?: string , options ?: DbOptions ) : Db . Db
48
50
} = F . dual (
49
51
( args ) => isMongoClient ( args [ 0 ] ) ,
50
- ( client : MongoClient , dbName ?: string , options ?: DbOptions ) : Db . Db => new Db . Db ( { db : client . db ( dbName , options ) } )
52
+ ( { client } : MongoClient , dbName ?: string , options ?: DbOptions ) : Db . Db =>
53
+ new Db . Db ( { db : client . db ( dbName , options ) } )
51
54
)
52
55
53
56
const isMongoClient = ( x : unknown ) => x instanceof MongoClient_
0 commit comments