@alchemy.run/neon (中文(简体) )
神经元 炼金术。宣布 Postgres 工程和分支,函数,对象存储, Auth, 以及使用其代码的同一类型脚本程序中的网站.
npm install alchemy @alchemy.run/neon @alchemy.run/sql effect
Neon 函数在自己的分支,在部署时适用迁移:
// src/api.ts
import * as Neon from "@alchemy.run/neon";
import * as SQL from "@alchemy.run/sql/Postgres";
import * as Effect from "effect/Effect";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
export const Branch = Effect.gen(function* () {
const project = yield* Neon.Project("Project", { region: "aws-us-east-2" });
return yield* Neon.Branch("Main", { project, migrations: "./migrations" });
});
export default class Api extends Neon.Function<Api>()(
"Api",
Effect.gen(function* () {
return { branch: yield* Branch, main: import.meta.url };
}),
Effect.gen(function* () {
const db = yield* Neon.Connect(yield* Branch);
const sql = yield* SQL.Postgres({ url: db.connectionString });
return {
fetch: Effect.gen(function* () {
const notes = yield* sql`SELECT * FROM notes`;
return yield* HttpServerResponse.json(notes);
}).pipe(Effect.orDie),
};
}).pipe(Effect.provide(Neon.ConnectHttp)),
) {}
堆栈部署它:
// alchemy.run.ts
import * as Alchemy from "alchemy";
import * as Neon from "@alchemy.run/neon";
import * as Effect from "effect/Effect";
import Api from "./src/api.ts";
export default Alchemy.Stack(
"MyApp",
{
providers: Neon.providers(),
state: Alchemy.localState(),
},
Effect.gen(function* () {
const api = yield* Api;
return { url: api.url };
}),
);