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.
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package sinks
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/ejr/feedkit/config"
|
|
"gitea.maximumdirect.net/ejr/feedkit/event"
|
|
)
|
|
|
|
func TestPostgresFactoryReturnsWorkingFactory(t *testing.T) {
|
|
factory := PostgresFactory(testPostgresSchema())
|
|
if factory == nil {
|
|
t.Fatalf("PostgresFactory() returned nil")
|
|
}
|
|
if _, err := factory(config.SinkConfig{}); err == nil {
|
|
t.Fatalf("factory(config) expected parameter validation error")
|
|
}
|
|
}
|
|
|
|
func testPostgresSchema() PostgresSchema {
|
|
return PostgresSchema{
|
|
Tables: []PostgresTable{
|
|
{
|
|
Name: "events",
|
|
Columns: []PostgresColumn{
|
|
{Name: "event_id", Type: "TEXT", Nullable: false},
|
|
{Name: "emitted_at", Type: "TIMESTAMPTZ", Nullable: false},
|
|
},
|
|
PrimaryKey: []string{"event_id"},
|
|
PruneColumn: "emitted_at",
|
|
},
|
|
},
|
|
MapEvent: func(_ context.Context, e event.Event) ([]PostgresWrite, error) {
|
|
return []PostgresWrite{
|
|
{
|
|
Table: "events",
|
|
Values: map[string]any{
|
|
"event_id": e.ID,
|
|
"emitted_at": e.EmittedAt,
|
|
},
|
|
},
|
|
}, nil
|
|
},
|
|
}
|
|
}
|