import { Resource } from "../../Resource.ts"; import { type BaseBranchAttributes, type BaseBranchProps } from "../Branch.ts"; import type { Providers } from "../Providers.ts"; import type { PostgresClusterSize } from "./PostgresClusterSize.ts"; import type { PostgresDatabase } from "./PostgresDatabase.ts"; /** * Properties for creating or updating a {@link PostgresBranch}. */ export interface PostgresBranchProps extends BaseBranchProps { /** * The Postgres database. Either a string database name or a * {@link PostgresDatabase} resource. */ database: string | PostgresDatabase; /** * PostgreSQL cluster size for the branch. Required if `backupId` is provided. * Short sizes are expanded using the target branch region. */ clusterSize?: PostgresClusterSize; /** * Total number of replicas for the branch. `0` creates or converges the * branch to non-HA/single-node; `2+` enables HA. */ replicas?: number; /** * Parent branch — either a string name or another {@link PostgresBranch}. * @default "main" */ parentBranch?: string | PostgresBranch; } /** * Output attributes of a deployed {@link PostgresBranch}. */ export interface PostgresBranchAttributes extends BaseBranchAttributes { } /** * A PlanetScale branch of a {@link PostgresDatabase}. For MySQL branches * use {@link MySQLBranch} instead. * * ### Creating a Branch * **Example:** Branch from main * ```typescript * const branch = yield* Planetscale.PostgresBranch("Feature123", { * database: "my-db", * parentBranch: "main", * }); * ``` * * **Example:** Branch from a PostgresDatabase resource * ```typescript * const db = yield* Planetscale.PostgresDatabase("MyDb", { clusterSize: "PS_10" }); * const branch = yield* Planetscale.PostgresBranch("Feature456", { * database: db, * parentBranch: "main", * }); * ``` * * ### Migrations and seed data * **Example:** Apply migrations on a branch * ```typescript * const branch = yield* Planetscale.PostgresBranch("Feature123", { * database: db, * parentBranch: "main", * migrationsDir: "./migrations", * importFiles: ["./seed.sql"], * }); * ``` */ export type PostgresBranch = Resource<"Planetscale.PostgresBranch", PostgresBranchProps, PostgresBranchAttributes, never, Providers>; /** @resource */ export declare const PostgresBranch: import("../../Resource.ts").ResourceClass; export declare const PostgresBranchProvider: () => import("effect/Layer").Layer, never, never>; //# sourceMappingURL=PostgresBranch.d.ts.map