UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

37 lines (36 loc) 1.41 kB
import { Context, Layer, Effect } from "effect"; import { MissingLayerServiceError } from "./errors.js"; const HttpClient = Context.GenericTag("@proofkit/fmodata/HttpClient"); const ODataConfig = Context.GenericTag("@proofkit/fmodata/ODataConfig"); const ODataLogger = Context.GenericTag("@proofkit/fmodata/ODataLogger"); function extractConfigFromLayer(layer) { const effect = Effect.gen(function* () { const config = yield* ODataConfig.pipe( Effect.mapError((error) => new MissingLayerServiceError("ODataConfig", { cause: error })) ); const { logger } = yield* ODataLogger.pipe( Effect.mapError((error) => new MissingLayerServiceError("ODataLogger", { cause: error })) ); return { config, logger }; }); return Effect.runSync(Effect.provide(effect, layer)); } function createDatabaseLayer(baseLayer, overrides) { const { config: baseConfig } = extractConfigFromLayer(baseLayer); const dbConfigLayer = Layer.succeed(ODataConfig, { baseUrl: baseConfig.baseUrl, databaseName: overrides.databaseName, normalizeDatabaseName: overrides.normalizeDatabaseName, useEntityIds: overrides.useEntityIds, includeSpecialColumns: overrides.includeSpecialColumns }); return Layer.merge(baseLayer, dbConfigLayer); } export { HttpClient, ODataConfig, ODataLogger, createDatabaseLayer, extractConfigFromLayer }; //# sourceMappingURL=services.js.map