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

package generated

import (
	"context"

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

const createUsuario = `-- name: CreateUsuario :one
INSERT INTO usuarios (email, senha_hash, role)
VALUES ($1, $2, $3)
RETURNING id, email, senha_hash, role, ativo, criado_em, atualizado_em
`

type CreateUsuarioParams struct {
	Email     string `json:"email"`
	SenhaHash string `json:"senha_hash"`
	Role      string `json:"role"`
}

func (q *Queries) CreateUsuario(ctx context.Context, arg CreateUsuarioParams) (Usuario, error) {
	row := q.db.QueryRow(ctx, createUsuario, arg.Email, arg.SenhaHash, arg.Role)
	var i Usuario
	err := row.Scan(
		&i.ID,
		&i.Email,
		&i.SenhaHash,
		&i.Role,
		&i.Ativo,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}

const deleteUsuario = `-- name: DeleteUsuario :exec
DELETE FROM usuarios
WHERE id = $1
`

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

const getUsuarioByEmail = `-- name: GetUsuarioByEmail :one
SELECT id, email, senha_hash, role, ativo, criado_em, atualizado_em FROM usuarios
WHERE email = $1 LIMIT 1
`

func (q *Queries) GetUsuarioByEmail(ctx context.Context, email string) (Usuario, error) {
	row := q.db.QueryRow(ctx, getUsuarioByEmail, email)
	var i Usuario
	err := row.Scan(
		&i.ID,
		&i.Email,
		&i.SenhaHash,
		&i.Role,
		&i.Ativo,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}

const getUsuarioByID = `-- name: GetUsuarioByID :one
SELECT id, email, senha_hash, role, ativo, criado_em, atualizado_em FROM usuarios
WHERE id = $1 LIMIT 1
`

func (q *Queries) GetUsuarioByID(ctx context.Context, id pgtype.UUID) (Usuario, error) {
	row := q.db.QueryRow(ctx, getUsuarioByID, id)
	var i Usuario
	err := row.Scan(
		&i.ID,
		&i.Email,
		&i.SenhaHash,
		&i.Role,
		&i.Ativo,
		&i.CriadoEm,
		&i.AtualizadoEm,
	)
	return i, err
}
