sqlc generates type-safe code from SQL. Here's how it works:
- You write queries in SQL.
- You run sqlc to generate code with type-safe interfaces to those queries.
- You write application code that calls the generated code.
Check out an interactive example to see it in action, and the introductory blog post for the motivation behind sqlc.
This fork contains streaming support using an :iter
keyword. The keyword is implemented
for both Go and Kotlin generated code.
Example :iter
query:
-- name: StreamAuthors :iter
SELECT * from authors;
Will produce query functions like:
StreamAuthors(ctx context.Context, iter func(author Author) error) error
The iter function will be called for each row in the sql result. You are responsible for the actual streaming within the passed function. Example:
w := initSomeWriter()
iter := func(author Author) error {
err = w.Write(author)
if err != nil {
return err
}
return nil
}
err := queries.StreamAuthors(ctx, iter)
Also note that if the iter function return an error, the streaming query will close and return the error.
Clone and run go build ./cmd/sqlc/main.go
from the project root.