package usecase

import (
	"context"

	"haixun-backend/internal/model/setting/domain/entity"
)

type UpsertRequest struct {
	Scope   string
	ScopeID string
	Key     string
	Value   map[string]any
	Version int
}

type UseCase interface {
	List(ctx context.Context, scope, scopeID string, page, pageSize int64) ([]*entity.Setting, int64, int64, int64, error)
	Get(ctx context.Context, scope, scopeID, key string) (*entity.Setting, error)
	Upsert(ctx context.Context, req UpsertRequest) (*entity.Setting, error)
	Delete(ctx context.Context, scope, scopeID, key string) error
}
