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

package catalogue

import (
	"context"

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

const createDiskStock = `-- name: CreateDiskStock :one
INSERT INTO disk_stocks (quantity, "fk_idDiskk")
VALUES ($1, $2)
RETURNING id, quantity, "fk_idDiskk"
`

type CreateDiskStockParams struct {
	Quantity  pgtype.Int4 `json:"quantity"`
	FkIdDiskk pgtype.Int4 `json:"fk_idDiskk"`
}

func (q *Queries) CreateDiskStock(ctx context.Context, arg CreateDiskStockParams) (DiskStock, error) {
	row := q.db.QueryRow(ctx, createDiskStock, arg.Quantity, arg.FkIdDiskk)
	var i DiskStock
	err := row.Scan(&i.ID, &i.Quantity, &i.FkIdDiskk)
	return i, err
}

const deleteDiskStock = `-- name: DeleteDiskStock :one
DELETE FROM disk_stocks WHERE id=$1 RETURNING id
`

func (q *Queries) DeleteDiskStock(ctx context.Context, id int32) (int32, error) {
	row := q.db.QueryRow(ctx, deleteDiskStock, id)
	var id_2 int32
	err := row.Scan(&id_2)
	return id_2, err
}

const getDiskStockById = `-- name: GetDiskStockById :one
SELECT id, quantity, "fk_idDiskk" FROM disk_stocks WHERE id=$1 LIMIT 1
`

func (q *Queries) GetDiskStockById(ctx context.Context, id int32) (DiskStock, error) {
	row := q.db.QueryRow(ctx, getDiskStockById, id)
	var i DiskStock
	err := row.Scan(&i.ID, &i.Quantity, &i.FkIdDiskk)
	return i, err
}

const getDiskStocks = `-- name: GetDiskStocks :many
SELECT id, quantity, "fk_idDiskk" FROM disk_stocks
WHERE (
$1::text = '' OR
  "id"::text ILIKE '%' || $1::text || '%' OR
  "quantity"::text ILIKE '%' || $1::text || '%' OR
  "fk_idDiskk"::text ILIKE '%' || $1::text || '%'
)
ORDER BY id LIMIT $3 OFFSET $2
`

type GetDiskStocksParams struct {
	Search string `json:"search"`
	Offset int32  `json:"offset"`
	Limit  int32  `json:"limit"`
}

func (q *Queries) GetDiskStocks(ctx context.Context, arg GetDiskStocksParams) ([]DiskStock, error) {
	rows, err := q.db.Query(ctx, getDiskStocks, arg.Search, arg.Offset, arg.Limit)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []DiskStock
	for rows.Next() {
		var i DiskStock
		if err := rows.Scan(&i.ID, &i.Quantity, &i.FkIdDiskk); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const getDiskStocksByDiskSpec = `-- name: GetDiskStocksByDiskSpec :many
SELECT
  id, quantity, "fk_idDiskk"
FROM
  disk_stocks
WHERE
  "fk_idDiskk" = $1
`

func (q *Queries) GetDiskStocksByDiskSpec(ctx context.Context, fkIdDiskk pgtype.Int4) ([]DiskStock, error) {
	rows, err := q.db.Query(ctx, getDiskStocksByDiskSpec, fkIdDiskk)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []DiskStock
	for rows.Next() {
		var i DiskStock
		if err := rows.Scan(&i.ID, &i.Quantity, &i.FkIdDiskk); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const updateDiskStock = `-- name: UpdateDiskStock :one
UPDATE disk_stocks SET quantity=$2, "fk_idDiskk"=$3 WHERE id=$1 RETURNING id, quantity, "fk_idDiskk"
`

type UpdateDiskStockParams struct {
	ID        int32       `json:"id"`
	Quantity  pgtype.Int4 `json:"quantity"`
	FkIdDiskk pgtype.Int4 `json:"fk_idDiskk"`
}

func (q *Queries) UpdateDiskStock(ctx context.Context, arg UpdateDiskStockParams) (DiskStock, error) {
	row := q.db.QueryRow(ctx, updateDiskStock, arg.ID, arg.Quantity, arg.FkIdDiskk)
	var i DiskStock
	err := row.Scan(&i.ID, &i.Quantity, &i.FkIdDiskk)
	return i, err
}
