Remove global Postgres schema registration in favor of explicit schema-aware sink factory wiring, and update weatherfeeder to register the Postgres sink explicitly. Add optional per-source HTTP timeout and response body limit overrides while keeping feedkit defaults. Remove remaining legacy source/config compatibility surfaces, including singular kind support and old source registry/type aliases, and migrate weatherfeeder sources to plural `Kinds()` metadata. Clean up related docs, tests, and sample config to match the new Postgres, HTTP, and NATS configuration model.
36 lines
1020 B
Go
36 lines
1020 B
Go
package sinks
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"gitea.maximumdirect.net/ejr/feedkit/config"
|
|
)
|
|
|
|
// requireStringParam returns a non-empty string sink param.
|
|
//
|
|
// This helper is intentionally local to sinks rather than config so
|
|
// driver-specific validation stays close to the adapters that use it.
|
|
func requireStringParam(cfg config.SinkConfig, key string) (string, error) {
|
|
v, ok := cfg.Params[key]
|
|
if !ok {
|
|
return "", fmt.Errorf("sink %q: params.%s is required", cfg.Name, key)
|
|
}
|
|
s, ok := v.(string)
|
|
if !ok {
|
|
return "", fmt.Errorf("sink %q: params.%s must be a string", cfg.Name, key)
|
|
}
|
|
if strings.TrimSpace(s) == "" {
|
|
return "", fmt.Errorf("sink %q: params.%s cannot be empty", cfg.Name, key)
|
|
}
|
|
return s, nil
|
|
}
|
|
|
|
// PostgresFactory returns a sink factory that builds the built-in Postgres sink
|
|
// using the provided downstream schema definition.
|
|
func PostgresFactory(schema PostgresSchema) Factory {
|
|
return func(cfg config.SinkConfig) (Sink, error) {
|
|
return NewPostgresSinkFromConfig(cfg, schema)
|
|
}
|
|
}
|