package models

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

type DataSourceDPDKListModel struct {
	Timeouts timeouts.Value `tfsdk:"timeouts"`

	// optional attributes
	ByID       types.Int64  `tfsdk:"by_id"`
	GID        types.Int64  `tfsdk:"gid"`
	Name       types.String `tfsdk:"name"`
	Desc       types.String `tfsdk:"desc"`
	Status     types.String `tfsdk:"status"`
	ComputeIDs types.List   `tfsdk:"compute_ids"`
	SortBy     types.String `tfsdk:"sort_by"`
	Page       types.Int64  `tfsdk:"page"`
	Size       types.Int64  `tfsdk:"size"`

	// computed attributes
	Id         types.String        `tfsdk:"id"`
	Items      []ItemDPDKListModel `tfsdk:"items"`
	EntryCount types.Int64         `tfsdk:"entry_count"`
}

type ItemDPDKListModel struct {
	DPDKID        types.Int64  `tfsdk:"dpdk_id"`
	AccountAccess types.List   `tfsdk:"account_access"`
	CreatedTime   types.Int64  `tfsdk:"created_time"`
	Desc          types.String `tfsdk:"desc"`
	GID           types.Int64  `tfsdk:"gid"`
	GUID          types.Int64  `tfsdk:"guid"`
	Name          types.String `tfsdk:"name"`
	RGAccess      types.List   `tfsdk:"rg_access"`
	Status        types.String `tfsdk:"status"`
	OVSBridge     types.String `tfsdk:"ovs_bridge"`
	VlanID        types.Int64  `tfsdk:"vlan_id"`
	ComputeIDs    types.List   `tfsdk:"compute_ids"`
	UpdatedTime   types.Int64  `tfsdk:"updated_time"`
}
