// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.31.1
// source: audit_log.sql

package dbq

import (
	"context"

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

const listAuditLog = `-- name: ListAuditLog :many
SELECT id, actor_id, target_id, action, metadata, created_at FROM audit_log
 ORDER BY created_at DESC
 LIMIT $1 OFFSET $2
`

type ListAuditLogParams struct {
	Limit  int32
	Offset int32
}

func (q *Queries) ListAuditLog(ctx context.Context, arg ListAuditLogParams) ([]AuditLog, error) {
	rows, err := q.db.Query(ctx, listAuditLog, arg.Limit, arg.Offset)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []AuditLog
	for rows.Next() {
		var i AuditLog
		if err := rows.Scan(
			&i.ID,
			&i.ActorID,
			&i.TargetID,
			&i.Action,
			&i.Metadata,
			&i.CreatedAt,
		); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const writeAuditLog = `-- name: WriteAuditLog :exec
INSERT INTO audit_log (actor_id, target_id, action, metadata)
VALUES ($1, $2, $3, $4)
`

type WriteAuditLogParams struct {
	ActorID  pgtype.UUID
	TargetID pgtype.UUID
	Action   string
	Metadata []byte
}

func (q *Queries) WriteAuditLog(ctx context.Context, arg WriteAuditLogParams) error {
	_, err := q.db.Exec(ctx, writeAuditLog,
		arg.ActorID,
		arg.TargetID,
		arg.Action,
		arg.Metadata,
	)
	return err
}
