Skip to content

Commit facda4f

Browse files
committed
effect-mongodb: add updateOne to Collection and DocumentCollection
1 parent d884752 commit facda4f

File tree

5 files changed

+86
-0
lines changed

5 files changed

+86
-0
lines changed

.changeset/chilly-boats-peel.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"effect-mongodb": patch
3+
---
4+
5+
Add `updateOne` to `Collection` and `DocumentCollection`

packages/effect-mongodb/dtslint/Collection.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ Collection.deleteMany(collection, { birthday: "2024-11-28" })
7474
// $ExpectType Effect<DeleteResult, MongoError, never>
7575
F.pipe(collection, Collection.deleteMany({ birthday: "2024-11-28" }))
7676

77+
// -------------------------------------------------------------------------------------
78+
// updateOne
79+
// -------------------------------------------------------------------------------------
80+
81+
// $ExpectType Effect<UpdateResult<{ readonly birthday: string; }>, MongoError, never>
82+
Collection.updateOne(collection, { birthday: "2024-11-28" }, { $set: { birthday: "2024-11-29" } })
83+
84+
// $ExpectType Effect<UpdateResult<{ readonly birthday: string; }>, MongoError, never>
85+
F.pipe(collection, Collection.updateOne({ birthday: "2024-11-28" }, { $set: { birthday: "2024-11-29" } }))
86+
7787
// -------------------------------------------------------------------------------------
7888
// updateMany
7989
// -------------------------------------------------------------------------------------

packages/effect-mongodb/dtslint/DocumentCollection.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ DocumentCollection.deleteMany(collection, { birthday: "2024-11-28" })
7676
// $ExpectType Effect<DeleteResult, MongoError, never>
7777
F.pipe(collection, DocumentCollection.deleteMany({ birthday: "2024-11-28" }))
7878

79+
// -------------------------------------------------------------------------------------
80+
// updateOne
81+
// -------------------------------------------------------------------------------------
82+
83+
// $ExpectType Effect<UpdateResult<Document>, MongoError, never>
84+
DocumentCollection.updateOne(collection, { birthday: "2024-11-28" }, { $set: { birthday: "2024-11-29" } })
85+
86+
// $ExpectType Effect<UpdateResult<Document>, MongoError, never>
87+
F.pipe(collection, DocumentCollection.updateOne({ birthday: "2024-11-28" }, { $set: { birthday: "2024-11-29" } }))
88+
7989
// -------------------------------------------------------------------------------------
8090
// updateMany
8191
// -------------------------------------------------------------------------------------

packages/effect-mongodb/src/Collection.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,37 @@ export const deleteMany: {
202202
)
203203
)
204204

205+
export const updateOne: {
206+
<I extends Document>(
207+
filter: Filter<I>,
208+
update: UpdateFilter<I> | ReadonlyArray<Document>,
209+
options?: UpdateOptions
210+
): <A extends Document, I2 extends I, R>(
211+
collection: Collection<A, I2, R>
212+
) => Effect.Effect<UpdateResult<I2>, MongoError.MongoError, R>
213+
<A extends Document, I extends Document, R>(
214+
collection: Collection<A, I, R>,
215+
filter: Filter<I>,
216+
update: UpdateFilter<I> | ReadonlyArray<Document>,
217+
options?: UpdateOptions
218+
): Effect.Effect<UpdateResult<I>, MongoError.MongoError, R>
219+
} = F.dual(
220+
(args) => isCollection(args[0]),
221+
<A extends Document, I extends Document, R>(
222+
collection: Collection<A, I, R>,
223+
filter: Filter<I>,
224+
update: UpdateFilter<I> | ReadonlyArray<Document>,
225+
options?: UpdateOptions
226+
): Effect.Effect<UpdateResult<I>, MongoError.MongoError, R> =>
227+
Effect.promise(() =>
228+
collection.collection.updateOne(
229+
filter,
230+
Array.isArray(update) ? [...update] : update as UpdateFilter<Document>,
231+
options
232+
)
233+
).pipe(Effect.catchAllDefect(mongoErrorOrDie(errorSource(collection, "updateOne"))))
234+
)
235+
205236
export const updateMany: {
206237
<I extends Document>(
207238
filter: Filter<I>,

packages/effect-mongodb/src/DocumentCollection.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,36 @@ export const deleteMany: {
194194
)
195195
)
196196

197+
export const updateOne: {
198+
(
199+
filter: Filter<Document>,
200+
update: UpdateFilter<Document> | ReadonlyArray<Document>,
201+
options?: UpdateOptions
202+
): (
203+
collection: DocumentCollection
204+
) => Effect.Effect<UpdateResult, MongoError.MongoError>
205+
(
206+
collection: DocumentCollection,
207+
filter: Filter<Document>,
208+
update: UpdateFilter<Document> | ReadonlyArray<Document>,
209+
options?: UpdateOptions
210+
): Effect.Effect<UpdateResult, MongoError.MongoError>
211+
} = F.dual(
212+
(args) => isDocumentCollection(args[0]),
213+
(
214+
collection: DocumentCollection,
215+
filter: Filter<Document>,
216+
update: UpdateFilter<Document> | ReadonlyArray<Document>,
217+
options?: UpdateOptions
218+
): Effect.Effect<UpdateResult, MongoError.MongoError> =>
219+
F.pipe(
220+
Effect.promise(() =>
221+
collection.collection.updateOne(filter, Array.isArray(update) ? [...update] : update, options)
222+
),
223+
Effect.catchAllDefect(mongoErrorOrDie(errorSource(collection, "updateOne")))
224+
)
225+
)
226+
197227
export const updateMany: {
198228
(
199229
filter: Filter<Document>,

0 commit comments

Comments
 (0)