@alchemy.run/铁路
铁路 炼金术。运行效果程序作为铁路服务,在Postgres, MySQL, Redis, Mongo, 卷和桶的旁边, 都用一个类型脚本程序.
npm install alchemy @alchemy.run/railway @alchemy.run/sql effect
与Postgres公司和一家服务公司共同调查的项目:
// src/api.ts
import * as Railway from "@alchemy.run/railway";
import * as SQL from "@alchemy.run/sql/Postgres";
import * as Effect from "effect/Effect";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
export const Site = Railway.Project("Site");
export const Db = Railway.Postgres("Db", { project: Site });
export default class Api extends Railway.Service<Api>()(
"Api",
{ project: Site, main: import.meta.url, port: 3000 },
Effect.gen(function* () {
const db = yield* Railway.ConnectPostgres(Db);
const sql = yield* SQL.Postgres({ url: db.connectionString });
return {
fetch: Effect.gen(function* () {
const users = yield* sql`SELECT * FROM users`;
return yield* HttpServerResponse.json(users);
}).pipe(Effect.orDie),
};
}).pipe(Effect.provide(Railway.ConnectPostgresHttp)),
) {}
// alchemy.run.ts
import * as Alchemy from "alchemy";
import * as Railway from "@alchemy.run/railway";
import * as Effect from "effect/Effect";
import Api from "./src/api.ts";
export default Alchemy.Stack(
"MyApp",
{
providers: Railway.providers(),
state: Alchemy.localState(),
},
Effect.gen(function* () {
const api = yield* Api;
return { url: api.url };
}),
);