const makeSqsClient = Effect.gen(function* () {
const awsAccessKeyId = yield* Config.string("AWS_ACCESS_KEY_ID").pipe(
Config.withDescription("AWS Access Key ID"),
);
const awsSecretAccessKey = yield* Config.string("AWS_SECRET_ACCESS_KEY").pipe(
Config.withDescription("AWS Secret"),
);
const awsRegion = yield* Config.string("AWS_REGION").pipe(
Config.withDescription("AWS Region"),
Config.withDefault("eu-west-1"), // paris
);
const client = new SQSClient({
region: awsRegion,
credentials: {
accessKeyId: awsAccessKeyId,
secretAccessKey: awsSecretAccessKey,
},
});
return client;
});
export class SqsClient extends Context.Tag("SqsClient")<
SqsClient,
Effect.Effect.Success<typeof makeSqsClient>
>() {
static Live = Layer.effect(this, makeSqsClient);
}
const makeSqsClient = Effect.gen(function* () {
const awsAccessKeyId = yield* Config.string("AWS_ACCESS_KEY_ID").pipe(
Config.withDescription("AWS Access Key ID"),
);
const awsSecretAccessKey = yield* Config.string("AWS_SECRET_ACCESS_KEY").pipe(
Config.withDescription("AWS Secret"),
);
const awsRegion = yield* Config.string("AWS_REGION").pipe(
Config.withDescription("AWS Region"),
Config.withDefault("eu-west-1"), // paris
);
const client = new SQSClient({
region: awsRegion,
credentials: {
accessKeyId: awsAccessKeyId,
secretAccessKey: awsSecretAccessKey,
},
});
return client;
});
export class SqsClient extends Context.Tag("SqsClient")<
SqsClient,
Effect.Effect.Success<typeof makeSqsClient>
>() {
static Live = Layer.effect(this, makeSqsClient);
}