1import { NodeFileSystem } from "@effect/platform-node"
2import { SqliteClient } from "@effect/sql-sqlite-node"
3import { Effect, FileSystem, Layer } from "effect"
4import * as KeyValueStoreTest from "effect-test/persistence/KeyValueStoreTest"
5import * as KeyValueStore from "effect/persistence/KeyValueStore"
6import { Reactivity } from "effect/reactivity"
7
8const ClientLayer = Effect.gen(function*() {
9 const fs = yield* FileSystem.FileSystem
10 const dir = yield* fs.makeTempDirectoryScoped()
11 return SqliteClient.layer({
12 filename: dir + "/test.db"
13 })
14}).pipe(
15 Layer.unwrap,
16 Layer.provide([NodeFileSystem.layer, Reactivity.layer])
17)
18
19KeyValueStoreTest.suite(
20 "sql-sqlite",
21 KeyValueStore.layerSql().pipe(Layer.provide(ClientLayer))
22)
23
24KeyValueStoreTest.suite(
25 "sql-sqlite-custom-table",
26 KeyValueStore.layerSql({ table: "effect_key_value_store_custom" }).pipe(
27 Layer.provide(ClientLayer)
28 )
29)