package app

import (
	"context"

	"github.com/tidbcloud/AgentTeam/internal/extension/providers/searchengine/runtime"
	storeapp "github.com/tidbcloud/AgentTeam/internal/store/app"
)

func (fake *fakeStore) GetSearchEngineConnectionForUser(
	_ context.Context,
	_ string,
	_ string,
	installationID string,
) (storeapp.SearchEngineConnectionView, error) {
	fake.mu.Lock()
	defer fake.mu.Unlock()
	fake.lastSearchInstallationID = installationID
	fake.lastSearchOperation = "get"
	return fake.searchEngineConnection, fake.searchEngineErr
}

func (fake *fakeStore) UpsertSearchEngineConnectionForUser(
	_ context.Context,
	_ string,
	_ string,
	installationID string,
	params storeapp.UpsertSearchEngineConnectionParams,
) (storeapp.SearchEngineConnectionView, error) {
	fake.mu.Lock()
	defer fake.mu.Unlock()
	fake.lastSearchInstallationID = installationID
	fake.lastSearchOperation = "put"
	fake.lastSearchParams = params
	return fake.searchEngineConnection, fake.searchEngineErr
}

func (fake *fakeStore) DeleteSearchEngineConnectionForUser(
	_ context.Context,
	_ string,
	_ string,
	installationID string,
) (storeapp.SearchEngineConnectionView, error) {
	fake.mu.Lock()
	defer fake.mu.Unlock()
	fake.lastSearchInstallationID = installationID
	fake.lastSearchOperation = "delete"
	return fake.searchEngineConnection, fake.searchEngineErr
}

func (fake *fakeStore) ResolveSearchEngineRuntimeConnection(
	_ context.Context,
	_ string,
	installationID string,
	_ string,
) (runtime.RuntimeConnection, error) {
	fake.mu.Lock()
	defer fake.mu.Unlock()
	fake.lastSearchInstallationID = installationID
	return fake.searchEngineRuntime, fake.searchEngineErr
}
