// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0
// source: attachments.sql

package repository

import (
	"context"

	"github.com/jackc/pgx/v5/pgtype"
)

const createAttachment = `-- name: CreateAttachment :one
INSERT INTO event_attachments (id, event_id, file_url)
VALUES ($1, $2, $3)
RETURNING id, event_id, file_url
`

type CreateAttachmentParams struct {
	ID      pgtype.UUID `json:"id"`
	EventID pgtype.UUID `json:"event_id"`
	FileUrl string      `json:"file_url"`
}

func (q *Queries) CreateAttachment(ctx context.Context, arg CreateAttachmentParams) (EventAttachment, error) {
	row := q.db.QueryRow(ctx, createAttachment, arg.ID, arg.EventID, arg.FileUrl)
	var i EventAttachment
	err := row.Scan(&i.ID, &i.EventID, &i.FileUrl)
	return i, err
}

const deleteAttachment = `-- name: DeleteAttachment :exec
DELETE FROM event_attachments WHERE id = $1 AND event_id = $2
`

type DeleteAttachmentParams struct {
	ID      pgtype.UUID `json:"id"`
	EventID pgtype.UUID `json:"event_id"`
}

func (q *Queries) DeleteAttachment(ctx context.Context, arg DeleteAttachmentParams) error {
	_, err := q.db.Exec(ctx, deleteAttachment, arg.ID, arg.EventID)
	return err
}

const listAttachmentsByEvent = `-- name: ListAttachmentsByEvent :many
SELECT id, event_id, file_url
FROM event_attachments
WHERE event_id = $1
ORDER BY id ASC
`

func (q *Queries) ListAttachmentsByEvent(ctx context.Context, eventID pgtype.UUID) ([]EventAttachment, error) {
	rows, err := q.db.Query(ctx, listAttachmentsByEvent, eventID)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	items := []EventAttachment{}
	for rows.Next() {
		var i EventAttachment
		if err := rows.Scan(&i.ID, &i.EventID, &i.FileUrl); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}
