package models

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

type DataSourceAccountComputesListModel struct {
	// required fields
	AccountID types.Int64 `tfsdk:"account_id"`

	// optional fields
	ComputeID  types.Int64    `tfsdk:"compute_id"`
	Name       types.String   `tfsdk:"name"`
	RGName     types.String   `tfsdk:"rg_name"`
	RGID       types.Int64    `tfsdk:"rg_id"`
	TechStatus types.String   `tfsdk:"tech_status"`
	IPAddress  types.String   `tfsdk:"ip_address"`
	ExtNetName types.String   `tfsdk:"extnet_name"`
	ExtNetID   types.Int64    `tfsdk:"extnet_id"`
	Page       types.Int64    `tfsdk:"page"`
	Size       types.Int64    `tfsdk:"size"`
	Timeouts   timeouts.Value `tfsdk:"timeouts"`
	SortBy     types.String   `tfsdk:"sort_by"`

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

type ItemComputeModel struct {
	AccountID      types.Int64  `tfsdk:"account_id"`
	AccountName    types.String `tfsdk:"account_name"`
	CPUs           types.Int64  `tfsdk:"cpus"`
	CreatedBy      types.String `tfsdk:"created_by"`
	CreatedTime    types.Int64  `tfsdk:"created_time"`
	DeletedBy      types.String `tfsdk:"deleted_by"`
	DeletedTime    types.Int64  `tfsdk:"deleted_time"`
	ComputeID      types.Int64  `tfsdk:"compute_id"`
	ComputeName    types.String `tfsdk:"compute_name"`
	RAM            types.Int64  `tfsdk:"ram"`
	Registered     types.Bool   `tfsdk:"registered"`
	RGID           types.Int64  `tfsdk:"rg_id"`
	RGName         types.String `tfsdk:"rg_name"`
	Status         types.String `tfsdk:"status"`
	TechStatus     types.String `tfsdk:"tech_status"`
	TotalDisksSize types.Int64  `tfsdk:"total_disks_size"`
	UpdatedBy      types.String `tfsdk:"updated_by"`
	UpdatedTime    types.Int64  `tfsdk:"updated_time"`
	UserManaged    types.Bool   `tfsdk:"user_managed"`
	VINSConnected  types.Int64  `tfsdk:"vins_connected"`
}
