catalogue

package module
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

README

Docker Instructions

Before proceeding, ensure you have the catalogue-db container running and ready. You can set it up from ./docker/catalogue/catalogue-db.

just run:

bash docker/catalogue/catalogue-db/run-container.sh

Steps to Build and Run the Catalogue Service

  1. Build the Catalogue Image

    Build the Docker image for the catalogue service by running:

    docker build . -t catalogue:latest
    
  2. Run catalogue container image

    Start the Docker container for the catalogue service, mapping port 80 on the host to port 80 on the container, and naming the container catalogue:

    docker run -d -p 80:80 --name catalogue catalogue:latest
    
  3. Check whether the service is alive

    Verify that the service is running by executing the following command:

    docker exec catalogue curl http://localhost:80/health
    
  4. Use the service endpoints

    Access the service endpoints to ensure they are functioning correctly:

    docker exec catalogue curl http://localhost:80/catalogue
    

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 MakeCountEndpoint

func MakeCountEndpoint(s Service) endpoint.Endpoint

MakeCountEndpoint returns an endpoint via the given service.

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, imagePath string, 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.

func MakeListEndpoint

func MakeListEndpoint(s Service) endpoint.Endpoint

MakeListEndpoint returns an endpoint via the given service.

func MakeTagsEndpoint

func MakeTagsEndpoint(s Service) endpoint.Endpoint

MakeTagsEndpoint returns an endpoint via the given service.

Types

type Endpoints

type Endpoints struct {
	ListEndpoint   endpoint.Endpoint
	CountEndpoint  endpoint.Endpoint
	GetEndpoint    endpoint.Endpoint
	TagsEndpoint   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 {
	List(tags []string, order string, pageNum, pageSize int) ([]Sock, error) // GET /catalogue
	Count(tags []string) (int, error)                                        // GET /catalogue/size
	Get(id string) (Sock, error)                                             // GET /catalogue/{id}
	Tags() ([]string, error)                                                 // GET /tags
	Health() []Health                                                        // GET /health
}

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

func NewCatalogueService

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

NewCatalogueService 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
cataloguesvc command

Jump to

Keyboard shortcuts

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