package models

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

type DataSourceK8CIListModel struct {
	// request fields
	ByID            types.Int64    `tfsdk:"by_id"`
	Name            types.String   `tfsdk:"name"`
	Status          types.String   `tfsdk:"status"`
	WorkerDriver    types.String   `tfsdk:"worker_driver"`
	MasterDriver    types.String   `tfsdk:"master_driver"`
	NetworkPlugin   types.String   `tfsdk:"network_plugin"`
	IncludeDisabled types.Bool     `tfsdk:"include_disabled"`
	Page            types.Int64    `tfsdk:"page"`
	SortBy          types.String   `tfsdk:"sort_by"`
	Size            types.Int64    `tfsdk:"size"`
	Timeouts        timeouts.Value `tfsdk:"timeouts"`

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

type ItemK8ciModel struct {
	CreatedTime    types.Int64  `tfsdk:"created_time"`
	Description    types.String `tfsdk:"desc"`
	GID            types.Int64  `tfsdk:"gid"`
	GUID           types.Int64  `tfsdk:"guid"`
	K8ciID         types.Int64  `tfsdk:"k8ci_id"`
	LBImageID      types.Int64  `tfsdk:"lb_image_id"`
	MasterDriver   types.String `tfsdk:"master_driver"`
	MasterImageId  types.Int64  `tfsdk:"master_image_id"`
	MaxMasterCount types.Int64  `tfsdk:"max_master_count"`
	MaxWorkerCount types.Int64  `tfsdk:"max_worker_count"`
	Name           types.String `tfsdk:"name"`
	SharedWith     types.List   `tfsdk:"shared_with"`
	Status         types.String `tfsdk:"status"`
	Version        types.String `tfsdk:"version"`
	WorkerDriver   types.String `tfsdk:"worker_driver"`
	WorkerImageId  types.Int64  `tfsdk:"worker_image_id"`
}
