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

package generated

import (
	"context"

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

const createFuncao = `-- name: CreateFuncao :one
INSERT INTO funcoes_profissionais (nome)
VALUES ($1)
RETURNING id, nome, criado_em, atualizado_em
`

func (q *Queries) CreateFuncao(ctx context.Context, nome string) (FuncoesProfissionai, error) {
	row := q.db.QueryRow(ctx, createFuncao, nome)
	var i FuncoesProfissionai
	err := row.Scan(
		&i.ID,
		&i.Nome,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}

const deleteFuncao = `-- name: DeleteFuncao :exec
DELETE FROM funcoes_profissionais
WHERE id = $1
`

func (q *Queries) DeleteFuncao(ctx context.Context, id pgtype.UUID) error {
	_, err := q.db.Exec(ctx, deleteFuncao, id)
	return err
}

const getFuncaoByID = `-- name: GetFuncaoByID :one
SELECT id, nome, criado_em, atualizado_em FROM funcoes_profissionais
WHERE id = $1 LIMIT 1
`

func (q *Queries) GetFuncaoByID(ctx context.Context, id pgtype.UUID) (FuncoesProfissionai, error) {
	row := q.db.QueryRow(ctx, getFuncaoByID, id)
	var i FuncoesProfissionai
	err := row.Scan(
		&i.ID,
		&i.Nome,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}

const listFuncoes = `-- name: ListFuncoes :many
SELECT id, nome, criado_em, atualizado_em FROM funcoes_profissionais
ORDER BY nome
`

func (q *Queries) ListFuncoes(ctx context.Context) ([]FuncoesProfissionai, error) {
	rows, err := q.db.Query(ctx, listFuncoes)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []FuncoesProfissionai
	for rows.Next() {
		var i FuncoesProfissionai
		if err := rows.Scan(
			&i.ID,
			&i.Nome,
			&i.CriadoEm,
			&i.AtualizadoEm,
		); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const updateFuncao = `-- name: UpdateFuncao :one
UPDATE funcoes_profissionais
SET nome = $2, atualizado_em = NOW()
WHERE id = $1
RETURNING id, nome, criado_em, atualizado_em
`

type UpdateFuncaoParams struct {
	ID   pgtype.UUID `json:"id"`
	Nome string      `json:"nome"`
}

func (q *Queries) UpdateFuncao(ctx context.Context, arg UpdateFuncaoParams) (FuncoesProfissionai, error) {
	row := q.db.QueryRow(ctx, updateFuncao, arg.ID, arg.Nome)
	var i FuncoesProfissionai
	err := row.Scan(
		&i.ID,
		&i.Nome,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}
