| 1 | import { NodeFileSystem } from "@effect/platform-node" |
| 2 | import { SqliteClient } from "@effect/sql-sqlite-node" |
| 3 | import { Effect, FileSystem, Layer } from "effect" |
| 4 | import * as KeyValueStoreTest from "effect-test/persistence/KeyValueStoreTest" |
| 5 | import * as KeyValueStore from "effect/persistence/KeyValueStore" |
| 6 | import { Reactivity } from "effect/reactivity" |
| 7 | |
| 8 | const 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 | |
| 19 | KeyValueStoreTest.suite( |
| 20 | "sql-sqlite", |
| 21 | KeyValueStore.layerSql().pipe(Layer.provide(ClientLayer)) |
| 22 | ) |
| 23 | |
| 24 | KeyValueStoreTest.suite( |
| 25 | "sql-sqlite-custom-table", |
| 26 | KeyValueStore.layerSql({ table: "effect_key_value_store_custom" }).pipe( |
| 27 | Layer.provide(ClientLayer) |
| 28 | ) |
| 29 | ) |