sqlc-gen-zig
A Zig code generator for sqlc.
Currently only supports PostgreSQL and SQLite.
Usage
Head over to the releases for instructions on how to configure your sqlc.yaml
.
Example projects can be found in the examples/ directory.
Configuration
# sqlc.yaml
version: "2"
plugins:
- name: zig
wasm:
url: https://github.com/tinyzimmer/sqlc-gen-zig/releases/download/v0.0.11/sqlc-gen-zig.wasm
sha256: 12f9a43c0223c6da64b623691b5264b5827f7acfca23674a1cbfd0494c845f61
sql:
- schema: schema.sql
queries: queries.sql
engine: postgresql
codegen:
- out: src/models
plugin: zig
options: {}
Below are the available options
with their default values:
# The Zig backend to use
# Currently only "pg.zig" for postgresql and "zqlite.zig" for sqlite is supported
backend: pg.zig
# Set to true to not force struct names to their singular form
emit_exact_table_names: false
# Exclude the following table names from being parsed into their singular form
inflection_exclude_table_names: []
# The maximum number of query parameters before creating a struct to hold them
query_parameter_limit: 3
# Mark the raw query string constants as public
public_query_strings: false
# Set to true to not have the Querier store an internal allocator. Each query
# method will take an allocator as a parameter instead.
unmanaged_allocations: false
# Use context as parameters to generated methods. This is useful for code that
# wants to execute queries with zero additional allocations. Context is a struct
# with a `handle` method taking the return value of the query method. See the
# e2e/src/context.zig tests for some examples for now.
use_context: false
# Set to true to return a union of pg.Error and the query result instead of
# returning just the result. This is useful for code that wants to handle server
# side errors in a more granular way (e.g. checking for constraint violations).
# As with context for now, see the tests in e2e/src/unions.zig for examples.
# This option is only applicable for the pg.zig backend.
pg_error_unions: false
Development
The code generator is written in Go and uses the sqlc-plugin-sdk
.
The end-to-end tests can be run with make e2e
.