package store

import (
	"context"

	v1 "github.com/pingcap-inc/pchub/model/v1"
	bfao "github.com/pingcap-inc/pchub/model/v1/fao/billing"
)

type CloudResourceStore interface {
	ListAll(ctx context.Context, preloads []string) (*[]v1.CloudResource, error)
	GetReourcesWithoutBilling(ctx context.Context, fao *bfao.BillingFAO, dptIds *[]string, off, lit int) (*[]v1.CloudResource, error)
	GetByIDs(ctx context.Context, ids []uint64) (*[]v1.CloudResource, error)
	GetTotal(ctx context.Context, fao *bfao.BillingFAO, dptIds *[]string) (int64, error)
	Create(ctx context.Context, cloudResource *v1.CloudResource) (*v1.CloudResource, error)
	Update(ctx context.Context, cloudResource *v1.CloudResource) error
	Get(ctx context.Context, cloudResource *v1.CloudResource) (*v1.CloudResource, error)
	Delete(ctx context.Context, cloudResource *v1.CloudResource) error
	Search(ctx context.Context, searchInfo string) ([]*v1.CloudResource, error)
	ListByProvider(_ context.Context, name string) ([]*v1.CloudResource, error)
	ListByProviderWithProd(_ context.Context, provider string) ([]*v1.CloudResource, error)
}
