// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.31.1 // source: push_subscriptions.sql package db import ( "context" ) const deletePushSubscription = `-- name: DeletePushSubscription :exec DELETE FROM push_subscriptions WHERE id = ? ` func (q *Queries) DeletePushSubscription(ctx context.Context, id string) error { _, err := q.db.ExecContext(ctx, deletePushSubscription, id) return err } const deletePushSubscriptionsByUserDevice = `-- name: DeletePushSubscriptionsByUserDevice :exec DELETE FROM push_subscriptions WHERE user_id = ? AND device_name = ? ` type DeletePushSubscriptionsByUserDeviceParams struct { UserID string `json:"user_id"` DeviceName string `json:"device_name"` } func (q *Queries) DeletePushSubscriptionsByUserDevice(ctx context.Context, arg DeletePushSubscriptionsByUserDeviceParams) error { _, err := q.db.ExecContext(ctx, deletePushSubscriptionsByUserDevice, arg.UserID, arg.DeviceName) return err } const listAPNsSubscriptionsByUserDevice = `-- name: ListAPNsSubscriptionsByUserDevice :many SELECT id, user_id, device_name, endpoint, p256dh, auth, user_agent, locale, platform, created_at, last_used_at FROM push_subscriptions WHERE user_id = ? AND device_name = ? AND platform = 'apns' ` type ListAPNsSubscriptionsByUserDeviceParams struct { UserID string `json:"user_id"` DeviceName string `json:"device_name"` } type ListAPNsSubscriptionsByUserDeviceRow struct { ID string `json:"id"` UserID string `json:"user_id"` DeviceName string `json:"device_name"` Endpoint string `json:"endpoint"` P256dh string `json:"p256dh"` Auth string `json:"auth"` UserAgent string `json:"user_agent"` Locale string `json:"locale"` Platform string `json:"platform"` CreatedAt int64 `json:"created_at"` LastUsedAt int64 `json:"last_used_at"` } func (q *Queries) ListAPNsSubscriptionsByUserDevice(ctx context.Context, arg ListAPNsSubscriptionsByUserDeviceParams) ([]ListAPNsSubscriptionsByUserDeviceRow, error) { rows, err := q.db.QueryContext(ctx, listAPNsSubscriptionsByUserDevice, arg.UserID, arg.DeviceName) if err != nil { return nil, err } defer rows.Close() var items []ListAPNsSubscriptionsByUserDeviceRow for rows.Next() { var i ListAPNsSubscriptionsByUserDeviceRow if err := rows.Scan( &i.ID, &i.UserID, &i.DeviceName, &i.Endpoint, &i.P256dh, &i.Auth, &i.UserAgent, &i.Locale, &i.Platform, &i.CreatedAt, &i.LastUsedAt, ); 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 } const listPushSubscriptionsByUserDevice = `-- name: ListPushSubscriptionsByUserDevice :many SELECT id, user_id, device_name, endpoint, p256dh, auth, user_agent, locale, platform, created_at, last_used_at FROM push_subscriptions WHERE user_id = ? AND device_name = ? AND platform = 'webpush' ` type ListPushSubscriptionsByUserDeviceParams struct { UserID string `json:"user_id"` DeviceName string `json:"device_name"` } type ListPushSubscriptionsByUserDeviceRow struct { ID string `json:"id"` UserID string `json:"user_id"` DeviceName string `json:"device_name"` Endpoint string `json:"endpoint"` P256dh string `json:"p256dh"` Auth string `json:"auth"` UserAgent string `json:"user_agent"` Locale string `json:"locale"` Platform string `json:"platform"` CreatedAt int64 `json:"created_at"` LastUsedAt int64 `json:"last_used_at"` } func (q *Queries) ListPushSubscriptionsByUserDevice(ctx context.Context, arg ListPushSubscriptionsByUserDeviceParams) ([]ListPushSubscriptionsByUserDeviceRow, error) { rows, err := q.db.QueryContext(ctx, listPushSubscriptionsByUserDevice, arg.UserID, arg.DeviceName) if err != nil { return nil, err } defer rows.Close() var items []ListPushSubscriptionsByUserDeviceRow for rows.Next() { var i ListPushSubscriptionsByUserDeviceRow if err := rows.Scan( &i.ID, &i.UserID, &i.DeviceName, &i.Endpoint, &i.P256dh, &i.Auth, &i.UserAgent, &i.Locale, &i.Platform, &i.CreatedAt, &i.LastUsedAt, ); 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 } const touchPushSubscription = `-- name: TouchPushSubscription :exec UPDATE push_subscriptions SET last_used_at = ? WHERE id = ? ` type TouchPushSubscriptionParams struct { LastUsedAt int64 `json:"last_used_at"` ID string `json:"id"` } func (q *Queries) TouchPushSubscription(ctx context.Context, arg TouchPushSubscriptionParams) error { _, err := q.db.ExecContext(ctx, touchPushSubscription, arg.LastUsedAt, arg.ID) return err } const upsertAPNsSubscription = `-- name: UpsertAPNsSubscription :exec INSERT INTO push_subscriptions (id, user_id, device_name, endpoint, p256dh, auth, user_agent, locale, platform, created_at, last_used_at) VALUES (?, ?, ?, ?, '', '', '', ?, 'apns', ?, ?) ON CONFLICT(id) DO UPDATE SET user_id = excluded.user_id, device_name = excluded.device_name, locale = excluded.locale, platform = excluded.platform, last_used_at = excluded.last_used_at ` type UpsertAPNsSubscriptionParams struct { ID string `json:"id"` UserID string `json:"user_id"` DeviceName string `json:"device_name"` Endpoint string `json:"endpoint"` Locale string `json:"locale"` CreatedAt int64 `json:"created_at"` LastUsedAt int64 `json:"last_used_at"` } func (q *Queries) UpsertAPNsSubscription(ctx context.Context, arg UpsertAPNsSubscriptionParams) error { _, err := q.db.ExecContext(ctx, upsertAPNsSubscription, arg.ID, arg.UserID, arg.DeviceName, arg.Endpoint, arg.Locale, arg.CreatedAt, arg.LastUsedAt, ) return err } const upsertPushSubscription = `-- name: UpsertPushSubscription :exec INSERT INTO push_subscriptions (id, user_id, device_name, endpoint, p256dh, auth, user_agent, locale, platform, created_at, last_used_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'webpush', ?, ?) ON CONFLICT(id) DO UPDATE SET user_id = excluded.user_id, device_name = excluded.device_name, p256dh = excluded.p256dh, auth = excluded.auth, user_agent = excluded.user_agent, locale = excluded.locale, platform = excluded.platform, last_used_at = excluded.last_used_at ` type UpsertPushSubscriptionParams struct { ID string `json:"id"` UserID string `json:"user_id"` DeviceName string `json:"device_name"` Endpoint string `json:"endpoint"` P256dh string `json:"p256dh"` Auth string `json:"auth"` UserAgent string `json:"user_agent"` Locale string `json:"locale"` CreatedAt int64 `json:"created_at"` LastUsedAt int64 `json:"last_used_at"` } // push_subscriptions: Web Push and APNs subscription records. // id is hex SHA-256(endpoint/device-token), making upsert idempotent. // platform distinguishes 'webpush' (browser VAPID) from 'apns' (iOS device token). // Lookups are by (user_id, device_name, platform) so each channel only sees its own rows. // Dead endpoints (push service returns 404/410, APNs returns 410) are pruned by DeletePushSubscription. // 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) UpsertPushSubscription(ctx context.Context, arg UpsertPushSubscriptionParams) error { _, err := q.db.ExecContext(ctx, upsertPushSubscription, arg.ID, arg.UserID, arg.DeviceName, arg.Endpoint, arg.P256dh, arg.Auth, arg.UserAgent, arg.Locale, arg.CreatedAt, arg.LastUsedAt, ) return err }