package repository

import (
	"context"
	"github.com/ocdp/cluster-service/internal/domain/entity"
)

// InstanceRepository 实例仓储接口（Output Port）
type InstanceRepository interface {
	// Create 创建实例
	Create(ctx context.Context, instance *entity.Instance) error

	// GetByID 根据 ID 获取实例
	GetByID(ctx context.Context, id string) (*entity.Instance, error)

	// GetByClusterAndName 根据集群 ID 和名称获取实例
	GetByClusterAndName(ctx context.Context, clusterID, name string) (*entity.Instance, error)

	// Update 更新实例
	Update(ctx context.Context, instance *entity.Instance) error

	// Delete 删除实例
	Delete(ctx context.Context, id string) error

	// ListByCluster 列出指定集群的所有实例
	ListByCluster(ctx context.Context, clusterID string) ([]*entity.Instance, error)

	// List 列出所有实例
	List(ctx context.Context) ([]*entity.Instance, error)
}
