package models

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

type ImageVirtualResourceModel struct {
	// request fields
	ImageName types.String   `tfsdk:"image_name"`
	LinkTo    types.Int64    `tfsdk:"link_to"`
	Timeouts  timeouts.Value `tfsdk:"timeouts"`
	// responce fields
	Id                     types.String `tfsdk:"id"`
	LastUpdated            types.String `tfsdk:"last_updated"`
	UNCPath                types.String `tfsdk:"unc_path"`
	CKey                   types.String `tfsdk:"ckey"`
	AccountID              types.Int64  `tfsdk:"account_id"`
	ACL                    types.List   `tfsdk:"acl"`
	Architecture           types.String `tfsdk:"architecture"`
	BootType               types.String `tfsdk:"boot_type"`
	Bootable               types.Bool   `tfsdk:"bootable"`
	CdPresentedTo          types.String `tfsdk:"cd_presented_to"`
	ComputeCIID            types.Int64  `tfsdk:"compute_ci_id"`
	DeletedTime            types.Int64  `tfsdk:"deleted_time"`
	Description            types.String `tfsdk:"desc"`
	Drivers                types.List   `tfsdk:"drivers"`
	Enabled                types.Bool   `tfsdk:"enabled"`
	GID                    types.Int64  `tfsdk:"gid"`
	GUID                   types.Int64  `tfsdk:"guid"`
	History                types.List   `tfsdk:"history"`
	HotResize              types.Bool   `tfsdk:"hot_resize"`
	LastModified           types.Int64  `tfsdk:"last_modified"`
	Milestones             types.Int64  `tfsdk:"milestones"`
	ImageId                types.Int64  `tfsdk:"image_id"`
	ImageType              types.String `tfsdk:"image_type"`
	NetworkInterfaceNaming types.String `tfsdk:"network_interface_naming"`
	Password               types.String `tfsdk:"password"`
	PoolName               types.String `tfsdk:"pool_name"`
	PresentTo              types.Map    `tfsdk:"present_to"`
	ProviderName           types.String `tfsdk:"provider_name"`
	PurgeAttempts          types.Int64  `tfsdk:"purge_attempts"`
	ResID                  types.String `tfsdk:"res_id"`
	RescueCD               types.Bool   `tfsdk:"rescuecd"`
	SepID                  types.Int64  `tfsdk:"sep_id"`
	SharedWith             types.List   `tfsdk:"shared_with"`
	Size                   types.Int64  `tfsdk:"size"`
	SnapshotID             types.String `tfsdk:"snapshot_id"`
	Status                 types.String `tfsdk:"status"`
	TechStatus             types.String `tfsdk:"tech_status"`
	Username               types.String `tfsdk:"username"`
	Version                types.String `tfsdk:"version"`
}

type HistoryInImageVirtualResourceModel struct {
	GUID      types.String `tfsdk:"guid"`
	ID        types.Int64  `tfsdk:"id"`
	Timestamp types.Int64  `tfsdk:"timestamp"`
}
