// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.31.1 // source: notifications.sql package notifysqlc import ( "context" "github.com/jackc/pgx/v5/pgtype" ) const countUnreadByUser = `-- name: CountUnreadByUser :one SELECT COUNT(*)::int FROM notifications WHERE user_id = $1 AND read_at IS NULL ` func (q *Queries) CountUnreadByUser(ctx context.Context, userID pgtype.UUID) (int32, error) { row := q.db.QueryRow(ctx, countUnreadByUser, userID) var column_1 int32 err := row.Scan(&column_1) return column_1, err } const insertNotification = `-- name: InsertNotification :exec INSERT INTO notifications (id, user_id, topic, severity, title, body, link, metadata, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) ` type InsertNotificationParams struct { ID pgtype.UUID `json:"id"` UserID pgtype.UUID `json:"user_id"` Topic string `json:"topic"` Severity string `json:"severity"` Title string `json:"title"` Body string `json:"body"` Link *string `json:"link"` Metadata []byte `json:"metadata"` CreatedAt pgtype.Timestamptz `json:"created_at"` } func (q *Queries) InsertNotification(ctx context.Context, arg InsertNotificationParams) error { _, err := q.db.Exec(ctx, insertNotification, arg.ID, arg.UserID, arg.Topic, arg.Severity, arg.Title, arg.Body, arg.Link, arg.Metadata, arg.CreatedAt, ) return err } const listNotificationsByUser = `-- name: ListNotificationsByUser :many SELECT id, user_id, topic, severity, title, body, link, metadata, read_at, created_at FROM notifications WHERE user_id = $1 AND ($2::bool = false OR read_at IS NULL) ORDER BY created_at DESC LIMIT $3 ` type ListNotificationsByUserParams struct { UserID pgtype.UUID `json:"user_id"` Column2 bool `json:"column_2"` Limit int32 `json:"limit"` } func (q *Queries) ListNotificationsByUser(ctx context.Context, arg ListNotificationsByUserParams) ([]Notification, error) { rows, err := q.db.Query(ctx, listNotificationsByUser, arg.UserID, arg.Column2, arg.Limit) if err != nil { return nil, err } defer rows.Close() var items []Notification for rows.Next() { var i Notification if err := rows.Scan( &i.ID, &i.UserID, &i.Topic, &i.Severity, &i.Title, &i.Body, &i.Link, &i.Metadata, &i.ReadAt, &i.CreatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const markAllReadByUser = `-- name: MarkAllReadByUser :exec UPDATE notifications SET read_at = now() WHERE user_id = $1 AND read_at IS NULL ` func (q *Queries) MarkAllReadByUser(ctx context.Context, userID pgtype.UUID) error { _, err := q.db.Exec(ctx, markAllReadByUser, userID) return err } const markRead = `-- name: MarkRead :exec UPDATE notifications SET read_at = now() WHERE id = $1 AND user_id = $2 AND read_at IS NULL ` type MarkReadParams struct { ID pgtype.UUID `json:"id"` UserID pgtype.UUID `json:"user_id"` } func (q *Queries) MarkRead(ctx context.Context, arg MarkReadParams) error { _, err := q.db.Exec(ctx, markRead, arg.ID, arg.UserID) return err }