recommender

package module
v2.0.0-...-1dc6c36 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2021 License: Apache-2.0 Imports: 19 Imported by: 0

README

Recommender

A Sock Shop service that provides a recommendation by connecting to the catalogue service.

To build this service

In order to build the project locally you need to make sure that dependencies are installed. Once that is in place you can build by running:

go mod download
go build -o recommender

The result is a binary named recommender, in the current directory.

Docker

docker-compose build

To run the service on port 8080
Go native

If you followed to Go build instructions, you should have a "recommender" binary in $GOPATH/src/github.com/kcz17/recommender/cmd/recommendersvc/. To run it use:

./recommender --port 8080
Docker

docker-compose up

Check whether the service is alive

curl http://localhost:8080/health

Use the service endpoints

curl http://localhost:8080/recommender

Releasing
  • docker build -t kcz17/recommender:[VERSION] -f docker/recommender/Dockerfile .
  • docker build -t kcz17/recommender-db:[VERSION] docker/recommender-db

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrDBConnection = errors.New("database connection error")

ErrDBConnection is returned when connection with the database fails.

View Source
var ErrNotFound = errors.New("not found")

ErrNotFound is returned when there is no sock for a given ID.

Functions

func MakeGetEndpoint

func MakeGetEndpoint(s Service) endpoint.Endpoint

MakeGetEndpoint returns an endpoint via the given service.

func MakeHTTPHandler

func MakeHTTPHandler(ctx context.Context, e Endpoints, logger log.Logger, tracer stdopentracing.Tracer) *mux.Router

MakeHTTPHandler mounts the endpoints into a REST-y HTTP handler.

func MakeHealthEndpoint

func MakeHealthEndpoint(s Service) endpoint.Endpoint

MakeHealthEndpoint returns current health of the given service.

Types

type Endpoints

type Endpoints struct {
	GetEndpoint    endpoint.Endpoint
	HealthEndpoint endpoint.Endpoint
}

Endpoints collects the endpoints that comprise the Service.

func MakeEndpoints

func MakeEndpoints(s Service, tracer stdopentracing.Tracer) Endpoints

MakeEndpoints returns an Endpoints structure, where each endpoint is backed by the given service.

type Health

type Health struct {
	Service string `json:"service"`
	Status  string `json:"status"`
	Time    string `json:"time"`
}

Health describes the health of a service

type Middleware

type Middleware func(Service) Service

Middleware decorates a Service.

func LoggingMiddleware

func LoggingMiddleware(logger log.Logger) Middleware

LoggingMiddleware logs method calls, parameters, results, and elapsed time.

type Service

type Service interface {
	Get() (Sock, error) // GET /recommender
	Health() []Health   // GET /health
}

Service is the recommender service, providing read operations on a saleable recommender of sock products.

func NewRecommenderService

func NewRecommenderService(db *sqlx.DB, logger log.Logger) Service

NewRecommenderService returns an implementation of the Service interface, with connection to an SQL database.

type Sock

type Sock struct {
	ID          string   `json:"id" db:"id"`
	Name        string   `json:"name" db:"name"`
	Description string   `json:"description" db:"description"`
	ImageURL    []string `json:"imageUrl" db:"-"`
	ImageURL_1  string   `json:"-" db:"image_url_1"`
	ImageURL_2  string   `json:"-" db:"image_url_2"`
	Price       float32  `json:"price" db:"price"`
	Count       int      `json:"count" db:"count"`
	Tags        []string `json:"tag" db:"-"`
	TagString   string   `json:"-" db:"tag_name"`
}

Sock describes the thing on offer in the catalogue.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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