go-tools/cmd/ev/svc.es.go

55 lines
1.0 KiB
Go

package main
import (
"context"
"go.sour.is/pkg/env"
"go.sour.is/pkg/lg"
"go.sour.is/pkg/service"
"go.uber.org/multierr"
"go.sour.is/ev"
diskstore "go.sour.is/ev/driver/disk-store"
memstore "go.sour.is/ev/driver/mem-store"
"go.sour.is/ev/driver/projecter"
resolvelinks "go.sour.is/ev/driver/resolve-links"
"go.sour.is/ev/driver/streamer"
"go.sour.is/ev/event"
gql_ev "go.sour.is/ev/gql"
)
var _ = apps.Register(10, func(ctx context.Context, svc *service.Harness) error {
ctx, span := lg.Span(ctx)
defer span.End()
// setup eventstore
err := multierr.Combine(
ev.Init(ctx),
event.Init(ctx),
diskstore.Init(ctx),
memstore.Init(ctx),
)
if err != nil {
span.RecordError(err)
return err
}
eventstore, err := ev.Open(
ctx,
env.Default("EV_DATA", "mem:"),
resolvelinks.New(),
streamer.New(ctx),
projecter.New(
ctx,
projecter.DefaultProjection,
),
)
if err != nil {
span.RecordError(err)
return err
}
svc.Add(eventstore, &gql_ev.EventStore{EventStore: eventstore})
return nil
})