1import * as Alchemy from "alchemy";
2import * as Drizzle from "alchemy/Drizzle";
3import * as GCP from "alchemy/GCP";
4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";
6import Api from "./src/Api.ts";
7import { database } from "./src/database.ts";
8
9export const providers = () =>
10 Layer.mergeAll(
11 GCP.providers(),
12 Drizzle.providers(),
13 Alchemy.RandomProvider(),
14 );
15
16export default Alchemy.Stack(
17 "GcpCloudSqlDrizzleExample",
18 { providers: providers(), state: Alchemy.localState() },
19 Effect.gen(function* () {
20 const { instance, db, user, passwordSecret } = yield* database;
21 const api = yield* Api;
22 return {
23 url: api.uri,
24 serviceName: api.name,
25 instanceName: instance.instanceName,
26 connectionName: instance.connectionName,
27 databaseName: db.databaseName,
28 userName: user.userName,
29 passwordSecretName: passwordSecret.name,
30 };
31 }),
32);