package models

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

type ListImagesModel struct {
	// request fields
	SEPID        types.Int64  `tfsdk:"sep_id"`
	ByID         types.Int64  `tfsdk:"by_id"`
	Name         types.String `tfsdk:"name"`
	Status       types.String `tfsdk:"status"`
	Architecture types.String `tfsdk:"architecture"`
	TypeImage    types.String `tfsdk:"type_image"`
	ImageSize    types.Int64  `tfsdk:"image_size"`
	SEPName      types.String `tfsdk:"sep_name"`
	PoolName     types.String `tfsdk:"pool_name"`
	Public       types.Bool   `tfsdk:"public"`
	HotResize    types.Bool   `tfsdk:"hot_resize"`
	Bootable     types.Bool   `tfsdk:"bootable"`
	SortBy       types.String `tfsdk:"sort_by"`
	Page         types.Int64  `tfsdk:"page"`
	Size         types.Int64  `tfsdk:"size"`
	Enabled      types.Bool   `tfsdk:"enabled"`

	// responce fields
	Id         types.String     `tfsdk:"id"`
	Items      []ItemImageModel `tfsdk:"items"`
	EntryCount types.Int64      `tfsdk:"entry_count"`
	Timeouts   timeouts.Value   `tfsdk:"timeouts"`
}

type ItemImageModel struct {
	AccountID              types.Int64  `tfsdk:"account_id"`
	Architecture           types.String `tfsdk:"architecture"`
	BootType               types.String `tfsdk:"boot_type"`
	Bootable               types.Bool   `tfsdk:"bootable"`
	CDROM                  types.Bool   `tfsdk:"cdrom"`
	Description            types.String `tfsdk:"desc"`
	Drivers                types.List   `tfsdk:"drivers"`
	HotResize              types.Bool   `tfsdk:"hot_resize"`
	ImageID                types.Int64  `tfsdk:"image_id"`
	ImageType              types.String `tfsdk:"image_type"`
	LinkTo                 types.Int64  `tfsdk:"link_to"`
	ImageName              types.String `tfsdk:"image_name"`
	PoolName               types.String `tfsdk:"pool_name"`
	SepID                  types.Int64  `tfsdk:"sep_id"`
	Size                   types.Int64  `tfsdk:"size"`
	Status                 types.String `tfsdk:"status"`
	NetworkInterfaceNaming types.String `tfsdk:"network_interface_naming"`
	Username               types.String `tfsdk:"username"`
	Virtual                types.Bool   `tfsdk:"virtual"`
}
