Files
Memoh/internal/searchproviders/types.go
T
BBQ bf0eeb0e80 feat(search): add 8 new search providers (#135)
* feat(search): add Sogou search provider

* fix(search): use new endpoint and API version for sogou

* feat(search): add Serper, SearXNG, Jina, Exa, Bocha, DuckDuckGo search providers

Add six new search provider integrations:
- Serper: Google search via Serper API
- SearXNG: Self-hosted meta search engine
- Jina: Jina AI search API
- Exa: Exa neural search API
- Bocha: Bocha AI web search
- DuckDuckGo: DuckDuckGo HTML search (no API key required)

Each provider includes backend implementation, config schema,
i18n entries, and Vue settings component.

* feat(search): add Yandex search provider

Add Yandex search provider with XML response parsing and
configurable search type (RU/TR/COM).

---------

Co-authored-by: Menci <mencici@msn.com>
2026-02-27 00:00:44 +08:00

61 lines
1.8 KiB
Go

package searchproviders
import "time"
type ProviderName string
const (
ProviderBrave ProviderName = "brave"
ProviderBing ProviderName = "bing"
ProviderGoogle ProviderName = "google"
ProviderTavily ProviderName = "tavily"
ProviderSogou ProviderName = "sogou"
ProviderSerper ProviderName = "serper"
ProviderSearXNG ProviderName = "searxng"
ProviderJina ProviderName = "jina"
ProviderExa ProviderName = "exa"
ProviderBocha ProviderName = "bocha"
ProviderDuckDuckGo ProviderName = "duckduckgo"
ProviderYandex ProviderName = "yandex"
)
type ProviderConfigSchema struct {
Fields map[string]ProviderFieldSchema `json:"fields"`
}
type ProviderFieldSchema struct {
Type string `json:"type"`
Title string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
Required bool `json:"required,omitempty"`
Enum []string `json:"enum,omitempty"`
Example any `json:"example,omitempty"`
}
type ProviderMeta struct {
Provider string `json:"provider"`
DisplayName string `json:"display_name"`
ConfigSchema ProviderConfigSchema `json:"config_schema"`
}
type CreateRequest struct {
Name string `json:"name"`
Provider ProviderName `json:"provider"`
Config map[string]any `json:"config,omitempty"`
}
type UpdateRequest struct {
Name *string `json:"name,omitempty"`
Provider *ProviderName `json:"provider,omitempty"`
Config map[string]any `json:"config,omitempty"`
}
type GetResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Provider string `json:"provider"`
Config map[string]any `json:"config,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}