diff --git a/docs/howto/update.md b/docs/howto/update.md index 2aeaf4c8c9..9450f3d990 100644 --- a/docs/howto/update.md +++ b/docs/howto/update.md @@ -5,12 +5,53 @@ CREATE TABLE authors ( id SERIAL PRIMARY KEY, bio text NOT NULL ); +``` --- name: UpdateAuthor :exec -UPDATE authors SET bio = $2 -WHERE id = $1; +## Single parameter + +If your query has a single parameter, your Go method will also have a single +parameter. + +```sql +-- name: UpdateAuthorBios :exec +UPDATE authors SET bio = $1; +``` + +```go +package db + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) error +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +const updateAuthorBios = `-- name: UpdateAuthorBios :exec +UPDATE authors SET bio = $1 +` + +func (q *Queries) UpdateAuthorBios(ctx context.Context, bio string) error { + _, err := q.db.ExecContext(ctx, updateAuthorBios, bio) + return err +} ``` +## Multiple parameters + +If your query has more than one parameter, your Go method will accept a +`Params` struct. + ```go package db @@ -36,8 +77,14 @@ UPDATE authors SET bio = $2 WHERE id = $1 ` -func (q *Queries) UpdateAuthor(ctx context.Context, id int, bio string) error { - _, err := q.db.ExecContext(ctx, updateAuthor, id, bio) +type UpdateAuthorParams struct { + ID int32 + Bio string +} + +func (q *Queries) UpdateAuthor(ctx context.Context, arg UpdateAuthorParams) error { + _, err := q.db.ExecContext(ctx, updateAuthor, arg.ID, arg.Bio) return err } ``` +