// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.31.1 // source: pending_messages.sql package db import ( "context" ) const deleteExpiredPendingMessages = `-- name: DeleteExpiredPendingMessages :exec DELETE FROM pending_messages WHERE expires_at < ? ` func (q *Queries) DeleteExpiredPendingMessages(ctx context.Context, expiresAt int64) error { _, err := q.db.ExecContext(ctx, deleteExpiredPendingMessages, expiresAt) return err } const insertPendingMessage = `-- name: InsertPendingMessage :exec INSERT INTO pending_messages (id, user_id, to_device, from_device, text, sent_at, created_at, expires_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ` type InsertPendingMessageParams struct { ID string `json:"id"` UserID string `json:"user_id"` ToDevice string `json:"to_device"` FromDevice string `json:"from_device"` Text string `json:"text"` SentAt int64 `json:"sent_at"` CreatedAt int64 `json:"created_at"` ExpiresAt int64 `json:"expires_at"` } // pending_messages: offline message queue. A text message to a device with no live // SSE connection is queued here and delivered once when that device next polls. // NOTE: keep this file pure ASCII; sqlc v1.31.1 drifts byte offsets on multibyte // runes in query files, corrupting the generated SQL. func (q *Queries) InsertPendingMessage(ctx context.Context, arg InsertPendingMessageParams) error { _, err := q.db.ExecContext(ctx, insertPendingMessage, arg.ID, arg.UserID, arg.ToDevice, arg.FromDevice, arg.Text, arg.SentAt, arg.CreatedAt, arg.ExpiresAt, ) return err } const popPendingMessages = `-- name: PopPendingMessages :many DELETE FROM pending_messages WHERE user_id = ? AND to_device = ? RETURNING id, user_id, to_device, from_device, text, sent_at, created_at, expires_at ` type PopPendingMessagesParams struct { UserID string `json:"user_id"` ToDevice string `json:"to_device"` } func (q *Queries) PopPendingMessages(ctx context.Context, arg PopPendingMessagesParams) ([]PendingMessage, error) { rows, err := q.db.QueryContext(ctx, popPendingMessages, arg.UserID, arg.ToDevice) if err != nil { return nil, err } defer rows.Close() var items []PendingMessage for rows.Next() { var i PendingMessage if err := rows.Scan( &i.ID, &i.UserID, &i.ToDevice, &i.FromDevice, &i.Text, &i.SentAt, &i.CreatedAt, &i.ExpiresAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil }