modulepackage
0.3.1
Repository: https://github.com/k1low/sqlc-go-one-or-fail.git
Documentation: pkg.go.dev
# README
sqlc-go-one-or-fail
sqlc-go-one-or-fail
modifies the Go code generated by sqlc to fail if more than one record is retrieved in the :one
command.
Usage
$ sqlc generate
$ sqlc-go-one-or-fail path/to/generated_by_sqlc/*.go
Before
const getAuthorByName = `-- name: GetAuthorByName :one
SELECT id, name, bio FROM authors
WHERE name = ?
`
func (q *Queries) GetAuthorByName(ctx context.Context, name string) (Author, error) {
row := q.db.QueryRowContext(ctx, getAuthorByName, name)
var i Author
err := row.Scan(&i.ID, &i.Name, &i.Bio)
return i, err
}
After
const getAuthorByName = `-- name: GetAuthorByName :one
SELECT id, name, bio FROM authors
WHERE name = ?
`
func (q *Queries) GetAuthorByName(ctx context.Context, name string) (Author, error) {
rows, err := q.db.QueryContext(ctx, getAuthorByName, name)
if err != nil {
return Author{}, err
}
defer rows.Close()
if !rows.Next() {
if err := rows.Err(); err != nil {
return Author{}, err
}
return Author{}, sql.ErrNoRows
}
var i Author
if err := rows.Scan(&i.ID, &i.Name, &i.Bio); err != nil {
return Author{}, err
}
if rows.Next() {
return Author{}, fmt.Errorf("multiple records were retrieved when the following query was executed: %q", getAuthorByName)
}
if err := rows.Close(); err != nil {
return Author{}, err
}
if err := rows.Err(); err != nil {
return Author{}, err
}
return i, err
}
Install
deb:
$ export SQLC_GO_ONE_OR_FAIL_VERSION=X.X.X
$ curl -o sqlc-go-one-or-fail.deb -L https://github.com/k1LoW/sqlc-go-one-or-fail/releases/download/v$SQLC_GO_ONE_OR_FAIL_VERSION/sqlc-go-one-or-fail_$SQLC_GO_ONE_OR_FAIL_VERSION-1_amd64.deb
$ dpkg -i sqlc-go-one-or-fail.deb
RPM:
$ export SQLC_GO_ONE_OR_FAIL_VERSION=X.X.X
$ yum install https://github.com/k1LoW/sqlc-go-one-or-fail/releases/download/v$SQLC_GO_ONE_OR_FAIL_VERSION/sqlc-go-one-or-fail_$SQLC_GO_ONE_OR_FAIL_VERSION-1_amd64.rpm
apk:
$ export SQLC_GO_ONE_OR_FAIL_VERSION=X.X.X
$ curl -o sqlc-go-one-or-fail.apk -L https://github.com/k1LoW/sqlc-go-one-or-fail/releases/download/v$SQLC_GO_ONE_OR_FAIL_VERSION/runn_$SQLC_GO_ONE_OR_FAIL_VERSION-1_amd64.apk
$ apk add sqlc-go-one-or-fail.apk
homebrew tap:
$ brew install k1LoW/tap/sqlc-go-one-or-fail
manually:
Download binary from releases page
go install:
$ go install github.com/k1LoW/sqlc-go-one-or-fail@latest
# Packages
Copyright © 2023 Ken'ichiro Oyama <[email protected]>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
No description provided by the author