package models

import (
	"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
	"github.com/hashicorp/terraform-plugin-framework/types"
)

type ListVGPUsModel struct {
	// request fields
	ComputeID      types.Int64    `tfsdk:"compute_id"`
	GPUID          types.Int64    `tfsdk:"gpu_id"`
	Type           types.String   `tfsdk:"type"`
	Status         types.String   `tfsdk:"status"`
	SortBy         types.String   `tfsdk:"sort_by"`
	Page           types.Int64    `tfsdk:"page"`
	Size           types.Int64    `tfsdk:"size"`
	IncludeDeleted types.Bool     `tfsdk:"includedeleted"`
	Timeouts       timeouts.Value `tfsdk:"timeouts"`
	// response fields
	Id         types.String `tfsdk:"id"`
	Items      []ItemVGPU   `tfsdk:"items"`
	EntryCount types.Int64  `tfsdk:"entry_count"`
}

type ItemVGPU struct {
	AccountID      types.Int64  `tfsdk:"account_id"`
	CreatedTime    types.Int64  `tfsdk:"created_time"`
	DeletedTime    types.Int64  `tfsdk:"deleted_time"`
	GID            types.Int64  `tfsdk:"gid"`
	GUID           types.Int64  `tfsdk:"guid"`
	ID             types.Int64  `tfsdk:"vgpu_id"`
	LastClaimedBy  types.Int64  `tfsdk:"last_claimed_by"`
	LastUpdateTime types.Int64  `tfsdk:"last_update_time"`
	Mode           types.String `tfsdk:"mode"`
	PCISlot        types.Int64  `tfsdk:"pci_slot"`
	PGPUID         types.Int64  `tfsdk:"pgpuid"`
	ProfileID      types.Int64  `tfsdk:"profile_id"`
	RAM            types.Int64  `tfsdk:"ram"`
	ReferenceID    types.String `tfsdk:"reference_id"`
	RGID           types.Int64  `tfsdk:"rg_id"`
	Status         types.String `tfsdk:"status"`
	Type           types.String `tfsdk:"type"`
	VMID           types.Int64  `tfsdk:"vm_id"`
}
