Fix payment status update parameter typing for ArifPay verification.

Use explicit SQL casts and named sqlc args to avoid PostgreSQL 42P08 ambiguity during nonce/session status updates, and align repository bindings with regenerated sqlc types.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Yared Yemane 2026-05-28 02:07:18 -07:00
parent d225b45166
commit 853bd730bb
3 changed files with 33 additions and 33 deletions

View File

@ -46,22 +46,22 @@ WHERE id = $2;
-- name: UpdatePaymentStatusBySessionID :exec -- name: UpdatePaymentStatusBySessionID :exec
UPDATE payments UPDATE payments
SET SET
status = $1, status = sqlc.arg(status)::varchar,
transaction_id = COALESCE($2, transaction_id), transaction_id = COALESCE(sqlc.arg(transaction_id)::text, transaction_id),
payment_method = COALESCE($3, payment_method), payment_method = COALESCE(sqlc.arg(payment_method)::text, payment_method),
paid_at = CASE WHEN $1 = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END, paid_at = CASE WHEN sqlc.arg(status)::varchar = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END,
updated_at = CURRENT_TIMESTAMP updated_at = CURRENT_TIMESTAMP
WHERE session_id = $4; WHERE session_id = sqlc.arg(session_id)::text;
-- name: UpdatePaymentStatusByNonce :exec -- name: UpdatePaymentStatusByNonce :exec
UPDATE payments UPDATE payments
SET SET
status = $1, status = sqlc.arg(status)::varchar,
transaction_id = COALESCE($2, transaction_id), transaction_id = COALESCE(sqlc.arg(transaction_id)::text, transaction_id),
payment_method = COALESCE($3, payment_method), payment_method = COALESCE(sqlc.arg(payment_method)::text, payment_method),
paid_at = CASE WHEN $1 = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END, paid_at = CASE WHEN sqlc.arg(status)::varchar = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END,
updated_at = CURRENT_TIMESTAMP updated_at = CURRENT_TIMESTAMP
WHERE nonce = $4; WHERE nonce = sqlc.arg(nonce)::text;
-- name: UpdatePaymentSessionID :exec -- name: UpdatePaymentSessionID :exec
UPDATE payments UPDATE payments

View File

@ -432,18 +432,18 @@ func (q *Queries) UpdatePaymentStatus(ctx context.Context, arg UpdatePaymentStat
const UpdatePaymentStatusByNonce = `-- name: UpdatePaymentStatusByNonce :exec const UpdatePaymentStatusByNonce = `-- name: UpdatePaymentStatusByNonce :exec
UPDATE payments UPDATE payments
SET SET
status = $1, status = $1::varchar,
transaction_id = COALESCE($2, transaction_id), transaction_id = COALESCE($2::text, transaction_id),
payment_method = COALESCE($3, payment_method), payment_method = COALESCE($3::text, payment_method),
paid_at = CASE WHEN $1 = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END, paid_at = CASE WHEN $1::varchar = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END,
updated_at = CURRENT_TIMESTAMP updated_at = CURRENT_TIMESTAMP
WHERE nonce = $4 WHERE nonce = $4::text
` `
type UpdatePaymentStatusByNonceParams struct { type UpdatePaymentStatusByNonceParams struct {
Status string `json:"status"` Status string `json:"status"`
TransactionID pgtype.Text `json:"transaction_id"` TransactionID string `json:"transaction_id"`
PaymentMethod pgtype.Text `json:"payment_method"` PaymentMethod string `json:"payment_method"`
Nonce string `json:"nonce"` Nonce string `json:"nonce"`
} }
@ -460,19 +460,19 @@ func (q *Queries) UpdatePaymentStatusByNonce(ctx context.Context, arg UpdatePaym
const UpdatePaymentStatusBySessionID = `-- name: UpdatePaymentStatusBySessionID :exec const UpdatePaymentStatusBySessionID = `-- name: UpdatePaymentStatusBySessionID :exec
UPDATE payments UPDATE payments
SET SET
status = $1, status = $1::varchar,
transaction_id = COALESCE($2, transaction_id), transaction_id = COALESCE($2::text, transaction_id),
payment_method = COALESCE($3, payment_method), payment_method = COALESCE($3::text, payment_method),
paid_at = CASE WHEN $1 = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END, paid_at = CASE WHEN $1::varchar = 'SUCCESS' THEN CURRENT_TIMESTAMP ELSE paid_at END,
updated_at = CURRENT_TIMESTAMP updated_at = CURRENT_TIMESTAMP
WHERE session_id = $4 WHERE session_id = $4::text
` `
type UpdatePaymentStatusBySessionIDParams struct { type UpdatePaymentStatusBySessionIDParams struct {
Status string `json:"status"` Status string `json:"status"`
TransactionID pgtype.Text `json:"transaction_id"` TransactionID string `json:"transaction_id"`
PaymentMethod pgtype.Text `json:"payment_method"` PaymentMethod string `json:"payment_method"`
SessionID pgtype.Text `json:"session_id"` SessionID string `json:"session_id"`
} }
func (q *Queries) UpdatePaymentStatusBySessionID(ctx context.Context, arg UpdatePaymentStatusBySessionIDParams) error { func (q *Queries) UpdatePaymentStatusBySessionID(ctx context.Context, arg UpdatePaymentStatusBySessionIDParams) error {

View File

@ -119,17 +119,17 @@ func (s *Store) UpdatePaymentStatus(ctx context.Context, id int64, status string
func (s *Store) UpdatePaymentStatusBySessionID(ctx context.Context, sessionID, status, transactionID, paymentMethod string) error { func (s *Store) UpdatePaymentStatusBySessionID(ctx context.Context, sessionID, status, transactionID, paymentMethod string) error {
return s.queries.UpdatePaymentStatusBySessionID(ctx, dbgen.UpdatePaymentStatusBySessionIDParams{ return s.queries.UpdatePaymentStatusBySessionID(ctx, dbgen.UpdatePaymentStatusBySessionIDParams{
Status: status, Status: status,
TransactionID: toPgText(&transactionID), TransactionID: transactionID,
PaymentMethod: toPgText(&paymentMethod), PaymentMethod: paymentMethod,
SessionID: toPgText(&sessionID), SessionID: sessionID,
}) })
} }
func (s *Store) UpdatePaymentStatusByNonce(ctx context.Context, nonce, status, transactionID, paymentMethod string) error { func (s *Store) UpdatePaymentStatusByNonce(ctx context.Context, nonce, status, transactionID, paymentMethod string) error {
return s.queries.UpdatePaymentStatusByNonce(ctx, dbgen.UpdatePaymentStatusByNonceParams{ return s.queries.UpdatePaymentStatusByNonce(ctx, dbgen.UpdatePaymentStatusByNonceParams{
Status: status, Status: status,
TransactionID: toPgText(&transactionID), TransactionID: transactionID,
PaymentMethod: toPgText(&paymentMethod), PaymentMethod: paymentMethod,
Nonce: nonce, Nonce: nonce,
}) })
} }