package models

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

type DataSourceRGListVinsModel struct {
	// request required fields
	RGID types.Int64 `tfsdk:"rg_id"`

	// request optional fields
	Name      types.String   `tfsdk:"name"`
	AccountID types.Int64    `tfsdk:"account_id"`
	ExtIP     types.String   `tfsdk:"ext_ip"`
	VINSID    types.Int64    `tfsdk:"vins_id"`
	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      []ItemsRGListVinsModel `tfsdk:"items"`
	EntryCount types.Int64            `tfsdk:"entry_count"`
}

type ItemsRGListVinsModel struct {
	AccountID   types.Int64  `tfsdk:"account_id"`
	AccountName types.String `tfsdk:"account_name"`
	Computes    types.Int64  `tfsdk:"computes"`
	CreatedBy   types.String `tfsdk:"created_by"`
	CreatedTime types.Int64  `tfsdk:"created_time"`
	DeletedBy   types.String `tfsdk:"deleted_by"`
	DeletedTime types.Int64  `tfsdk:"deleted_time"`
	ExternalIP  types.String `tfsdk:"external_ip"`
	ExtnetID    types.Int64  `tfsdk:"extnet_id"`
	FreeIPs     types.Int64  `tfsdk:"free_ips"`
	ID          types.Int64  `tfsdk:"id"`
	Name        types.String `tfsdk:"name"`
	Network     types.String `tfsdk:"network"`
	PriVNFDevID types.Int64  `tfsdk:"pri_vnf_dev_id"`
	RGID        types.Int64  `tfsdk:"rg_id"`
	RGName      types.String `tfsdk:"rg_name"`
	Status      types.String `tfsdk:"status"`
	UpdatedBy   types.String `tfsdk:"updated_by"`
	UpdatedTime types.Int64  `tfsdk:"updated_time"`
}
