diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index 7811887..1b9e40b 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -2,14 +2,21 @@ title: goway description: A version-based database schema migration library for Go, modeled on Flyway, for PostgreSQL and SQLite. template: splash +# The landing page omits the "Edit page" link and the prev/next pagination footer. +editUrl: false +prev: false +next: false hero: - tagline: A version-based database schema migration library for Go, modeled on Flyway. Discover SQL migrations, record them in a schema history table, and bring PostgreSQL or SQLite up to date — with a zero-dependency core. + title: Database Migrations for Go + tagline: A version-based database schema migration library for Go, modeled on Flyway, for PostgreSQL and SQLite. image: file: ../../assets/sql-file.png + alt: goway actions: - text: Get Started link: /goway/getting-started/ icon: right-arrow + variant: primary - text: View on GitHub link: https://github.com/cgardev/goway icon: external @@ -18,67 +25,31 @@ hero: import { Card, CardGrid } from '@astrojs/starlight/components'; -## Why goway? - -goway brings Flyway's proven migration model to Go: immutable, ordered, -checksummed SQL migrations recorded in a schema history table. It runs inside -your own application using the connection pool you already own, so there is no -external binary to install and no heavyweight framework to adopt. +## Why goway - - The library depends only on the standard library. Database access goes + + The core library uses only the Go standard library; database access goes through `database/sql`, so you bring your own driver. - + First-class support for both, with SQLite handled by the pure-Go - `modernc.org/sqlite` driver — no cgo required. + `modernc.org/sqlite` driver, so no cgo is required. - + The same `V`/`R` naming, the same CRC32 checksums, and the same `flyway_schema_history` table, so existing migration sets just work. Read migrations from the file system or embed them into your binary with - `go:embed`. Run migrate at startup, in tests, or from the CLI. + `go:embed`, and run migrate at startup, in tests, or from the CLI. - - -## Installation - -```sh -go get github.com/cgardev/goway -``` - -## A Quick Taste - -```go -migrator, err := goway.Configure(). - DataSource(database). - Locations("filesystem:db/migration"). - Schemas("public"). - Load() -if err != nil { - log.Fatal(err) -} - -result, err := migrator.Migrate(context.Background()) -// applied N migration(s); schema is now at version X -``` - -[Get Started →](/goway/getting-started/) - -## What's Next? - - - - Learn the core concepts step-by-step, from writing your first migration to - callbacks and dialects. + + `migrate`, `info`, `validate`, `baseline`, `repair`, and `clean` cover the + complete migration workflow. - - Detailed documentation for every part of the API, from the configuration - builder to the schema history table. + + Run SQL or Go callbacks around migrations, and mark scripts to run outside + a transaction when a statement requires it. - -[Browse the Guides →](/goway/guides/writing-migrations/)