Skip to content

Commit d50d85d

Browse files
committed
DocumentCollection+Collection: add drop
1 parent 6f0a8d4 commit d50d85d

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

.changeset/two-scissors-impress.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 drop function in Collection and DocumentCollection

packages/effect-mongodb/src/Collection.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import type {
1515
DeleteOptions,
1616
DeleteResult,
1717
Document,
18+
DropCollectionOptions,
1819
FindOptions as MongoFindOptions,
1920
IndexDescription,
2021
InsertManyResult,
@@ -279,6 +280,28 @@ export const rename: {
279280
)
280281
)
281282

283+
export const drop: {
284+
(
285+
options?: DropCollectionOptions
286+
): <A extends Document, I extends Document, R>(
287+
collection: Collection<A, I, R>
288+
) => Effect.Effect<boolean, MongoError.MongoError, R>
289+
<A extends Document, I extends Document, R>(
290+
collection: Collection<A, I, R>,
291+
options?: DropCollectionOptions
292+
): Effect.Effect<boolean, MongoError.MongoError, R>
293+
} = F.dual(
294+
(args) => isCollection(args[0]),
295+
<A extends Document, I extends Document, R>(
296+
collection: Collection<A, I, R>,
297+
options?: DropCollectionOptions
298+
): Effect.Effect<boolean, MongoError.MongoError, R> =>
299+
F.pipe(
300+
Effect.promise(() => collection.collection.drop(options)),
301+
Effect.catchAllDefect(MongoError.mongoErrorDie<boolean>("drop error"))
302+
)
303+
)
304+
282305
export const createIndexes: {
283306
(
284307
indexSpecs: Array<IndexDescription>,

packages/effect-mongodb/src/DocumentCollection.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import type {
1414
DeleteOptions,
1515
DeleteResult,
1616
Document,
17+
DropCollectionOptions,
1718
Filter,
1819
FindOptions,
1920
IndexDescription,
@@ -259,6 +260,21 @@ export const rename: {
259260
)
260261
)
261262

263+
export const drop: {
264+
(options?: DropCollectionOptions): (collection: DocumentCollection) => Effect.Effect<boolean, MongoError.MongoError>
265+
(collection: DocumentCollection, options?: DropCollectionOptions): Effect.Effect<boolean, MongoError.MongoError>
266+
} = F.dual(
267+
(args) => isDocumentCollection(args[0]),
268+
(
269+
collection: DocumentCollection,
270+
options?: DropCollectionOptions
271+
): Effect.Effect<boolean, MongoError.MongoError> =>
272+
F.pipe(
273+
Effect.promise(() => collection.collection.drop(options)),
274+
Effect.catchAllDefect(MongoError.mongoErrorDie<boolean>("drop error"))
275+
)
276+
)
277+
262278
export const createIndexes: {
263279
(
264280
indexSpecs: Array<IndexDescription>,

0 commit comments

Comments
 (0)