@proofkit/fmodata
Version:
FileMaker OData API client
37 lines (36 loc) • 1.41 kB
JavaScript
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