Skip to content

docs: complete the documentation site and slim the README#208

Merged
rayakame merged 15 commits into
mainfrom
docs/complete-guide
Jul 21, 2026
Merged

docs: complete the documentation site and slim the README#208
rayakame merged 15 commits into
mainfrom
docs/complete-guide

Conversation

@rayakame

@rayakame rayakame commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Summary

Builds the documentation site out from a 4-page scaffold into a complete set, and slims the README to match.

Structure follows the two-tier onboarding and uniform page template that makes the hikari-lightbulb v3 docs good: a fast Quickstart, then a paced guide, with canonical lookup tables split out into a reference section. Ordering is encoded with front-matter weight in steps of ten, leaving room to insert pages later.

Getting Started
Guide/      configuration, drivers, model-types, writing-queries, enums,
            type-overrides, converters, working-with-json, docstrings,
            sqlite-type-conversion, naming
Reference/  configuration-options, type-mappings, feature-support

Every guide page follows the same shape: intro -> specification/contract -> incremental snippets -> complete example -> pitfalls.

Highlights

  • Working with JSON - a full walkthrough of typing json/jsonb columns with msgspec structs: why an override cannot do it, the str wire-type contract (including the msgspec.json.encode returns bytes gotcha), a nested-struct example across models/converters/sqlc.yaml, the generated output, multiple JSON columns with different shapes, nullable/array behaviour, validation semantics, and stdlib-json and pydantic variants.
  • Type mappings reference - full SQL-to-Python tables for both engines, plus how nullability (| None) and arrays (collections.abc.Sequence[T]) are layered on.
  • Configuration reference - every option with type and default, plus the override, converter, and py_type object schemas.

Accuracy

All generated-code examples are taken verbatim from the committed test fixtures - models for all four model types, the :one/:many/:exec/:copyfrom bodies, the enum with its VALUE_24H sanitization, the override read/write conversions, and all three docstring conventions rendered for the same function. Guide pages show the no-docstring form, since docstrings defaults to none.

While cross-checking against the source, two real options turned out to be missing from the README's table: indent_char and chars_per_indent_level. Both are now documented in the configuration reference.

README

Slimmed from 239 to 105 lines. Keeps the badges, intro, example config, a linked feature list, development/changelog, and credits; the option table and per-feature sections now live on the site (the README's own note said they were there "while they are ported over").

Validation

  • 30 pages build with zero warnings.
  • 977 internal links checked, none broken.
  • No non-ASCII in any authored file.
  • Converted all tabs to the current {{< tab name="..." >}} API - tabs items= is deprecated in Hextra 0.12 and was emitting build warnings.
  • Docstring examples use 4-backtick fences because the generated docstrings contain nested ```sql blocks; verified in the rendered HTML that the SQL stays inside the outer code block.

Summary by CodeRabbit

  • Documentation
    • Reorganized the README into a concise Features section with direct links to Getting Started, Guide, and Reference.
    • Expanded Getting Started into a tabbed, end-to-end walkthrough (including driver-specific configuration and usage examples).
    • Added a full Guide with new pages covering configuration, drivers, model types, naming, enums, type overrides, converters, JSON, SQLite type conversion, docstrings, and writing queries.
    • Added Reference landing plus pages for configuration options, type mappings, and per-driver feature/command support.
    • Refreshed the docs homepage and navigation cards.
  • Style
    • Improved documentation card alignment for better layout.
  • Chores
    • Updated footer copyright text.

Build the docs site out into a Getting Started page, an eleven page guide,
and a four page reference, modeled on the two tier onboarding and uniform
page template used by hikari-lightbulb.

The guide covers configuration, drivers, model types, writing queries,
enums, type overrides, converters, working with JSON, docstrings, SQLite
type conversion, and naming. The reference documents every configuration
option and config object schema, the SQL to Python type mappings for both
engines, and per driver feature support. Generated code examples are taken
verbatim from the committed test fixtures.

Slim the README down to the example config plus a feature list that links
into the site, since those sections now live there.
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR condenses the README, reorganizes hosted documentation into Guide and Reference sections, and adds pages covering configuration, generated-code behavior, type conversion, drivers, query generation, and feature support.

Changes

Documentation reorganization

Layer / File(s) Summary
Documentation navigation and landing pages
README.md, docs/content/_index.md, docs/content/docs/_index.md, docs/content/docs/guide/_index.md, docs/content/docs/reference/_index.md, docs/assets/css/custom.css, docs/i18n/en.yaml, .changes/unreleased/*
README links, hosted documentation navigation, homepage feature cards, layout styling, and release metadata now direct readers to the Guide and Reference sections.
Configuration and feature reference
docs/content/docs/guide/configuration.md, docs/content/docs/reference/*
Documents plugin configuration options, SQL-to-Python type mappings, supported commands, and unsupported features.
Generation and runtime guides
docs/content/docs/guide/model-types.md, docs/content/docs/guide/naming.md, docs/content/docs/guide/docstrings.md, docs/content/docs/guide/drivers.md, docs/content/docs/guide/sqlite-type-conversion.md
Documents model styles, naming, docstrings, database drivers, connection handling, and SQLite runtime conversion requirements.
Type overrides and conversion guides
docs/content/docs/guide/enums.md, docs/content/docs/guide/type-overrides.md, docs/content/docs/guide/converters.md, docs/content/docs/guide/working-with-json.md
Documents enum generation, override matching, converter behavior, JSON conversion, nullability, arrays, and validation.
Query generation guide
docs/content/docs/guide/writing-queries.md
Documents SQL annotations, generated functions, return types, parameters, write commands, bulk inserts, and generated query classes.
Getting Started walkthrough
docs/content/docs/getting-started.md
Adds prerequisites, driver-specific configuration, schema and query examples, generation instructions, generated output examples, and runtime usage guidance.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: finishing the docs site and reducing the README.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-21 18:58 UTC

@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/getting-started.md`:
- Around line 59-62: Replace the root-relative documentation links with
base-path-aware relative links or Hugo ref/relref links. Update
docs/content/docs/getting-started.md:59-62,
docs/content/docs/guide/_index.md:30-31,
docs/content/docs/reference/_index.md:9-10,
docs/content/docs/guide/configuration.md:8-10,
docs/content/docs/reference/configuration-options.md:8-10,
docs/content/docs/reference/type-mappings.md:8-10, and
docs/content/docs/reference/feature-support.md:29-30; preserve each link’s
existing destination and displayed text.

In `@docs/content/docs/guide/converters.md`:
- Around line 76-80: Update the wire-type sentence in the converter
documentation to say that `to_db` must return a type that the driver accepts,
replacing the grammatically incorrect “return one the driver accepts” wording
while leaving the surrounding guidance unchanged.

In `@docs/content/docs/guide/drivers.md`:
- Around line 56-60: Update the SQLite warning callout in the drivers
documentation to make the PARSE_DECLTYPES requirement conditional: state that
both SQLite drivers require it only when using generated type conversions, while
preserving the existing explanation of generated adapters and converters.
- Around line 41-42: Update both examples to import sqlite3 and pass
sqlite3.PARSE_DECLTYPES instead of aiosqlite.PARSE_DECLTYPES:
docs/content/docs/guide/drivers.md lines 41-42 and
docs/content/docs/guide/sqlite-type-conversion.md lines 26-30. Preserve the
existing connection examples and query behavior.

In `@docs/content/docs/guide/sqlite-type-conversion.md`:
- Around line 62-65: Update the callout describing sqlite3.register_converter to
state that registrations are process-global and that limiting registrations to a
module’s needs only avoids unnecessary conversions; do not imply this prevents
modules from affecting one another when they use the same SQL type key.

In `@docs/content/docs/guide/working-with-json.md`:
- Around line 206-218: Update the alternative JSON examples around
encode_preferences and decode_preferences so each tab uses a model type matching
its serialization API: define dataclass and Pydantic Preferences variants where
needed, or replace the APIs with ones compatible with the existing
msgspec.Struct. Ensure decoding reconstructs nested Theme objects rather than
leaving them as raw dictionaries.

In `@docs/content/docs/guide/writing-queries.md`:
- Around line 125-127: Update the query_parameter_limit description in the
query-writing guide to state that parameter bundling applies only when the
option is configured to a non-negative value; unset or negative values must
never bundle parameters. Keep the existing explanation of the generated
<Name>Params object and :copyfrom behavior, matching the semantics in the
configuration options documentation.

In `@docs/content/docs/reference/type-mappings.md`:
- Line 18: Update the Nullable type-mapping documentation entry to remove the
leading space inside the inline code span, changing the displayed type from ` |
None` to `| None`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 92d449f3-09b2-423d-bb77-75d9835a6af2

📥 Commits

Reviewing files that changed from the base of the PR and between c85d1d6 and 0d6082a.

📒 Files selected for processing (20)
  • README.md
  • docs/content/docs/_index.md
  • docs/content/docs/converters.md
  • docs/content/docs/getting-started.md
  • docs/content/docs/guide/_index.md
  • docs/content/docs/guide/configuration.md
  • docs/content/docs/guide/converters.md
  • docs/content/docs/guide/docstrings.md
  • docs/content/docs/guide/drivers.md
  • docs/content/docs/guide/enums.md
  • docs/content/docs/guide/model-types.md
  • docs/content/docs/guide/naming.md
  • docs/content/docs/guide/sqlite-type-conversion.md
  • docs/content/docs/guide/type-overrides.md
  • docs/content/docs/guide/working-with-json.md
  • docs/content/docs/guide/writing-queries.md
  • docs/content/docs/reference/_index.md
  • docs/content/docs/reference/configuration-options.md
  • docs/content/docs/reference/feature-support.md
  • docs/content/docs/reference/type-mappings.md
💤 Files with no reviewable changes (1)
  • docs/content/docs/converters.md

Comment thread docs/content/docs/getting-started.md
Comment thread docs/content/docs/guide/converters.md Outdated
Comment thread docs/content/docs/guide/drivers.md Outdated
Comment thread docs/content/docs/guide/drivers.md
Comment thread docs/content/docs/guide/sqlite-type-conversion.md
Comment thread docs/content/docs/guide/working-with-json.md Outdated
Comment thread docs/content/docs/guide/writing-queries.md Outdated
Comment thread docs/content/docs/reference/type-mappings.md Outdated
aiosqlite does not re-export PARSE_DECLTYPES, so the connection examples
raised AttributeError. Use sqlite3.PARSE_DECLTYPES with aiosqlite.connect,
matching how the test suite opens those connections, and import sqlite3
in both examples.

Scope the PARSE_DECLTYPES requirement to schemas that actually generate
type conversions, and correct the register_converter note: registration is
process-global, so limiting it per module avoids unused conversions but
does not isolate modules from each other.

Make the alternative JSON examples self consistent by defining the model
with the same library the converter uses, and rebuild nested objects in
the stdlib decoder. State that query_parameter_limit only bundles when set
to a non-negative value, and fix two wording and formatting nits.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
docs/content/docs/guide/drivers.md (1)

59-61: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Scope the PARSE_DECLTYPES requirement to returned-column converters.

The related SQLite guide states that parameters use adapters while returned columns use converters. detect_types=sqlite3.PARSE_DECLTYPES is required for the latter, not for every generated adapter registration; otherwise this warning makes adapter-only write paths appear to require unnecessary connection settings.

Suggested wording
-  Whenever the generated code registers type conversions - which it does for
-  `date`, `datetime`/`timestamp`, `decimal`, `bool`, and `blob` columns - both
+  Whenever the generated code registers declared-type converters for returned
+  `date`, `datetime`/`timestamp`, `decimal`, `bool`, and `blob` columns, both
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content/docs/guide/drivers.md` around lines 59 - 61, Revise the
statement in the SQLite drivers guidance to scope
detect_types=sqlite3.PARSE_DECLTYPES specifically to generated converters for
returned columns, not all type conversion or adapter registrations. Preserve the
listed column types while clarifying that adapter-only parameter paths do not
require this connection setting.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/guide/working-with-json.md`:
- Around line 228-229: Add a blank line between the closing standard-library
code fence and the following prose in the documented JSON guide, preserving the
existing text and code-fence content.

---

Duplicate comments:
In `@docs/content/docs/guide/drivers.md`:
- Around line 59-61: Revise the statement in the SQLite drivers guidance to
scope detect_types=sqlite3.PARSE_DECLTYPES specifically to generated converters
for returned columns, not all type conversion or adapter registrations. Preserve
the listed column types while clarifying that adapter-only parameter paths do
not require this connection setting.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6193eb80-a849-4184-8c81-3d4d80100671

📥 Commits

Reviewing files that changed from the base of the PR and between 0d6082a and 845db5f.

📒 Files selected for processing (6)
  • docs/content/docs/guide/converters.md
  • docs/content/docs/guide/drivers.md
  • docs/content/docs/guide/sqlite-type-conversion.md
  • docs/content/docs/guide/working-with-json.md
  • docs/content/docs/guide/writing-queries.md
  • docs/content/docs/reference/type-mappings.md

Comment thread docs/content/docs/guide/working-with-json.md
rayakame added 3 commits July 21, 2026 17:39
detect_types governs converters, which decode returned columns, not the
adapters that encode parameters. Scope the drivers callout to queries that
return date, datetime/timestamp, decimal, bool, or blob columns, and say
outright that parameter adapters work without the setting.

Separate the tab commentary from the preceding code fence with a blank
line throughout the JSON and model type pages, and drop the roadmap link
from the README.
Carry the page from install and configuration through to a first working
query: a schema, an annotated query file, the generated model and query
functions, and the call sites that use them.

Every driver specific block is a synced tab group, so picking asyncpg,
aiosqlite or sqlite3 once switches the whole page. That includes how a
:many result is consumed, which differs between the async drivers, where
the result is awaited or iterated, and sqlite3, where it is called.
@rayakame

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

rayakame added 2 commits July 21, 2026 18:09
Give the documentation landing page something to land on: icons on the
section cards, a short SQL to Python showcase, a grid linking every
feature page, a support summary table, and cards for issues, Discord and
the changelog.

Point the home page feature cards at the guide pages they describe, now
that those pages exist. Card links are relative, because the card
shortcode does not resolve a leading slash against the site base path the
way markdown links do.
The home page stopped at the feature grid and left the rest of the screen
empty. Follow it with the two things a visitor actually wants: what the
plugin produces, shown as an annotated query next to the typed function
and model it generates, and how to start, shown as the sqlc.yaml block,
the generate command, and a link into the getting started guide.

Drop the same showcase from the documentation landing page, so it lives
in one place and that page stays a navigation hub.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/content/docs/guide/working-with-json.md (1)

148-149: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Handle the nullable result before dereferencing user.

get_user is documented as returning models.User | None, but this example accesses user.preferences without narrowing the optional value. Pyright will report a possible None dereference.

Suggested fix
 user = await get_user(conn, id_=1)
+assert user is not None
 user.preferences.theme.dark_mode  # True - typed all the way down
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content/docs/guide/working-with-json.md` around lines 148 - 149, Update
the get_user example to handle the possible None result before accessing
user.preferences.theme.dark_mode. Add an explicit null check or other
type-narrowing flow, while preserving the demonstrated typed access for an
existing user.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/_index.md`:
- Around line 96-114: Add version: "2" to the sqlc.yaml example before the
plugins configuration so the snippet is a valid v2 configuration while
preserving the existing plugin and SQL settings.

In `@docs/content/docs/getting-started.md`:
- Around line 314-354: Update both the asyncpg and aiosqlite examples to run
inside an async def main() coroutine, add the required asyncio import, and
invoke main with asyncio.run(main()) so await, async for, and async with are not
used at module scope.
- Around line 21-41: Add blank lines between each fenced code block and its
surrounding Hextra tab shortcode lines in the asyncpg, aiosqlite, and sqlite3
tabs, including before each opening fence and after each closing fence, so all
affected examples satisfy MD031.

---

Outside diff comments:
In `@docs/content/docs/guide/working-with-json.md`:
- Around line 148-149: Update the get_user example to handle the possible None
result before accessing user.preferences.theme.dark_mode. Add an explicit null
check or other type-narrowing flow, while preserving the demonstrated typed
access for an existing user.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1a0b0aa5-8043-4ee6-b017-6eab5d8c9579

📥 Commits

Reviewing files that changed from the base of the PR and between 845db5f and 11c2994.

📒 Files selected for processing (8)
  • .changes/unreleased/Added-20260721-140000.yaml
  • README.md
  • docs/content/_index.md
  • docs/content/docs/_index.md
  • docs/content/docs/getting-started.md
  • docs/content/docs/guide/drivers.md
  • docs/content/docs/guide/model-types.md
  • docs/content/docs/guide/working-with-json.md
💤 Files with no reviewable changes (1)
  • README.md

Comment thread docs/content/_index.md
Comment thread docs/content/docs/getting-started.md
Comment thread docs/content/docs/getting-started.md
rayakame added 3 commits July 21, 2026 18:25
Follow the feature grid with the things a visitor still has to go looking
for: the same table rendered as all four model types, the correctness
story behind the generated code, and the setup snippet, ending on a link
into the getting started guide.

Cards bottom align their text so it can sit under an image, which leaves
a gap above short cards once a taller sibling stretches the grid row. Top
align text only cards and leave cards with an image alone.
The footer showed the theme's default placeholder. Override the copyright i18n string at site level, matching the LICENSE holder so the two cannot drift.
The async examples used await, async for and async with at module scope,
which is a SyntaxError, so anyone copying them got nothing. Run them from
an async def main under asyncio.run, in the getting started page and in
the drivers, sqlite type conversion and JSON pages that had the same
problem. Guard the JSON example against a missing row before reaching
into the returned model, since the query returns an optional.

Add the required version key to the sqlc.yaml snippet on the home page,
which was not a valid v2 configuration without it.

Separate fenced blocks from the surrounding tab shortcodes with blank
lines, matching how the converter page already wrote them.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/getting-started.md`:
- Around line 346-370: Update the Python example around asyncpg.connect in main
to wrap all query usage in a try/finally block and await conn.close() in the
finally clause, ensuring the connection is closed even when a query or print
operation fails.

In `@docs/content/docs/guide/drivers.md`:
- Around line 30-35: Update the main function’s asyncpg connection flow to wrap
the get_field_naming query in a try/finally block and await conn.close() in the
finally clause, preserving the existing query behavior while ensuring the
connection is always closed.

In `@docs/content/docs/guide/sqlite-type-conversion.md`:
- Around line 20-24: Add an `import sqlite3` statement to the Python snippet in
the `sqlite3` tab before the existing `sqlite3.connect` call, so the example
runs when copied verbatim.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8d575164-2bac-4eea-916d-64f75dc7fb0a

📥 Commits

Reviewing files that changed from the base of the PR and between 11c2994 and 33ecb12.

📒 Files selected for processing (9)
  • docs/assets/css/custom.css
  • docs/content/_index.md
  • docs/content/docs/getting-started.md
  • docs/content/docs/guide/docstrings.md
  • docs/content/docs/guide/drivers.md
  • docs/content/docs/guide/model-types.md
  • docs/content/docs/guide/sqlite-type-conversion.md
  • docs/content/docs/guide/working-with-json.md
  • docs/i18n/en.yaml

Comment thread docs/content/docs/getting-started.md
Comment thread docs/content/docs/guide/drivers.md
Comment thread docs/content/docs/guide/sqlite-type-conversion.md
Checking the guide against the generated fixtures turned up several
claims that were simply wrong.

There is no Querier class. Each query file gets its own class named after
the file, taking the connection in the constructor and exposing it again
as a conn property, so document that shape instead.

The exec family was described loosely: execlastid is int | None and
refers to the last affected row, execresult is a status string on asyncpg
but a cursor on the sqlite drivers, and execrows reports 0 or -1
depending on the driver when nothing is affected. A one query can also
return a generated row class or a bare scalar rather than a model, and a
many function is not a coroutine even on the async drivers.

Stop claiming every sqlc macro works. sqlc.slice only reaches the type
layer: the SLICE placeholder is never expanded, so the query fails once
the driver is handed a list. Point people at ANY instead.

Redirect the old converters URL, which moved under the guide.
@rayakame

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@rayakame

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/guide/writing-queries.md`:
- Line 172: Update the usage example calling
QueriesFieldNamings(conn).get_field_naming so it awaits the async method and
demonstrates receiving the query result rather than an unexecuted coroutine.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1f69a3c0-df00-4c98-947e-9338c3729144

📥 Commits

Reviewing files that changed from the base of the PR and between 33ecb12 and bcae564.

📒 Files selected for processing (5)
  • README.md
  • docs/content/docs/guide/converters.md
  • docs/content/docs/guide/writing-queries.md
  • docs/content/docs/reference/configuration-options.md
  • docs/content/docs/reference/feature-support.md

Comment thread docs/content/docs/guide/writing-queries.md Outdated
sqlc.slice is a supported macro whose placeholder expansion is being
fixed before the next release, so list all four macros as supported again
rather than calling it unsupported. Leave a short note about the current
release behaviour pointing at the tracking issue, to be removed once the
fix lands.
The generated method is a coroutine on the async drivers, so calling it without await hands back an unexecuted coroutine rather than the row. Note that sqlite3 methods are plain functions and need no await.
@rayakame

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/reference/feature-support.md`:
- Around line 11-20: Update the macro support statement in the feature-support
documentation to qualify sqlc.slice as having a known runtime limitation in
v0.5.1 rather than presenting every macro as fully supported. In the
accompanying callout, replace the time-sensitive “fix is landing before the next
release” wording with a neutral statement that the problem is tracked in issue
`#210`, while preserving the PostgreSQL ANY workaround.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 3e992654-73c1-4474-9f05-6be0ea07ec46

📥 Commits

Reviewing files that changed from the base of the PR and between 33ecb12 and f5a3acc.

📒 Files selected for processing (4)
  • docs/content/docs/guide/converters.md
  • docs/content/docs/guide/writing-queries.md
  • docs/content/docs/reference/configuration-options.md
  • docs/content/docs/reference/feature-support.md

Comment thread docs/content/docs/reference/feature-support.md
@rayakame
rayakame merged commit 5f00083 into main Jul 21, 2026
20 checks passed
@rayakame
rayakame deleted the docs/complete-guide branch July 21, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant