From e95ab0873b7a4831cdf6e99c37f2c1b80e9b15d2 Mon Sep 17 00:00:00 2001 From: Patrick Roza Date: Tue, 12 Dec 2023 09:13:18 +0100 Subject: [PATCH] cleanup layers --- packages/infra/_src/services/Store/index.ts | 28 ++++++++++----------- packages/vue/_src/runtime.ts | 5 +++- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/infra/_src/services/Store/index.ts b/packages/infra/_src/services/Store/index.ts index ba3fd58c7..f2cbc13f2 100644 --- a/packages/infra/_src/services/Store/index.ts +++ b/packages/infra/_src/services/Store/index.ts @@ -2,10 +2,9 @@ import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client" import * as RedisClient from "@effect-app/infra-adapters/redis-client" import { createClient } from "redis" - import { makeCosmosStore } from "./Cosmos.js" import { makeDiskStore } from "./Disk.js" -import { makeMemoryStore } from "./Memory.js" +import { MemoryStoreLive } from "./Memory.js" import { makeRedisStore } from "./Redis.js" import type { StorageConfig } from "./service.js" import { StoreMaker } from "./service.js" @@ -14,34 +13,33 @@ import { StoreMaker } from "./service.js" * @tsplus static StoreMaker.Ops Live */ export function StoreMakerLive(config: Config) { - return config - .flatMap((cfg) => { + return Effect + .gen(function*($) { + const cfg = yield* $(config) const storageUrl = cfg.url.value if (storageUrl.startsWith("mem://")) { console.log("Using in memory store") - return Effect(makeMemoryStore()) + return MemoryStoreLive } if (storageUrl.startsWith("disk://")) { const dir = storageUrl.replace("disk://", "") console.log("Using disk store at " + dir) return makeDiskStore(cfg, dir) + .toLayer(StoreMaker) } if (storageUrl.startsWith("redis://")) { console.log("Using Redis store") - return RedisClient.makeRedisClient(makeRedis(storageUrl)).flatMap((client) => - makeRedisStore(cfg).provideService( - RedisClient.RedisClient, - client - ) - ) + return makeRedisStore(cfg) + .toLayer(StoreMaker) + .provide(RedisClient.RedisClientLive(makeRedis(storageUrl))) } console.log("Using Cosmos DB store") - return CosmosClient.makeCosmosClient(storageUrl, cfg.dbName).flatMap((client) => - makeCosmosStore(cfg).provideService(CosmosClient.CosmosClient, client) - ) + return makeCosmosStore(cfg) + .toLayer(StoreMaker) + .provide(CosmosClient.CosmosClientLive(storageUrl, cfg.dbName)) }) - .toLayerScoped(StoreMaker) + .unwrapLayer } function makeRedis(storageUrl: string) { diff --git a/packages/vue/_src/runtime.ts b/packages/vue/_src/runtime.ts index ffaf985b8..8873c3a78 100644 --- a/packages/vue/_src/runtime.ts +++ b/packages/vue/_src/runtime.ts @@ -15,7 +15,10 @@ const DefaultApiConfig = Config.all({ }) export function makeApiLayers(config: Config = DefaultApiConfig) { - return HttpClientBrowser.client.layer + ApiConfig.Live(config) + return HttpClientBrowser + .client + .layer + .merge(ApiConfig.Live(config)) } export function makeAppRuntime(layer: Layer) {