// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.27.0
// source: user.sql

package queries

import (
	"context"
)

const createUser = `-- name: CreateUser :exec
INSERT INTO users (id, email, first_name, last_name) VALUES (NULL, ?, ?, ?)
`

type CreateUserParams struct {
	Email     string
	FirstName string
	LastName  string
}

func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) error {
	_, err := q.db.ExecContext(ctx, createUser, arg.Email, arg.FirstName, arg.LastName)
	return err
}

const getUserId = `-- name: GetUserId :one
SELECT id, first_name, last_name, email FROM users
WHERE id = ? LIMIT 1
`

func (q *Queries) GetUserId(ctx context.Context, id int64) (User, error) {
	row := q.db.QueryRowContext(ctx, getUserId, id)
	var i User
	err := row.Scan(
		&i.ID,
		&i.FirstName,
		&i.LastName,
		&i.Email,
	)
	return i, err
}

const getUsers = `-- name: GetUsers :many
SELECT id, first_name, last_name, email FROM users
`

func (q *Queries) GetUsers(ctx context.Context) ([]User, error) {
	rows, err := q.db.QueryContext(ctx, getUsers)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []User
	for rows.Next() {
		var i User
		if err := rows.Scan(
			&i.ID,
			&i.FirstName,
			&i.LastName,
			&i.Email,
		); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Close(); err != nil {
		return nil, err
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}