Skip to content

Commit b6a1dec

Browse files
committed
Db: documentCollection/collection functions are not an effectful operation like mongodb driver
1 parent 18137ba commit b6a1dec

File tree

7 files changed

+27
-33
lines changed

7 files changed

+27
-33
lines changed

examples/copy-between-dbs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type MyType = Schema.Schema.Type<typeof MyType>
1717
const program = Effect.gen(function*(_) {
1818
const sourceInstance = yield* _(MongoClient.connect("mongodb://localhost:27017"))
1919
const sourceDb = MongoClient.db(sourceInstance, "source")
20-
const sourceCollection = yield* _(Db.documentCollection(sourceDb, "records"))
20+
const sourceCollection = Db.documentCollection(sourceDb, "records")
2121
const sourceItems = yield* _(
2222
DocumentCollection.find(sourceCollection),
2323
DocumentFindCursor.typed(MyType),
@@ -26,7 +26,7 @@ const program = Effect.gen(function*(_) {
2626

2727
const destinationInstance = yield* _(MongoClient.connect("mongodb://localhost:27017"))
2828
const destinationDb = MongoClient.db(destinationInstance, "destination")
29-
const destinationCollection = yield* _(Db.collection(destinationDb, "records", MyType))
29+
const destinationCollection = Db.collection(destinationDb, "records", MyType)
3030

3131
yield* _(Collection.insertMany(destinationCollection, sourceItems))
3232
})

examples/elaborate-stream-with-partitioned-errors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ type MyType = Schema.Schema.Type<typeof MyType>
1919
const program = Effect.gen(function*(_) {
2020
const sourceInstance = yield* _(MongoClient.connect("mongodb://localhost:27017"))
2121
const sourceDb = MongoClient.db(sourceInstance, "source")
22-
const sourceCollection = yield* _(Db.documentCollection(sourceDb, "records"))
22+
const sourceCollection = Db.documentCollection(sourceDb, "records")
2323

2424
yield* _(
2525
DocumentCollection.find(sourceCollection),

src/Db.ts

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,39 +15,33 @@ import * as MongoClient from "./MongoClient.js"
1515
import type * as MongoError from "./MongoError.js"
1616

1717
export const documentCollection: {
18-
(name: string): (db: Db) => Effect.Effect<DocumentCollection.DocumentCollection>
19-
(db: Db, name: string): Effect.Effect<DocumentCollection.DocumentCollection>
18+
(name: string): (db: Db) => DocumentCollection.DocumentCollection
19+
(db: Db, name: string): DocumentCollection.DocumentCollection
2020
} = F.dual(
2121
(args) => isDb(args[0]),
22-
(db: Db, name: string) =>
23-
Effect.sync(() =>
24-
new DocumentCollection.DocumentCollection({
25-
collection: db.collection(name)
26-
})
27-
)
22+
(db: Db, name: string): DocumentCollection.DocumentCollection =>
23+
new DocumentCollection.DocumentCollection({
24+
collection: db.collection(name)
25+
})
2826
)
2927

3028
export const collection: {
3129
<A extends Document, I extends Document = A, R = never>(
3230
name: string,
3331
schema: Schema.Schema<A, I, R>
34-
): (db: Db) => Effect.Effect<Collection.Collection<A, I, R>>
32+
): (db: Db) => Collection.Collection<A, I, R>
3533
<A extends Document, I extends Document = A, R = never>(
3634
db: Db,
3735
name: string,
3836
schema: Schema.Schema<A, I, R>
39-
): Effect.Effect<Collection.Collection<A, I, R>>
37+
): Collection.Collection<A, I, R>
4038
} = F.dual(
4139
(args) => isDb(args[0]),
4240
<A extends Document, I extends Document = A, R = never>(
4341
db: Db,
4442
name: string,
4543
schema: Schema.Schema<A, I, R>
46-
): Effect.Effect<Collection.Collection<A, I, R>> =>
47-
F.pipe(
48-
documentCollection(db, name),
49-
Effect.map(DocumentCollection.typed(schema))
50-
)
44+
): Collection.Collection<A, I, R> => DocumentCollection.typed(documentCollection(db, name), schema)
5145
)
5246

5347
const isDb = (x: unknown) => x instanceof Db

test/Collection.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ describeMongo("Collection", (ctx) => {
1212

1313
const program = Effect.gen(function*(_) {
1414
const db = yield* _(ctx.database)
15-
const collection = yield* _(Db.collection(db, "find-one", User))
15+
const collection = Db.collection(db, "find-one", User)
1616

1717
yield* _(
1818
Collection.insertOne(collection, user)

test/DocumentCollection.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ describeMongo("DocumentCollection", (ctx) => {
1111
test("insert and find", async () => {
1212
const program = Effect.gen(function*(_) {
1313
const db = yield* _(ctx.database)
14-
const collection = yield* _(Db.documentCollection(db, "insert-and-find"))
14+
const collection = Db.documentCollection(db, "insert-and-find")
1515

1616
yield* _(DocumentCollection.insertOne(collection, { name: "John" }))
1717

@@ -26,7 +26,7 @@ describeMongo("DocumentCollection", (ctx) => {
2626
test("insert many and find", async () => {
2727
const program = Effect.gen(function*(_) {
2828
const db = yield* _(ctx.database)
29-
const collection = yield* _(Db.documentCollection(db, "insert-many-and-find"))
29+
const collection = Db.documentCollection(db, "insert-many-and-find")
3030

3131
yield* _(
3232
DocumentCollection.insertMany(collection, [{ name: "NAME_1" }, { name: "NAME_2" }, { name: "NAME_3" }])
@@ -47,7 +47,7 @@ describeMongo("DocumentCollection", (ctx) => {
4747
test("find one", async () => {
4848
const program = Effect.gen(function*(_) {
4949
const db = yield* _(ctx.database)
50-
const collection = yield* _(Db.documentCollection(db, "find-one"))
50+
const collection = Db.documentCollection(db, "find-one")
5151

5252
yield* _(
5353
DocumentCollection.insertMany(collection, [{ name: "ANY_NAME_1" }, { name: "john" }, { name: "ANY_NAME_2" }])
@@ -64,7 +64,7 @@ describeMongo("DocumentCollection", (ctx) => {
6464
test("find one - no result", async () => {
6565
const program = Effect.gen(function*(_) {
6666
const db = yield* _(ctx.database)
67-
const collection = yield* _(Db.documentCollection(db, "find-one-no-result"))
67+
const collection = Db.documentCollection(db, "find-one-no-result")
6868

6969
yield* _(
7070
DocumentCollection.insertMany(collection, [{ name: "ANY_NAME_1" }, { name: "ANY_NAME_2" }, {

test/DocumentFindCursor.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
1111
test("filter", async () => {
1212
const program = Effect.gen(function*(_) {
1313
const db = yield* _(ctx.database)
14-
const collection = yield* _(Db.documentCollection(db, "filter"))
14+
const collection = Db.documentCollection(db, "filter")
1515

1616
yield* _(
1717
DocumentCollection.insertMany(collection, [
@@ -42,7 +42,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
4242

4343
const program = Effect.gen(function*(_) {
4444
const db = yield* _(ctx.database)
45-
const collection = yield* _(Db.documentCollection(db, "project"))
45+
const collection = Db.documentCollection(db, "project")
4646

4747
yield* _(
4848
DocumentCollection.insertMany(collection, [
@@ -71,7 +71,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
7171
test("sort", async () => {
7272
const program = Effect.gen(function*(_) {
7373
const db = yield* _(ctx.database)
74-
const collection = yield* _(Db.documentCollection(db, "sort"))
74+
const collection = Db.documentCollection(db, "sort")
7575

7676
yield* _(
7777
DocumentCollection.insertMany(collection, [
@@ -104,7 +104,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
104104
test("limit", async () => {
105105
const program = Effect.gen(function*(_) {
106106
const db = yield* _(ctx.database)
107-
const collection = yield* _(Db.documentCollection(db, "limit"))
107+
const collection = Db.documentCollection(db, "limit")
108108

109109
yield* _(
110110
DocumentCollection.insertMany(collection, [
@@ -137,7 +137,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
137137

138138
const program = Effect.gen(function*(_) {
139139
const db = yield* _(ctx.database)
140-
const collection = yield* _(Db.documentCollection(db, "many-operations"))
140+
const collection = Db.documentCollection(db, "many-operations")
141141

142142
yield* _(
143143
DocumentCollection.insertMany(collection, [
@@ -177,7 +177,7 @@ describeMongo("DocumentFindCursor", (ctx) => {
177177
const program = Effect.gen(function*(_) {
178178
const db = yield* _(ctx.database)
179179

180-
const collection = yield* _(Db.documentCollection(db, "stream"))
180+
const collection = Db.documentCollection(db, "stream")
181181
yield* _(DocumentCollection.insertMany(collection, users))
182182

183183
return yield* _(

test/FindCursor.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ describeMongo("FindCursor", (ctx) => {
1919

2020
const program = Effect.gen(function*(_) {
2121
const db = yield* _(ctx.database)
22-
const collection = yield* _(Db.collection(db, "decode-documents-with-schema", User))
22+
const collection = Db.collection(db, "decode-documents-with-schema", User)
2323

2424
yield* _(Collection.insertMany(collection, anyTestEntities))
2525

@@ -36,7 +36,7 @@ describeMongo("FindCursor", (ctx) => {
3636

3737
const program = Effect.gen(function*(_) {
3838
const db = yield* _(ctx.database)
39-
const collection = yield* _(Db.collection(db, "project", User))
39+
const collection = Db.collection(db, "project", User)
4040

4141
yield* _(Collection.insertMany(collection, anyUsers))
4242

@@ -58,7 +58,7 @@ describeMongo("FindCursor", (ctx) => {
5858

5959
const program = Effect.gen(function*(_) {
6060
const db = yield* _(ctx.database)
61-
const collection = yield* _(Db.collection(db, "stream", User))
61+
const collection = Db.collection(db, "stream", User)
6262

6363
yield* _(Collection.insertMany(collection, anyUsers))
6464

@@ -78,7 +78,7 @@ describeMongo("FindCursor", (ctx) => {
7878
test("stream with partitioned errors", async () => {
7979
const program = Effect.gen(function*(_) {
8080
const db = yield* _(ctx.database)
81-
const documentCollection = yield* _(Db.documentCollection(db, "stream-with-partitioned-errors"))
81+
const documentCollection = Db.documentCollection(db, "stream-with-partitioned-errors")
8282
const collection = DocumentCollection.typed(documentCollection, User)
8383

8484
yield* _(Collection.insertMany(collection, FastCheck.sample(UserArbitrary, 6)))

0 commit comments

Comments
 (0)