From b5e967dfdab7d1eeab3d52a99030c5c1b7202da0 Mon Sep 17 00:00:00 2001 From: Christopher Date: Thu, 30 Jul 2026 16:14:41 +0200 Subject: [PATCH 1/6] docs: uv-first onboarding and a lighter landing page The prerequisites now offer sqlc-bin (recommended) and the official sqlc installation as equal tabs, driver installs default to uv with a one-line pip fallback note, and the landing page's setup section is three short steps instead of a full sqlc.yaml listing. --- README.md | 4 +- docs/content/_index.md | 33 ++++------------- docs/content/docs/getting-started.md | 55 ++++++++++++++++++++-------- 3 files changed, 49 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 635d9381..a6341b18 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ aliases and generics, and `enum.StrEnum`). > Besides the [official installation methods](https://docs.sqlc.dev/en/latest/overview/install.html), > the `sqlc` CLI itself is also pip-installable via > [`sqlc-bin`](https://pypi.org/project/sqlc-bin/), which ships the unmodified -> official binaries - no Go toolchain required: `pip install sqlc-bin` (or -> `uv add --dev sqlc-bin`) puts `sqlc` on your PATH, pinnable like any other +> official binaries - no Go toolchain required: `uv add --dev sqlc-bin` (or +> `pip install sqlc-bin`) puts `sqlc` on your PATH, pinnable like any other > Python dependency. ## Documentation diff --git a/docs/content/_index.md b/docs/content/_index.md index 308533f1..890c50df 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -1,5 +1,7 @@ --- title: sqlc-gen-better-python +description: >- + A sqlc plugin that generates type-safe Python from SQL: dataclass, attrs, msgspec, or pydantic models plus fully typed query functions for asyncpg, psycopg, sqlite3, aiosqlite, and turso. layout: hextra-home --- @@ -183,32 +185,11 @@ Generated code is held to the same standard as hand-written code: Set up in three steps {{< /hextra/hero-section >}} -Point `sqlc` at the plugin, pick a driver and a model type, and generate: - -```yaml -# sqlc.yaml -version: "2" -plugins: - - name: python - wasm: - url: https://github.com/rayakame/sqlc-gen-better-python/releases/download/v0.7.0/sqlc-gen-better-python.wasm - sha256: 64ac923cf5f14ebc05bdeb2d1827f14d89a6f3b7180ac08964ef44ff065af5f9 -sql: - - engine: "postgresql" - queries: "query.sql" - schema: "schema.sql" - codegen: - - out: "app/db" - plugin: python - options: - package: "db" - emit_init_file: true - sql_driver: "asyncpg" -``` - -```bash -sqlc generate -``` +1. **Install** the `sqlc` CLI (`uv add --dev sqlc-bin`) and your database driver. +2. **Configure** a `sqlc.yaml` pointing at the plugin's release wasm, your + schema, and your queries. +3. **Generate** - `sqlc generate` writes typed models and one query module per + query file.
diff --git a/docs/content/docs/getting-started.md b/docs/content/docs/getting-started.md index 99e294e0..8dd737a8 100644 --- a/docs/content/docs/getting-started.md +++ b/docs/content/docs/getting-started.md @@ -1,5 +1,7 @@ --- title: Getting Started +description: >- + Install sqlc and a database driver, configure sqlc.yaml, and generate your first typed Python queries - step-by-step setup for every supported driver. weight: 1 prev: /docs next: /docs/guide @@ -12,26 +14,47 @@ below and the whole page follows your choice. ## Prerequisites -You need [`sqlc`](https://docs.sqlc.dev/en/latest/overview/install.html) on your -`PATH` and **Python 3.12 or newer** (the generated code uses PEP 695 type aliases -and generics, and `enum.StrEnum`). +You need **Python 3.12 or newer** (the generated code uses PEP 695 type aliases +and generics, and `enum.StrEnum`) and the `sqlc` CLI on your `PATH` - pick +either way to install it: -{{< callout type="info" >}} - Besides the official installation methods, sqlc is also pip-installable via - [sqlc-bin](https://pypi.org/project/sqlc-bin/), which ships the unmodified - official binaries - no Go toolchain required. `uv add --dev sqlc-bin` (or - `pip install sqlc-bin`) puts `sqlc` on your PATH, and the package version - tracks the sqlc version, so you can pin it like any other dependency. -{{< /callout >}} +{{< tabs >}} + + {{< tab name="sqlc-bin (recommended)" >}} + +[sqlc-bin](https://pypi.org/project/sqlc-bin/) ships the unmodified official +`sqlc` binaries as a Python package - no Go toolchain needed, pinnable like +any other dependency: + +```bash +uv add --dev sqlc-bin +``` + + {{< /tab >}} -Then install the database driver you want to use: + {{< tab name="official installation" >}} + +Any of the [official methods](https://docs.sqlc.dev/en/latest/overview/install.html) +works just as well: + +```bash +brew install sqlc +# or +go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest +``` + + {{< /tab >}} + +{{< /tabs >}} + +Then add the database driver you want to use: {{< tabs >}} {{< tab name="asyncpg" >}} ```bash -pip install asyncpg asyncpg-stubs +uv add asyncpg asyncpg-stubs ``` asyncpg has no strict typing of its own; [asyncpg-stubs](https://pypi.org/project/asyncpg-stubs/) @@ -42,7 +65,7 @@ makes the generated annotations work under pyright and mypy. {{< tab name="psycopg_async" >}} ```bash -pip install "psycopg[binary]>=3.2" +uv add "psycopg[binary]>=3.2" ``` {{< /tab >}} @@ -50,7 +73,7 @@ pip install "psycopg[binary]>=3.2" {{< tab name="psycopg_sync" >}} ```bash -pip install "psycopg[binary]>=3.2" +uv add "psycopg[binary]>=3.2" ``` {{< /tab >}} @@ -58,7 +81,7 @@ pip install "psycopg[binary]>=3.2" {{< tab name="aiosqlite" >}} ```bash -pip install aiosqlite +uv add aiosqlite ``` {{< /tab >}} @@ -73,6 +96,8 @@ Nothing to install - sqlite3 is in the standard library. {{< /tabs >}} +Using pip instead of uv? Swap `uv add` for `pip install` in any command above. + ## 1. Configure the plugin The plugin is a WASM binary that `sqlc generate` downloads and runs. Create a From 7f3545331ec95ca9e25843607fc9998697410cd7 Mon Sep 17 00:00:00 2001 From: Christopher Date: Thu, 30 Jul 2026 16:14:41 +0200 Subject: [PATCH 2/6] docs: SEO groundwork for the docs site - add a unique meta description to every page; they flow into the meta, Open Graph, Twitter, and schema.org tags - override hextra's opengraph partial: the theme emits og:description and og:type as multi-line attributes, which hugo --minify truncates to empty values on the published site - add a 1200x630 social preview card (og:image, twitter:card summary_large_image) and og:site_name via params.title - enable hextra's llms.txt and per-page raw-Markdown outputs - stop publishing empty /tags/ and /categories/ taxonomy pages --- docs/assets/og-image.svg | 20 +++++ docs/content/docs/_index.md | 2 + docs/content/docs/guide/_index.md | 2 + docs/content/docs/guide/configuration.md | 2 + docs/content/docs/guide/converters.md | 2 + docs/content/docs/guide/docstrings.md | 2 + docs/content/docs/guide/drivers.md | 4 +- docs/content/docs/guide/enums.md | 2 + docs/content/docs/guide/model-types.md | 2 + docs/content/docs/guide/naming.md | 2 + .../docs/guide/sqlite-type-conversion.md | 2 + docs/content/docs/guide/type-overrides.md | 2 + docs/content/docs/guide/working-with-json.md | 2 + docs/content/docs/guide/writing-queries.md | 2 + docs/content/docs/reference/_index.md | 2 + .../docs/reference/configuration-options.md | 2 + .../content/docs/reference/feature-support.md | 2 + docs/content/docs/reference/type-mappings.md | 2 + docs/hugo.yaml | 25 ++++++ docs/layouts/_partials/opengraph.html | 83 ++++++++++++++++++ docs/static/images/og-image.png | Bin 0 -> 84053 bytes 21 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 docs/assets/og-image.svg create mode 100644 docs/layouts/_partials/opengraph.html create mode 100644 docs/static/images/og-image.png diff --git a/docs/assets/og-image.svg b/docs/assets/og-image.svg new file mode 100644 index 00000000..acdc73de --- /dev/null +++ b/docs/assets/og-image.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + -- name: GetUser :one + SELECT * FROM users WHERE id = $1; + + Type-safe Python + from your SQL + + sqlc-gen-better-python + + A sqlc plugin - typed models and query functions for PostgreSQL and SQLite + diff --git a/docs/content/docs/_index.md b/docs/content/docs/_index.md index e3c6c168..a2cad54e 100644 --- a/docs/content/docs/_index.md +++ b/docs/content/docs/_index.md @@ -1,5 +1,7 @@ --- title: Documentation +description: >- + Documentation for sqlc-gen-better-python, the sqlc plugin that turns your SQL schema and queries into modern, fully typed Python database code. weight: 1 prev: / next: getting-started diff --git a/docs/content/docs/guide/_index.md b/docs/content/docs/guide/_index.md index fd069b50..12ad2f23 100644 --- a/docs/content/docs/guide/_index.md +++ b/docs/content/docs/guide/_index.md @@ -1,5 +1,7 @@ --- title: Guide +description: >- + Feature guides for sqlc-gen-better-python: drivers, model types, writing queries, enums, type overrides, converters, JSON, docstrings, and naming. weight: 2 prev: /docs/getting-started next: /docs/guide/configuration diff --git a/docs/content/docs/guide/configuration.md b/docs/content/docs/guide/configuration.md index 60a039ed..d1fca9a8 100644 --- a/docs/content/docs/guide/configuration.md +++ b/docs/content/docs/guide/configuration.md @@ -1,5 +1,7 @@ --- title: Configuration +description: >- + How the plugin is wired into sqlc.yaml and how its options are structured, with a full annotated example configuration. weight: 10 prev: /docs/guide next: /docs/guide/drivers diff --git a/docs/content/docs/guide/converters.md b/docs/content/docs/guide/converters.md index 6bba2cee..1518dd83 100644 --- a/docs/content/docs/guide/converters.md +++ b/docs/content/docs/guide/converters.md @@ -1,5 +1,7 @@ --- title: Converters +description: >- + Plug your own encode/decode functions into the generated code to map columns onto custom Python types that a plain override cannot express. weight: 70 prev: /docs/guide/type-overrides next: /docs/guide/working-with-json diff --git a/docs/content/docs/guide/docstrings.md b/docs/content/docs/guide/docstrings.md index 21fff0c1..5c2ef3a1 100644 --- a/docs/content/docs/guide/docstrings.md +++ b/docs/content/docs/guide/docstrings.md @@ -1,5 +1,7 @@ --- title: Docstrings +description: >- + Emit google, numpy, or pep257 docstrings on every generated model, enum, and query function. weight: 80 prev: /docs/guide/working-with-json next: /docs/guide/sqlite-type-conversion diff --git a/docs/content/docs/guide/drivers.md b/docs/content/docs/guide/drivers.md index 61fee8a8..149c3cf8 100644 --- a/docs/content/docs/guide/drivers.md +++ b/docs/content/docs/guide/drivers.md @@ -1,5 +1,7 @@ --- title: Drivers +description: >- + Pick between asyncpg, psycopg_async, psycopg_sync, aiosqlite, sqlite3, and the experimental turso drivers - connection examples and per-driver behavior. weight: 20 prev: /docs/guide/configuration next: /docs/guide/model-types @@ -152,7 +154,7 @@ user = queries.get_field_naming(conn, id_=1) [Turso](https://github.com/tursodatabase/turso) is an SQLite-compatible database engine; its [pyturso](https://pypi.org/project/pyturso/) package -(`pip install pyturso`) mirrors the `sqlite3` module's API and adds a native +(`uv add pyturso`) mirrors the `sqlite3` module's API and adds a native asyncio variant. - `turso_sync` targets the `turso` module, `turso_async` the `turso.aio` module. diff --git a/docs/content/docs/guide/enums.md b/docs/content/docs/guide/enums.md index 29aa101e..5bc7693c 100644 --- a/docs/content/docs/guide/enums.md +++ b/docs/content/docs/guide/enums.md @@ -1,5 +1,7 @@ --- title: Enums +description: >- + PostgreSQL enum types become Python enum.StrEnum classes, wired through the generated models and query parameters. weight: 50 prev: /docs/guide/writing-queries next: /docs/guide/type-overrides diff --git a/docs/content/docs/guide/model-types.md b/docs/content/docs/guide/model-types.md index 0d5b14a1..efee4112 100644 --- a/docs/content/docs/guide/model-types.md +++ b/docs/content/docs/guide/model-types.md @@ -1,5 +1,7 @@ --- title: Model types +description: >- + Generate dataclass, attrs, msgspec, or pydantic models from your SQL schema - what each model type looks like and how to choose one. weight: 30 prev: /docs/guide/drivers next: /docs/guide/writing-queries diff --git a/docs/content/docs/guide/naming.md b/docs/content/docs/guide/naming.md index b2d579cb..d2b1d9cb 100644 --- a/docs/content/docs/guide/naming.md +++ b/docs/content/docs/guide/naming.md @@ -1,5 +1,7 @@ --- title: Naming and identifiers +description: >- + How SQL identifiers become Python names: singularized model classes, field naming, initialisms, and reserved-word escaping. weight: 100 prev: /docs/guide/sqlite-type-conversion --- diff --git a/docs/content/docs/guide/sqlite-type-conversion.md b/docs/content/docs/guide/sqlite-type-conversion.md index f06262ce..1ba5ef14 100644 --- a/docs/content/docs/guide/sqlite-type-conversion.md +++ b/docs/content/docs/guide/sqlite-type-conversion.md @@ -1,5 +1,7 @@ --- title: SQLite type conversion +description: >- + How the SQLite drivers convert dates, decimals, booleans, and blobs: adapters, converters, PARSE_DECLTYPES, speedups, and how turso differs. weight: 90 prev: /docs/guide/docstrings next: /docs/guide/naming diff --git a/docs/content/docs/guide/type-overrides.md b/docs/content/docs/guide/type-overrides.md index 29d6da27..1627e5cf 100644 --- a/docs/content/docs/guide/type-overrides.md +++ b/docs/content/docs/guide/type-overrides.md @@ -1,5 +1,7 @@ --- title: Type overrides +description: >- + Replace the Python type of a specific column or of every column of a SQL type, including nullable handling and custom imports. weight: 60 prev: /docs/guide/enums next: /docs/guide/converters diff --git a/docs/content/docs/guide/working-with-json.md b/docs/content/docs/guide/working-with-json.md index f02f621f..70577d10 100644 --- a/docs/content/docs/guide/working-with-json.md +++ b/docs/content/docs/guide/working-with-json.md @@ -1,5 +1,7 @@ --- title: Working with JSON +description: >- + Turn untyped json/jsonb string columns into fully typed, validated Python objects with converters and msgspec structs. weight: 75 prev: /docs/guide/converters next: /docs/guide/docstrings diff --git a/docs/content/docs/guide/writing-queries.md b/docs/content/docs/guide/writing-queries.md index de39cf50..55aadbc7 100644 --- a/docs/content/docs/guide/writing-queries.md +++ b/docs/content/docs/guide/writing-queries.md @@ -1,5 +1,7 @@ --- title: Writing queries +description: >- + How sqlc query annotations become typed Python functions: :one, :many, :exec, :execrows, :execlastid, :execresult, and :copyfrom, shown with generated code. weight: 40 prev: /docs/guide/model-types next: /docs/guide/enums diff --git a/docs/content/docs/reference/_index.md b/docs/content/docs/reference/_index.md index 9c91167a..244b6432 100644 --- a/docs/content/docs/reference/_index.md +++ b/docs/content/docs/reference/_index.md @@ -1,5 +1,7 @@ --- title: Reference +description: >- + Canonical reference for sqlc-gen-better-python: every configuration option, SQL-to-Python type mappings, and per-driver feature support. weight: 3 prev: /docs/guide sidebar: diff --git a/docs/content/docs/reference/configuration-options.md b/docs/content/docs/reference/configuration-options.md index 548c13c2..d51d2f15 100644 --- a/docs/content/docs/reference/configuration-options.md +++ b/docs/content/docs/reference/configuration-options.md @@ -1,5 +1,7 @@ --- title: Configuration options +description: >- + Every plugin option in one place: its type, default, and meaning, from sql_driver and model_type to overrides and speedups. weight: 10 prev: /docs/reference next: /docs/reference/type-mappings diff --git a/docs/content/docs/reference/feature-support.md b/docs/content/docs/reference/feature-support.md index 064fa802..206b2f75 100644 --- a/docs/content/docs/reference/feature-support.md +++ b/docs/content/docs/reference/feature-support.md @@ -1,5 +1,7 @@ --- title: Feature support +description: >- + Which sqlc macros, query commands, and features each driver supports - the full compatibility matrix. weight: 30 prev: /docs/reference/type-mappings --- diff --git a/docs/content/docs/reference/type-mappings.md b/docs/content/docs/reference/type-mappings.md index 187f05e7..c90e042b 100644 --- a/docs/content/docs/reference/type-mappings.md +++ b/docs/content/docs/reference/type-mappings.md @@ -1,5 +1,7 @@ --- title: Type mappings +description: >- + The built-in SQL-to-Python type mappings for PostgreSQL and SQLite, and what nullable columns and arrays map to. weight: 20 prev: /docs/reference/configuration-options next: /docs/reference/feature-support diff --git a/docs/hugo.yaml b/docs/hugo.yaml index c95ef1cf..ceace6e7 100644 --- a/docs/hugo.yaml +++ b/docs/hugo.yaml @@ -4,6 +4,26 @@ enableRobotsTXT: true enableGitInfo: true hasCJKLanguage: false +# The docs use no tags/categories; without this Hugo publishes empty +# /tags/ and /categories/ pages that end up in the sitemap as thin content. +disableKinds: + - taxonomy + - term + +# llms.txt at the site root plus a raw-Markdown render of every page +# (index.md next to each index.html) for AI tooling; both ship with hextra. +outputs: + home: + - html + - llms + page: + - html + - markdown + section: + - html + - rss + - markdown + module: imports: - path: github.com/imfing/hextra @@ -31,7 +51,12 @@ menu: icon: github params: + # params.title feeds og:site_name (the root-level title does not). + title: sqlc-gen-better-python description: A sqlc plugin that generates modern, type-safe Python database code from SQL. + # Social preview card (og:image / twitter:card); source: assets/og-image.svg. + images: + - images/og-image.png navbar: displayTitle: true displayLogo: false diff --git a/docs/layouts/_partials/opengraph.html b/docs/layouts/_partials/opengraph.html new file mode 100644 index 00000000..07914ede --- /dev/null +++ b/docs/layouts/_partials/opengraph.html @@ -0,0 +1,83 @@ +{{/* Copied from hextra's layouts/_partials/opengraph.html. Local override: +the theme emits og:description and og:type as multi-line attribute values, +which `hugo --minify` truncates at the first newline, publishing empty tags. +Keep these two on a single line; the rest matches the theme. */}} + + + + + + +{{- with $.Params.images -}} + {{- range first 6 . }} + {{- with $.Resources.GetMatch . }} + + + {{- else }} + + {{- $image := . -}} + {{- if hasPrefix $image "/" -}} + {{- $image = relURL (strings.TrimPrefix "/" $image) -}} + {{- end -}} + + {{- end }} + {{- end }} +{{- else -}} + {{- with $.Site.Params.images }} + {{- $image := index . 0 -}} + {{- if hasPrefix $image "/" -}} + {{- $image = relURL (strings.TrimPrefix "/" $image) -}} + {{- end -}} + + {{- end }} +{{- end -}} + + +{{- if .IsPage }} +{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} + +{{ with .PublishDate }} + +{{ end }} +{{ with .Lastmod }} + +{{ end }} +{{- end -}} + +{{- with .Params.audio }}{{ end }} +{{- with .Params.locale }} + +{{ end }} +{{- with .Site.Params.title }} + +{{ end }} +{{- with .Params.videos }} +{{- range . }} + +{{ end }} + +{{ end }} + +{{- /* If it is part of a series, link to related articles */}} +{{- $permalink := .Permalink }} +{{- $siteSeries := .Site.Taxonomies.series }} +{{ with .Params.series }} +{{- range $name := . }} +{{- $series := index $siteSeries ($name | urlize) }} +{{- range $page := first 6 $series.Pages }} +{{- if ne $page.Permalink $permalink }} + +{{ end }} +{{- end }} +{{ end }} + +{{ end }} + +{{- /* Facebook Page Admin ID for Domain Insights */}} +{{- with site.Params.social.facebook_admin }} + +{{ end }} diff --git a/docs/static/images/og-image.png b/docs/static/images/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..93a98c4fd37e6271b009564b72dec531f99538d8 GIT binary patch literal 84053 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 p6fzo&sT$&RAketAm+edCu-c6+kGA(!JKB+ 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 Date: Thu, 30 Jul 2026 16:16:22 +0200 Subject: [PATCH 3/6] chore: add the changelog fragment --- .changes/unreleased/Fixed-20260730-160500.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/unreleased/Fixed-20260730-160500.yaml diff --git a/.changes/unreleased/Fixed-20260730-160500.yaml b/.changes/unreleased/Fixed-20260730-160500.yaml new file mode 100644 index 00000000..a2b37d5a --- /dev/null +++ b/.changes/unreleased/Fixed-20260730-160500.yaml @@ -0,0 +1,6 @@ +kind: Fixed +body: 'Docs: the published site emitted empty `og:description` and `og:type` tags because `hugo --minify` truncates the theme''s multi-line attribute values. Every page now also carries a proper meta description and a social preview image, the site serves `llms.txt`, and the install instructions default to uv with sqlc-bin as the recommended way to install sqlc.' +time: 2026-07-30T16:05:00.0000000Z +custom: + Author: Rayakame + PR: "233" From ee5f82a211b198a700aaed4ba6bdf4a2c7a59542 Mon Sep 17 00:00:00 2001 From: Christopher Date: Thu, 30 Jul 2026 16:16:58 +0200 Subject: [PATCH 4/6] chore: drop the changelog fragment, docs-only PR --- .changes/unreleased/Fixed-20260730-160500.yaml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .changes/unreleased/Fixed-20260730-160500.yaml diff --git a/.changes/unreleased/Fixed-20260730-160500.yaml b/.changes/unreleased/Fixed-20260730-160500.yaml deleted file mode 100644 index a2b37d5a..00000000 --- a/.changes/unreleased/Fixed-20260730-160500.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: Fixed -body: 'Docs: the published site emitted empty `og:description` and `og:type` tags because `hugo --minify` truncates the theme''s multi-line attribute values. Every page now also carries a proper meta description and a social preview image, the site serves `llms.txt`, and the install instructions default to uv with sqlc-bin as the recommended way to install sqlc.' -time: 2026-07-30T16:05:00.0000000Z -custom: - Author: Rayakame - PR: "233" From f2ba02078c3dead106c8e7f84860f4fe5094a48c Mon Sep 17 00:00:00 2001 From: Christopher Date: Thu, 30 Jul 2026 17:27:58 +0200 Subject: [PATCH 5/6] fix: disable Jekyll on the published site The new raw-Markdown outputs gave GitHub Pages' Jekyll pass .md files to render, and its output at the extensionless /docs/getting-started URL shadowed the redirect to the real page. With .nojekyll in the publish root, Pages serves the Hugo output as-is and extensionless directory URLs redirect to their trailing-slash form again. --- docs/static/.nojekyll | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/static/.nojekyll diff --git a/docs/static/.nojekyll b/docs/static/.nojekyll new file mode 100644 index 00000000..e69de29b From 8cf3a1482a4dc335457d8d69afeb308f56709f5e Mon Sep 17 00:00:00 2001 From: Christopher Date: Fri, 31 Jul 2026 00:52:01 +0200 Subject: [PATCH 6/6] feat: move the docs site to sqlc-gen-better-python.rayakame.dev The CNAME ships from static/ so the cleaning deploy never unsets the custom domain. With the site now at an origin root, robots.txt is actually read by crawlers, so it advertises the sitemap. baseURL, the PR-preview baseURL, and every README link move to the new domain. --- .github/workflows/docs.yml | 2 +- README.md | 28 ++++++++++++++-------------- docs/hugo.yaml | 2 +- docs/layouts/robots.txt | 2 ++ docs/static/CNAME | 1 + 5 files changed, 19 insertions(+), 16 deletions(-) create mode 100644 docs/layouts/robots.txt create mode 100644 docs/static/CNAME diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 175d8a5f..75e7dc4d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -111,7 +111,7 @@ jobs: env: HUGO_ENVIRONMENT: production PR_NUMBER: ${{ github.event.number }} - run: hugo --minify --gc --baseURL "https://rayakame.github.io/sqlc-gen-better-python/pr-preview/pr-${PR_NUMBER}/" + run: hugo --minify --gc --baseURL "https://sqlc-gen-better-python.rayakame.dev/pr-preview/pr-${PR_NUMBER}/" - name: Deploy preview uses: rossjrw/pr-preview-action@ffa7509e91a3ec8dfc2e5536c4d5c1acdf7a6de9 # v1.8.1 diff --git a/README.md b/README.md index a6341b18..f1db9175 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,11 @@ aliases and generics, and `enum.StrEnum`). ## Documentation -**https://rayakame.github.io/sqlc-gen-better-python/** +**https://sqlc-gen-better-python.rayakame.dev/** -- [Getting Started](https://rayakame.github.io/sqlc-gen-better-python/docs/getting-started/) - install the plugin and generate your first models. -- [Guide](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/) - configuration, drivers, model types, writing queries, and every feature, each with real generated output. -- [Reference](https://rayakame.github.io/sqlc-gen-better-python/docs/reference/) - all configuration options, SQL-to-Python type mappings, and per-driver feature support. +- [Getting Started](https://sqlc-gen-better-python.rayakame.dev/docs/getting-started/) - install the plugin and generate your first models. +- [Guide](https://sqlc-gen-better-python.rayakame.dev/docs/guide/) - configuration, drivers, model types, writing queries, and every feature, each with real generated output. +- [Reference](https://sqlc-gen-better-python.rayakame.dev/docs/reference/) - all configuration options, SQL-to-Python type mappings, and per-driver feature support. Questions or feedback? Join the [Discord](https://discord.gg/hikari). @@ -75,33 +75,33 @@ sql: More options at the [`sqlc` config reference](https://docs.sqlc.dev/en/stable/reference/config.html), and the full plugin option list in the -[configuration reference](https://rayakame.github.io/sqlc-gen-better-python/docs/reference/configuration-options/). +[configuration reference](https://sqlc-gen-better-python.rayakame.dev/docs/reference/configuration-options/). ## Features - **Four model types** - `dataclass`, `attrs`, `msgspec`, or `pydantic` - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/model-types/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/model-types/)). - **Seven drivers** - `asyncpg`, `psycopg_async`, and `psycopg_sync` for PostgreSQL, `aiosqlite` and `sqlite3` for SQLite, plus experimental `turso_async` and `turso_sync` for [Turso](https://github.com/tursodatabase/turso) - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/drivers/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/drivers/)). - **Typed query functions** - one module per query file, one function per query - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/writing-queries/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/writing-queries/)). - **PostgreSQL enums** as `enum.StrEnum` classes - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/enums/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/enums/)). - **Type overrides and converters** - swap a column's Python type, or plug in your own encode/decode functions - ([overrides](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/type-overrides/), - [converters](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/converters/)). + ([overrides](https://sqlc-gen-better-python.rayakame.dev/docs/guide/type-overrides/), + [converters](https://sqlc-gen-better-python.rayakame.dev/docs/guide/converters/)). - **Typed JSON columns** via msgspec structs - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/working-with-json/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/working-with-json/)). - **Optional docstrings** in `google`, `numpy`, or `pep257` convention - ([docs](https://rayakame.github.io/sqlc-gen-better-python/docs/guide/docstrings/)). + ([docs](https://sqlc-gen-better-python.rayakame.dev/docs/guide/docstrings/)). - Generated code passes **pyright strict** and **ruff**. Every [sqlc macro](https://docs.sqlc.dev/en/latest/reference/macros.html) is supported. Which query commands are available depends on the driver - see the -[feature support matrix](https://rayakame.github.io/sqlc-gen-better-python/docs/reference/feature-support/). +[feature support matrix](https://sqlc-gen-better-python.rayakame.dev/docs/reference/feature-support/). ## Development diff --git a/docs/hugo.yaml b/docs/hugo.yaml index ceace6e7..d532dd0f 100644 --- a/docs/hugo.yaml +++ b/docs/hugo.yaml @@ -1,4 +1,4 @@ -baseURL: "https://rayakame.github.io/sqlc-gen-better-python/" +baseURL: "https://sqlc-gen-better-python.rayakame.dev/" title: sqlc-gen-better-python enableRobotsTXT: true enableGitInfo: true diff --git a/docs/layouts/robots.txt b/docs/layouts/robots.txt new file mode 100644 index 00000000..e89778e8 --- /dev/null +++ b/docs/layouts/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Sitemap: {{ "sitemap.xml" | absURL }} diff --git a/docs/static/CNAME b/docs/static/CNAME new file mode 100644 index 00000000..804d266b --- /dev/null +++ b/docs/static/CNAME @@ -0,0 +1 @@ +sqlc-gen-better-python.rayakame.dev