package models

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

type RecordImageModel struct {
	// request fields
	ImageId  types.Int64    `tfsdk:"image_id"`
	ShowAll  types.Bool     `tfsdk:"show_all"`
	Timeouts timeouts.Value `tfsdk:"timeouts"`
	// responce fields
	Id                     types.String   `tfsdk:"id"`
	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"`
	ComputeCIID            types.Int64    `tfsdk:"compute_ci_id"`
	CdPresentedTo          types.String   `tfsdk:"cd_presented_to"`
	GID                    types.Int64    `tfsdk:"gid"`
	DeletedTime            types.Int64    `tfsdk:"deleted_time"`
	Description            types.String   `tfsdk:"desc"`
	Drivers                types.List     `tfsdk:"drivers"`
	Enabled                types.Bool     `tfsdk:"enabled"`
	GUID                   types.Int64    `tfsdk:"guid"`
	History                []HistoryModel `tfsdk:"history"`
	HotResize              types.Bool     `tfsdk:"hot_resize"`
	LastModified           types.Int64    `tfsdk:"last_modified"`
	LinkTo                 types.Int64    `tfsdk:"link_to"`
	Milestones             types.Int64    `tfsdk:"milestones"`
	ImageName              types.String   `tfsdk:"image_name"`
	ImageType              types.String   `tfsdk:"image_type"`
	Password               types.String   `tfsdk:"password"`
	NetworkInterfaceNaming types.String   `tfsdk:"network_interface_naming"`
	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"`
	SnapshotID             types.String   `tfsdk:"snapshot_id"`
	SharedWith             types.List     `tfsdk:"shared_with"`
	Size                   types.Int64    `tfsdk:"size"`
	Status                 types.String   `tfsdk:"status"`
	TechStatus             types.String   `tfsdk:"tech_status"`
	Username               types.String   `tfsdk:"username"`
	Version                types.String   `tfsdk:"version"`
}

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