postgres

package
v0.33.0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2025 License: Apache-2.0 Imports: 15 Imported by: 0

README

Postgres reader

Postgres reader provides message repository implementation for Postgres.

Readers - DB Schema

CREATE TABLE json (
    created   BIGINT,
    subtopic  VARCHAR(254),
    publisher VARCHAR(254),
    protocol  TEXT,
    payload   JSONB
);

CREATE TABLE senml (
    subtopic     VARCHAR(254) NOT NULL,
    publisher    UUID NOT NULL,
    protocol     TEXT,
    name         TEXT NOT NULL,
    unit         TEXT,
    value        DOUBLE PRECISION,
    string_value TEXT,
    bool_value   BOOLEAN,
    data_value   TEXT,
    sum          DOUBLE PRECISION,
    time         DOUBLE PRECISION NOT NULL,
    update_time  DOUBLE PRECISION
);

Configuration

The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.

Variable Description Default
MF_POSTGRES_READER_LOG_LEVEL Service log level debug
MF_POSTGRES_READER_PORT Service HTTP port 8180
MF_POSTGRES_READER_CLIENT_TLS TLS mode flag false
MF_POSTGRES_READER_CA_CERTS Path to trusted CAs in PEM format
MF_POSTGRES_READER_DB_HOST Postgres DB host postgres
MF_POSTGRES_READER_DB_PORT Postgres DB port 5432
MF_POSTGRES_READER_DB_USER Postgres user mainflux
MF_POSTGRES_READER_DB_PASS Postgres password mainflux
MF_POSTGRES_READER_DB Postgres database name senml
MF_POSTGRES_READER_DB_SSL_MODE Postgres SSL mode disabled
MF_POSTGRES_READER_DB_SSL_CERT Postgres SSL certificate path ""
MF_POSTGRES_READER_DB_SSL_KEY Postgres SSL key ""
MF_POSTGRES_READER_DB_SSL_ROOT_CERT Postgres SSL root certificate path ""
MF_JAEGER_URL Jaeger server URL localhost:6831
MF_THINGS_AUTH_GRPC_URL Things service Auth gRPC URL localhost:8183
MF_THINGS_AUTH_GRPC_TIMEOUT Things service Auth gRPC timeout in seconds 1s
MF_AUTH_GRPC_URL Auth service gRPC URL localhost:8181
MF_AUTH_GRPC_TIMEOUT Auth service gRPC request timeout in seconds 1s

Deployment

The service itself is distributed as Docker container. Check the postgres-reader service section in docker-compose to see how service is deployed.

To start the service, execute the following shell script:

# download the latest version of the service
git clone https://github.com/MainfluxLabs/mainflux

cd mainflux

# compile the postgres writer
make postgres-writer

# copy binary to bin
make install

# Set the environment variables and run the service
MF_POSTGRES_READER_LOG_LEVEL=[Service log level] \
MF_POSTGRES_READER_PORT=[Service HTTP port] \
MF_POSTGRES_READER_CLIENT_TLS =[TLS mode flag] \
MF_POSTGRES_READER_CA_CERTS=[Path to trusted CAs in PEM format] \
MF_POSTGRES_READER_DB_HOST=[Postgres host] \
MF_POSTGRES_READER_DB_PORT=[Postgres port] \
MF_POSTGRES_READER_DB_USER=[Postgres user] \
MF_POSTGRES_READER_DB_PASS=[Postgres password] \
MF_POSTGRES_READER_DB=[Postgres database name] \
MF_POSTGRES_READER_DB_SSL_MODE=[Postgres SSL mode] \
MF_POSTGRES_READER_DB_SSL_CERT=[Postgres SSL cert] \
MF_POSTGRES_READER_DB_SSL_KEY=[Postgres SSL key] \
MF_POSTGRES_READER_DB_SSL_ROOT_CERT=[Postgres SSL Root cert] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_THINGS_AUTH_GRPC_URL=[Things service Auth GRPC URL] \
MF_THINGS_AUTH_GRPC_TIMEOUT=[Things service Auth gRPC request timeout in seconds] \
$GOBIN/mainfluxlabs-postgres-reader

Usage

Starting service will start consuming normalized messages in SenML format.

Documentation

Overview

Package postgres contains repository implementations using Postgres as the underlying database.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Connect

func Connect(cfg Config) (*sqlx.DB, error)

Connect creates a connection to the PostgreSQL instance and applies any unapplied database migrations. A non-nil error is returned to indicate failure.

func NewJSONRepository added in v0.30.1

func NewJSONRepository(db dbutil.Database) readers.JSONMessageRepository

func NewSenMLRepository added in v0.30.1

func NewSenMLRepository(db dbutil.Database) readers.SenMLMessageRepository

Types

type AggStrategy added in v0.29.1

type AggStrategy interface {
	// Function that builds the query for aggregation.
	BuildQuery(qp QueryParams) string

	// Function that returns selected strings.
	GetSelectedFields(qp QueryParams) string

	//Function containing aggregation expression.
	GetAggregateExpression(qp QueryParams) string
}

type AvgStrategy added in v0.29.1

type AvgStrategy struct{}

func (AvgStrategy) BuildQuery added in v0.29.1

func (avgStrt AvgStrategy) BuildQuery(qp QueryParams) string

func (AvgStrategy) GetAggregateExpression added in v0.29.1

func (avgStrt AvgStrategy) GetAggregateExpression(qp QueryParams) string

func (AvgStrategy) GetSelectedFields added in v0.29.1

func (avgStrt AvgStrategy) GetSelectedFields(qp QueryParams) string

type Config

type Config struct {
	Host        string
	Port        string
	User        string
	Pass        string
	Name        string
	SSLMode     string
	SSLCert     string
	SSLKey      string
	SSLRootCert string
}

Config defines the options that are used when connecting to a PostgreSQL instance

type CountStrategy added in v0.29.1

type CountStrategy struct{}

func (CountStrategy) BuildQuery added in v0.29.1

func (countStrt CountStrategy) BuildQuery(qp QueryParams) string

func (CountStrategy) GetAggregateExpression added in v0.29.1

func (countStrt CountStrategy) GetAggregateExpression(qp QueryParams) string

func (CountStrategy) GetSelectedFields added in v0.29.1

func (countStrt CountStrategy) GetSelectedFields(qp QueryParams) string

type MaxStrategy added in v0.29.1

type MaxStrategy struct{}

func (MaxStrategy) BuildQuery added in v0.29.1

func (maxStrt MaxStrategy) BuildQuery(qp QueryParams) string

func (MaxStrategy) GetAggregateExpression added in v0.29.1

func (maxStrt MaxStrategy) GetAggregateExpression(qp QueryParams) string

func (MaxStrategy) GetSelectedFields added in v0.29.1

func (maxStrt MaxStrategy) GetSelectedFields(qp QueryParams) string

type MinStrategy added in v0.29.1

type MinStrategy struct{}

func (MinStrategy) BuildQuery added in v0.29.1

func (minStrt MinStrategy) BuildQuery(qp QueryParams) string

func (MinStrategy) GetAggregateExpression added in v0.29.1

func (minStrt MinStrategy) GetAggregateExpression(qp QueryParams) string

func (MinStrategy) GetSelectedFields added in v0.29.1

func (minStrt MinStrategy) GetSelectedFields(qp QueryParams) string

type QueryParams added in v0.33.0

type QueryParams struct {
	Table            string
	TimeColumn       string
	Condition        string
	ConditionForJoin string
	Limit            uint64
	AggInterval      string
	AggValue         uint64
	AggField         string
	AggType          string
	Dir              string
}

Jump to

Keyboard shortcuts

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