Skip to content

Database

The Database resource lets you create and manage PlanetScale databases with comprehensive configuration options for scaling, migrations, and security.

Minimal Example

Create a basic database with default settings:

ts
import { Database } from "alchemy/planetscale";

const database = await Database("my-app-db", {
  name: "my-app-db",
  organizationId: "my-org",
  clusterSize: "PS_10"
});

Database with Regional Configuration

Create a database in a specific region with custom settings:

ts
import { Database } from "alchemy/planetscale";

const database = await Database("eu-app-db", {
  name: "eu-app-db",
  organizationId: "my-org",
  region: {
    slug: "eu-west"
  },
  clusterSize: "PS_20",
  allowDataBranching: true,
  automaticMigrations: true,
  requireApprovalForDeploy: true
});

Production Database with Advanced Features

Create a production database with comprehensive configuration:

ts
import { Database } from "alchemy/planetscale";

const prodDatabase = await Database("production-db", {
  name: "production-db",
  organizationId: "my-org",
  region: {
    slug: "us-east"
  },
  clusterSize: "PS_40",
  defaultBranch: "production",
  allowDataBranching: true,
  automaticMigrations: false,
  requireApprovalForDeploy: true,
  restrictBranchRegion: true,
  insightsRawQueries: true,
  productionBranchWebConsole: false,
  migrationFramework: "rails",
  migrationTableName: "schema_migrations"
});

Database with Custom API Key

Create a database using a specific API key:

ts
import { Database } from "alchemy/planetscale";

const database = await Database("custom-auth-db", {
  name: "custom-auth-db",
  organizationId: "my-org",
  clusterSize: "PS_10",
  apiKey: alchemy.secret(process.env.CUSTOM_PLANETSCALE_TOKEN)
});

Adopting Existing Database

Adopt an existing PlanetScale database for management:

ts
import { Database } from "alchemy/planetscale";

const existingDatabase = await Database("existing-db", {
  name: "existing-db",
  organizationId: "my-org",
  clusterSize: "PS_20",
  adopt: true,
  allowDataBranching: false,
  automaticMigrations: true
});