service

package
v1.62.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2024 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Closer added in v1.23.0

type Closer interface {
	Close(ctx context.Context) error
}

Closer defines the required methods for a closable resource

type DatsetAPIStore

type DatsetAPIStore struct {
	store.MongoDB
	store.GraphDB
}

DatsetAPIStore is a wrapper which embeds Neo4j Mongo structs which between them satisfy the store.Storer interface.

type ExternalServiceList

type ExternalServiceList struct {
	GenerateDownloadsProducer bool
	Graph                     bool
	HealthCheck               bool
	MongoDB                   bool
	Init                      Initialiser
}

ExternalServiceList holds the initialiser and initialisation state of external services.

func NewServiceList

func NewServiceList(initialiser Initialiser) *ExternalServiceList

NewServiceList creates a new service list with the provided initialiser

func (*ExternalServiceList) GetGraphDB

func (e *ExternalServiceList) GetGraphDB(ctx context.Context) (store.GraphDB, Closer, error)

GetGraphDB returns a graphDB (only if observation and private endpoint are enabled)

func (*ExternalServiceList) GetHTTPServer

func (e *ExternalServiceList) GetHTTPServer(bindAddr string, router http.Handler) HTTPServer

GetHTTPServer creates an http server

func (*ExternalServiceList) GetHealthCheck

func (e *ExternalServiceList) GetHealthCheck(cfg *config.Configuration, buildTime, gitCommit, version string) (HealthChecker, error)

GetHealthCheck creates a healthcheck with versionInfo and sets the HealthCheck flag to true

func (*ExternalServiceList) GetMongoDB

GetMongoDB returns a mongodb health client and dataset mongo object

func (*ExternalServiceList) GetProducer

func (e *ExternalServiceList) GetProducer(ctx context.Context, cfg *config.Configuration, topic string) (kafkaProducer kafka.IProducer, err error)

GetProducer returns a kafka producer, which might not be initialised yet.

type HTTPServer

type HTTPServer interface {
	ListenAndServe() error
	Shutdown(ctx context.Context) error
}

HTTPServer defines the required methods from the HTTP server

type HealthChecker

type HealthChecker interface {
	Handler(w http.ResponseWriter, req *http.Request)
	Start(ctx context.Context)
	Stop()
	AddCheck(name string, checker healthcheck.Checker) (err error)
}

HealthChecker defines the required methods from Healthcheck

type Init

type Init struct{}

Init implements the Initialiser interface to initialise dependencies

func (*Init) DoGetGraphDB

func (e *Init) DoGetGraphDB(ctx context.Context) (store.GraphDB, Closer, error)

DoGetGraphDB creates a new GraphDB

func (*Init) DoGetHTTPServer

func (e *Init) DoGetHTTPServer(bindAddr string, router http.Handler) HTTPServer

DoGetHTTPServer creates an HTTP Server with the provided bind address and router

func (*Init) DoGetHealthCheck

func (e *Init) DoGetHealthCheck(cfg *config.Configuration, buildTime, gitCommit, version string) (HealthChecker, error)

DoGetHealthCheck creates a healthcheck with versionInfo

func (*Init) DoGetKafkaProducer

func (e *Init) DoGetKafkaProducer(ctx context.Context, cfg *config.Configuration, topic string) (kafka.IProducer, error)

DoGetKafkaProducer creates a new Kafka Producer

func (*Init) DoGetMongoDB

func (e *Init) DoGetMongoDB(ctx context.Context, cfg config.MongoConfig) (store.MongoDB, error)

DoGetMongoDB returns a MongoDB

type Initialiser

type Initialiser interface {
	DoGetHTTPServer(bindAddr string, router http.Handler) HTTPServer
	DoGetHealthCheck(cfg *config.Configuration, buildTime, gitCommit, version string) (HealthChecker, error)
	DoGetKafkaProducer(ctx context.Context, cfg *config.Configuration, topic string) (kafka.IProducer, error)
	DoGetGraphDB(ctx context.Context) (store.GraphDB, Closer, error)
	DoGetMongoDB(ctx context.Context, cfg config.MongoConfig) (store.MongoDB, error)
}

Initialiser defines the methods to initialise external services

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service contains all the configs, server and clients to run the Dataset API

func New

func New(cfg *config.Configuration, serviceList *ExternalServiceList) *Service

New creates a new service

func (*Service) Close

func (svc *Service) Close(ctx context.Context) error

Close gracefully shuts the service down in the required order, with timeout

func (*Service) Run

func (svc *Service) Run(ctx context.Context, buildTime, gitCommit, version string, svcErrors chan error) (err error)

Run the service

func (*Service) SetDownloadsProducer

func (svc *Service) SetDownloadsProducer(producer kafka.IProducer)

SetDownloadsProducer sets the downloads kafka producer for a service

func (*Service) SetGraphDB

func (svc *Service) SetGraphDB(graphDB store.GraphDB)

SetGraphDB sets the graphDB connection for a service

func (*Service) SetGraphDBErrorConsumer added in v1.23.0

func (svc *Service) SetGraphDBErrorConsumer(graphDBErrorConsumer Closer)

SetGraphDBErrorConsumer sets the graphDB error consumer for a service

func (*Service) SetHealthCheck

func (svc *Service) SetHealthCheck(healthCheck HealthChecker)

SetHealthCheck sets the healthchecker for a service

func (*Service) SetMongoDB

func (svc *Service) SetMongoDB(mongoDB store.MongoDB)

SetMongoDB sets the mongoDB connection for a service

func (*Service) SetServer

func (svc *Service) SetServer(server HTTPServer)

SetServer sets the http server for a service

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL