1

I use https://github.com/kyleconroy/sqlc

This is a library for generating code. My query

-- name: SetAssignmentsResult :exec
UPDATE assignments
SET status = 'ACCEPTED',
    result = $1
WHERE task_id = $2
  AND item_id = $3
  AND marker_id = $4;

sqlc generate this code

type SetAssignmentsResultParams struct {
    Result   pqtype.NullRawMessage `json:"result"`
    TaskID   uuid.UUID             `json:"task_id"`
    ItemID   uuid.UUID             `json:"item_id"`
    MarkerID uuid.NullUUID         `json:"marker_id"`
}

func (q *Queries) SetAssignmentsResult(ctx context.Context, arg SetAssignmentsResultParams) error {
    _, err := q.exec(ctx, q.setAssignmentsResultStmt, setAssignmentsResult,
        arg.Result,
        arg.TaskID,
        arg.ItemID,
        arg.MarkerID,
    )
    return err
}

My code

err := repo.SetResult(ctx,
        godb.SetAssignmentsResultParams{
            Result: pqtype.NullRawMessage{RawMessage: []byte(`{"test": "0.0.0.0:8080"}`),
                Valid: true,
            },
            TaskID: IDs[0],
            ItemID: IDs[1],
            MarkerID: uuid.NullUUID{
                UUID:  IDs[2],
                Valid: true,
            },
        }

Return error: ERROR: invalid input syntax for type json (SQLSTATE 22P02)

Important. If you use an empty json, then everything works

err := repo.SetResult(ctx,
        godb.SetAssignmentsResultParams{
            pqtype.NullRawMessage{},
            IDs[0],
            IDs[1],
            uuid.NullUUID{IDs[2], true},
        },
Nakem1
  • 313
  • 1
  • 10
  • What is `repo`? (please add a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example)) Also what version of `sqlc` are you using (your generated code differs from that produced by the [demo](https://play.sqlc.dev/p/8dffb12f4169f098ea0b68d028ec287c593737fcf8f774bbc39dd27e6d596c14)). – Brits Mar 01 '22 at 02:34

0 Answers0