effect-mongodb 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AggregationCursor/package.json +6 -0
- package/DocumentAggregationCursor/package.json +6 -0
- package/ListCollectionsCursor/package.json +6 -0
- package/README.md +8 -3
- package/dist/cjs/AggregationCursor.js +34 -0
- package/dist/cjs/AggregationCursor.js.map +1 -0
- package/dist/cjs/Collection.js +41 -4
- package/dist/cjs/Collection.js.map +1 -1
- package/dist/cjs/Db.js +7 -1
- package/dist/cjs/Db.js.map +1 -1
- package/dist/cjs/DocumentAggregationCursor.js +27 -0
- package/dist/cjs/DocumentAggregationCursor.js.map +1 -0
- package/dist/cjs/DocumentCollection.js +30 -3
- package/dist/cjs/DocumentCollection.js.map +1 -1
- package/dist/cjs/DocumentFindCursor.js +4 -0
- package/dist/cjs/DocumentFindCursor.js.map +1 -1
- package/dist/cjs/FindCursor.js +6 -4
- package/dist/cjs/FindCursor.js.map +1 -1
- package/dist/cjs/ListCollectionsCursor.js +27 -0
- package/dist/cjs/ListCollectionsCursor.js.map +1 -0
- package/dist/cjs/MongoClient.js.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/internal/filter.js +6 -0
- package/dist/cjs/internal/filter.js.map +1 -0
- package/dist/cjs/internal/modify-result.js +6 -0
- package/dist/cjs/internal/modify-result.js.map +1 -0
- package/dist/cjs/internal/schema.js +19 -0
- package/dist/cjs/internal/schema.js.map +1 -0
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/AggregationCursor.d.ts +18 -0
- package/dist/dts/AggregationCursor.d.ts.map +1 -0
- package/dist/dts/Collection.d.ts +72 -14
- package/dist/dts/Collection.d.ts.map +1 -1
- package/dist/dts/Db.d.ts +28 -3
- package/dist/dts/Db.d.ts.map +1 -1
- package/dist/dts/DocumentAggregationCursor.d.ts +15 -0
- package/dist/dts/DocumentAggregationCursor.d.ts.map +1 -0
- package/dist/dts/DocumentCollection.d.ts +64 -7
- package/dist/dts/DocumentCollection.d.ts.map +1 -1
- package/dist/dts/DocumentFindCursor.d.ts +4 -7
- package/dist/dts/DocumentFindCursor.d.ts.map +1 -1
- package/dist/dts/FindCursor.d.ts +16 -18
- package/dist/dts/FindCursor.d.ts.map +1 -1
- package/dist/dts/ListCollectionsCursor.d.ts +20 -0
- package/dist/dts/ListCollectionsCursor.d.ts.map +1 -0
- package/dist/dts/MongoClient.d.ts +1 -1
- package/dist/dts/MongoClient.d.ts.map +1 -1
- package/dist/dts/index.d.ts +12 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/filter.d.ts +8 -0
- package/dist/dts/internal/filter.d.ts.map +1 -0
- package/dist/dts/internal/modify-result.d.ts +6 -0
- package/dist/dts/internal/modify-result.d.ts.map +1 -0
- package/dist/dts/internal/schema.d.ts +6 -0
- package/dist/dts/internal/schema.d.ts.map +1 -0
- package/dist/esm/AggregationCursor.js +22 -0
- package/dist/esm/AggregationCursor.js.map +1 -0
- package/dist/esm/Collection.js +39 -3
- package/dist/esm/Collection.js.map +1 -1
- package/dist/esm/Db.js +6 -0
- package/dist/esm/Db.js.map +1 -1
- package/dist/esm/DocumentAggregationCursor.js +15 -0
- package/dist/esm/DocumentAggregationCursor.js.map +1 -0
- package/dist/esm/DocumentCollection.js +28 -2
- package/dist/esm/DocumentCollection.js.map +1 -1
- package/dist/esm/DocumentFindCursor.js +3 -0
- package/dist/esm/DocumentFindCursor.js.map +1 -1
- package/dist/esm/FindCursor.js +5 -4
- package/dist/esm/FindCursor.js.map +1 -1
- package/dist/esm/ListCollectionsCursor.js +15 -0
- package/dist/esm/ListCollectionsCursor.js.map +1 -0
- package/dist/esm/MongoClient.js.map +1 -1
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/filter.js +2 -0
- package/dist/esm/internal/filter.js.map +1 -0
- package/dist/esm/internal/modify-result.js +2 -0
- package/dist/esm/internal/modify-result.js.map +1 -0
- package/dist/esm/internal/schema.js +10 -0
- package/dist/esm/internal/schema.js.map +1 -0
- package/dist/esm/internal/version.js +1 -1
- package/package.json +26 -3
- package/src/AggregationCursor.ts +37 -0
- package/src/Collection.ts +390 -24
- package/src/Db.ts +47 -3
- package/src/DocumentAggregationCursor.ts +30 -0
- package/src/DocumentCollection.ts +342 -5
- package/src/DocumentFindCursor.ts +5 -5
- package/src/FindCursor.ts +31 -27
- package/src/ListCollectionsCursor.ts +45 -0
- package/src/MongoClient.ts +5 -2
- package/src/index.ts +15 -0
- package/src/internal/filter.ts +9 -0
- package/src/internal/modify-result.ts +6 -0
- package/src/internal/schema.ts +12 -0
- package/src/internal/version.ts +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.0.1
|
|
3
|
+
*/
|
|
4
|
+
import * as Data from "effect/Data"
|
|
5
|
+
import * as Effect from "effect/Effect"
|
|
6
|
+
import * as F from "effect/Function"
|
|
7
|
+
import * as Stream from "effect/Stream"
|
|
8
|
+
import type {
|
|
9
|
+
CollectionInfo as MongoCollectionInfo,
|
|
10
|
+
ListCollectionsCursor as MongoListCollectionsCursor
|
|
11
|
+
} from "mongodb"
|
|
12
|
+
import * as MongoError from "./MongoError.js"
|
|
13
|
+
|
|
14
|
+
export type NameOnlyCollectionInfo = Pick<MongoCollectionInfo, "name" | "type">
|
|
15
|
+
export type FullCollectionInfo = MongoCollectionInfo
|
|
16
|
+
|
|
17
|
+
type DefaultCollectionInfo = NameOnlyCollectionInfo | FullCollectionInfo
|
|
18
|
+
|
|
19
|
+
export class ListCollectionsCursor<
|
|
20
|
+
T extends DefaultCollectionInfo = DefaultCollectionInfo
|
|
21
|
+
> extends Data.TaggedClass("ListCollectionsCursor")<{
|
|
22
|
+
cursor: MongoListCollectionsCursor<T>
|
|
23
|
+
}> {}
|
|
24
|
+
|
|
25
|
+
export type NameOnlyListCollectionsCursor = ListCollectionsCursor<
|
|
26
|
+
Pick<MongoCollectionInfo, "name" | "type">
|
|
27
|
+
>
|
|
28
|
+
|
|
29
|
+
export type FullListCollectionsCursor = ListCollectionsCursor<MongoCollectionInfo>
|
|
30
|
+
|
|
31
|
+
export const toArray = <T extends DefaultCollectionInfo>(
|
|
32
|
+
cursor: ListCollectionsCursor<T>
|
|
33
|
+
): Effect.Effect<ReadonlyArray<T>, MongoError.MongoError> =>
|
|
34
|
+
F.pipe(
|
|
35
|
+
Effect.tryPromise({ try: () => cursor.cursor.toArray(), catch: F.identity }),
|
|
36
|
+
Effect.catchAll(MongoError.mongoErrorDie<ReadonlyArray<T>>(`${cursor._tag}.toArray error`))
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
export const toStream = <T extends DefaultCollectionInfo>(
|
|
40
|
+
cursor: ListCollectionsCursor<T>
|
|
41
|
+
): Stream.Stream<T, MongoError.MongoError> =>
|
|
42
|
+
F.pipe(
|
|
43
|
+
Stream.fromAsyncIterable(cursor.cursor, F.identity),
|
|
44
|
+
Stream.catchAll(MongoError.mongoErrorStream<T>(`${cursor._tag}.toStream error`))
|
|
45
|
+
)
|
package/src/MongoClient.ts
CHANGED
|
@@ -12,7 +12,10 @@ import * as Context from "effect/Context"
|
|
|
12
12
|
|
|
13
13
|
export type MongoClient = MongoClient_
|
|
14
14
|
|
|
15
|
-
export const connect = (
|
|
15
|
+
export const connect = (
|
|
16
|
+
url: string,
|
|
17
|
+
options?: MongoClientOptions
|
|
18
|
+
): Effect.Effect<MongoClient, MongoError.MongoError> =>
|
|
16
19
|
Effect.promise(() => MongoClient_.connect(url, options)).pipe(
|
|
17
20
|
Effect.catchAll(MongoError.mongoErrorDie<MongoClient_>("connect error"))
|
|
18
21
|
)
|
|
@@ -22,7 +25,7 @@ export const db: {
|
|
|
22
25
|
(client: MongoClient, dbName?: string, options?: DbOptions): Db
|
|
23
26
|
} = F.dual(
|
|
24
27
|
(args) => isMongoClient(args[0]),
|
|
25
|
-
(client: MongoClient, dbName?: string, options?: DbOptions) => client.db(dbName, options)
|
|
28
|
+
(client: MongoClient, dbName?: string, options?: DbOptions): Db => client.db(dbName, options)
|
|
26
29
|
)
|
|
27
30
|
|
|
28
31
|
const isMongoClient = (x: unknown) => x instanceof MongoClient_
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.0.1
|
|
3
|
+
*/
|
|
4
|
+
export * as AggregationCursor from "./AggregationCursor.js"
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* @since 0.0.1
|
|
3
8
|
*/
|
|
@@ -8,6 +13,11 @@ export * as Collection from "./Collection.js"
|
|
|
8
13
|
*/
|
|
9
14
|
export * as Db from "./Db.js"
|
|
10
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @since 0.0.1
|
|
18
|
+
*/
|
|
19
|
+
export * as DocumentAggregationCursor from "./DocumentAggregationCursor.js"
|
|
20
|
+
|
|
11
21
|
/**
|
|
12
22
|
* @since 0.0.1
|
|
13
23
|
*/
|
|
@@ -23,6 +33,11 @@ export * as DocumentFindCursor from "./DocumentFindCursor.js"
|
|
|
23
33
|
*/
|
|
24
34
|
export * as FindCursor from "./FindCursor.js"
|
|
25
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @since 0.0.1
|
|
38
|
+
*/
|
|
39
|
+
export * as ListCollectionsCursor from "./ListCollectionsCursor.js"
|
|
40
|
+
|
|
26
41
|
/**
|
|
27
42
|
* @since 0.0.1
|
|
28
43
|
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Condition, RootFilterOperators as MongoRootFilterOperators, WithId } from "mongodb"
|
|
2
|
+
|
|
3
|
+
export type RootFilterOperators<TSchema> = Omit<MongoRootFilterOperators<TSchema>, "$where"> & { $where?: string }
|
|
4
|
+
|
|
5
|
+
export type Filter<TSchema> =
|
|
6
|
+
& {
|
|
7
|
+
[P in keyof WithId<TSchema>]?: Condition<WithId<TSchema>[P]>
|
|
8
|
+
}
|
|
9
|
+
& RootFilterOperators<WithId<TSchema>>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect"
|
|
2
|
+
import * as O from "effect/Option"
|
|
3
|
+
import * as Schema from "effect/Schema"
|
|
4
|
+
import type { Document } from "mongodb"
|
|
5
|
+
|
|
6
|
+
// TODO: there is probably a Schema to do this decode or using typeclass package for traverse
|
|
7
|
+
export const decodeNullableDocument = <A, I, R>(schema: Schema.Schema<A, I, R>, value: Document | null) =>
|
|
8
|
+
Effect.gen(function*(_) {
|
|
9
|
+
if (value === null) return O.none()
|
|
10
|
+
const decoded = yield* _(Schema.decodeUnknown(schema)(value))
|
|
11
|
+
return O.some(decoded)
|
|
12
|
+
})
|
package/src/internal/version.ts
CHANGED