package models

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

type DataSourceDiskListUnattachedModel struct {
	// request fields
	ByID        types.Int64    `tfsdk:"by_id"`
	AccountName types.String   `tfsdk:"account_name"`
	DiskMaxSize types.Int64    `tfsdk:"disk_max_size"`
	Status      types.String   `tfsdk:"status"`
	AccountID   types.Int64    `tfsdk:"account_id"`
	SepID       types.Int64    `tfsdk:"sep_id"`
	PoolName    types.String   `tfsdk:"pool_name"`
	Type        types.String   `tfsdk:"type"`
	SortBy      types.String   `tfsdk:"sort_by"`
	Page        types.Int64    `tfsdk:"page"`
	Size        types.Int64    `tfsdk:"size"`
	Timeouts    timeouts.Value `tfsdk:"timeouts"`

	// response fields
	Id         types.String              `tfsdk:"id"`
	Items      []ItemDiskUnattachedModel `tfsdk:"items"`
	EntryCount types.Int64               `tfsdk:"entry_count"`
}

type ItemDiskUnattachedModel struct {
	CKey                types.String  `tfsdk:"ckey"`
	Meta                types.List    `tfsdk:"meta"`
	AccountID           types.Int64   `tfsdk:"account_id"`
	AccountName         types.String  `tfsdk:"account_name"`
	ACL                 types.String  `tfsdk:"acl"`
	BootPartition       types.Int64   `tfsdk:"boot_partition"`
	CreatedTime         types.Int64   `tfsdk:"created_time"`
	DeletedTime         types.Int64   `tfsdk:"deleted_time"`
	Description         types.String  `tfsdk:"desc"`
	DestructionTime     types.Int64   `tfsdk:"destruction_time"`
	DiskPath            types.String  `tfsdk:"disk_path"`
	GID                 types.Int64   `tfsdk:"gid"`
	GUID                types.Int64   `tfsdk:"guid"`
	DiskId              types.Int64   `tfsdk:"disk_id"`
	ImageID             types.Int64   `tfsdk:"image_id"`
	Images              types.List    `tfsdk:"images"`
	IOTune              types.Object  `tfsdk:"iotune"`
	Iqn                 types.String  `tfsdk:"iqn"`
	Login               types.String  `tfsdk:"login"`
	Milestones          types.Int64   `tfsdk:"milestones"`
	DiskName            types.String  `tfsdk:"disk_name"`
	Order               types.Int64   `tfsdk:"order"`
	Params              types.String  `tfsdk:"params"`
	ParentID            types.Int64   `tfsdk:"parent_id"`
	Passwd              types.String  `tfsdk:"passwd"`
	PCISlot             types.Int64   `tfsdk:"pci_slot"`
	Pool                types.String  `tfsdk:"pool"`
	PurgeAttempts       types.Int64   `tfsdk:"purge_attempts"`
	PurgeTime           types.Int64   `tfsdk:"purge_time"`
	RealityDeviceNumber types.Int64   `tfsdk:"reality_device_number"`
	ReferenceID         types.String  `tfsdk:"reference_id"`
	ResID               types.String  `tfsdk:"res_id"`
	ResName             types.String  `tfsdk:"res_name"`
	Role                types.String  `tfsdk:"role"`
	SepID               types.Int64   `tfsdk:"sep_id"`
	Shareable           types.Bool    `tfsdk:"shareable"`
	SizeMax             types.Int64   `tfsdk:"size_max"`
	SizeUsed            types.Float64 `tfsdk:"size_used"`
	Snapshots           types.List    `tfsdk:"snapshots"`
	Status              types.String  `tfsdk:"status"`
	TechStatus          types.String  `tfsdk:"tech_status"`
	Type                types.String  `tfsdk:"type"`
	VMID                types.Int64   `tfsdk:"vmid"`
}
