Skip to content

Commit 9935dfc

Browse files
committed
Db: add type-level tests
1 parent 6d0fbd8 commit 9935dfc

File tree

2 files changed

+71
-3
lines changed

2 files changed

+71
-3
lines changed

Diff for: packages/effect-mongodb/dtslint/Db.ts

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import * as DBX from "effect-mongodb/Db"
2+
import * as F from "effect/Function"
3+
import * as Schema from "effect/Schema"
4+
import type { Db } from "mongodb"
5+
6+
declare const database: Db
7+
8+
const User = Schema.Struct({
9+
id: Schema.NumberFromString
10+
})
11+
12+
// -------------------------------------------------------------------------------------
13+
// documentCollection
14+
// -------------------------------------------------------------------------------------
15+
16+
// $ExpectType DocumentCollection
17+
DBX.documentCollection(database, "users")
18+
19+
// $ExpectType DocumentCollection
20+
F.pipe(database, DBX.documentCollection("users"))
21+
22+
// -------------------------------------------------------------------------------------
23+
// collection
24+
// -------------------------------------------------------------------------------------
25+
26+
// $ExpectType Collection<{ readonly id: number; }, { readonly id: string; }, never>
27+
DBX.collection(database, "users", User)
28+
29+
// $ExpectType Collection<{ readonly id: number; }, { readonly id: string; }, never>
30+
F.pipe(database, DBX.collection("users", User))
31+
32+
// -------------------------------------------------------------------------------------
33+
// listCollections
34+
// -------------------------------------------------------------------------------------
35+
36+
// $ExpectType ListCollectionsCursor<DefaultCollectionInfo>
37+
DBX.listCollections(database)
38+
39+
// TODO: this currently returns `(db: Db) => ListCollectionsCursor<DefaultCollectionInfo>`, why?
40+
// //$ExpectType ListCollectionsCursor<DefaultCollectionInfo>
41+
// F.pipe(database, DBX.listCollections)
42+
43+
// $ExpectType ListCollectionsCursor<DefaultCollectionInfo>
44+
DBX.listCollections(database, { foo: "bar" })
45+
46+
// $ExpectType ListCollectionsCursor<DefaultCollectionInfo>
47+
F.pipe(database, DBX.listCollections({ foo: "bar" }))
48+
49+
// $ExpectType NameOnlyListCollectionsCursor
50+
DBX.listCollections(database, { foo: "bar" }, { nameOnly: true })
51+
52+
// $ExpectType NameOnlyListCollectionsCursor
53+
F.pipe(database, DBX.listCollections({ foo: "bar" }, { nameOnly: true }))
54+
55+
// $ExpectType FullListCollectionsCursor
56+
DBX.listCollections(database, { foo: "bar" }, { nameOnly: false })
57+
58+
// $ExpectType FullListCollectionsCursor
59+
F.pipe(database, DBX.listCollections({ foo: "bar" }, { nameOnly: false }))
60+
61+
// -------------------------------------------------------------------------------------
62+
// dropCollection
63+
// -------------------------------------------------------------------------------------
64+
65+
// $ExpectType Effect<boolean, MongoError, never>
66+
DBX.dropCollection(database, "users")
67+
68+
// $ExpectType Effect<boolean, MongoError, never>
69+
F.pipe(database, DBX.dropCollection("users"))

Diff for: packages/effect-mongodb/src/Db.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const collection: {
4242
)
4343

4444
export const listCollections: {
45-
(): (db: Db) => ListCollectionsCursor.ListCollectionsCursor
45+
(db: Db): ListCollectionsCursor.ListCollectionsCursor
4646
(filter: Document): (db: Db) => ListCollectionsCursor.ListCollectionsCursor
4747
(
4848
filter: Document,
@@ -52,7 +52,6 @@ export const listCollections: {
5252
filter: Document,
5353
options: Exclude<ListCollectionsOptions, "nameOnly"> & { nameOnly: false }
5454
): (db: Db) => ListCollectionsCursor.FullListCollectionsCursor
55-
(db: Db): ListCollectionsCursor.ListCollectionsCursor
5655
(db: Db, filter: Document): ListCollectionsCursor.ListCollectionsCursor
5756
(
5857
db: Db,
@@ -71,7 +70,7 @@ export const listCollections: {
7170
)
7271

7372
export const dropCollection: {
74-
(name: string): (db: Db) => Effect.Effect<boolean>
73+
(name: string): (db: Db) => Effect.Effect<boolean, MongoError.MongoError>
7574
(name: string, options: DropCollectionOptions): (db: Db) => Effect.Effect<boolean, MongoError.MongoError>
7675
(db: Db, name: string): Effect.Effect<boolean, MongoError.MongoError>
7776
(db: Db, name: string, options: DropCollectionOptions): Effect.Effect<boolean, MongoError.MongoError>

0 commit comments

Comments
 (0)