File tree Expand file tree Collapse file tree 1 file changed +30
-4
lines changed
Expand file tree Collapse file tree 1 file changed +30
-4
lines changed Original file line number Diff line number Diff line change 22
33``` sql
44CREATE TABLE records (
5- id SERIAL PRIMARY KEY
5+ id SERIAL PRIMARY KEY ,
6+ counter INT NOT NULL
67);
78
89-- name: GetRecord :one
@@ -21,7 +22,8 @@ import (
2122)
2223
2324type Record struct {
24- ID int
25+ ID int
26+ Counter int
2527}
2628
2729type DBTX interface {
@@ -41,14 +43,38 @@ func (*Queries) WithTx(tx *sql.Tx) *Queries {
4143}
4244
4345const getRecord = ` -- name: GetRecord :one
44- SELECT id FROM records
46+ SELECT id, counter FROM records
4547WHERE id = $1
4648`
4749
4850func (q *Queries ) GetRecord (ctx context .Context , id int ) (Record , error ) {
4951 row := q.db .QueryRowContext (ctx, getRecord, id)
5052 var i Record
51- err := row.Scan (&i.ID )
53+ err := row.Scan (&i.ID , &i. Counter )
5254 return i, err
5355}
5456```
57+
58+ With pgx you'd use it like this for example:
59+
60+ ``` go
61+ function bumpCounter (ctx context.Context , p *pgx.Conn , id int ) error {
62+ tx , err := db.Begin (ctx)
63+ if err != nil {
64+ return err
65+ }
66+ defer tx.Rollback ()
67+ q := db.New (tx)
68+ r , err := q.GetRecord (ctx, id)
69+ if err != nil {
70+ return err
71+ }
72+ if err := q.UpdateRecord (ctx, db.UpdateRecordParams {
73+ ID: r.ID ,
74+ Counter: r.Counter +1 ,
75+ }); err != nil {
76+ return err
77+ }
78+ return tx.Commit ()
79+ }
80+ ```
You can’t perform that action at this time.
0 commit comments