Publish packets.
This commit is contained in:
@@ -1,11 +1,19 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/jackc/pgx/v4/pgxpool"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultPort = 4000
|
||||
defaultProto = "tcp://"
|
||||
)
|
||||
|
||||
type Database struct {
|
||||
Host string `yaml:"host"`
|
||||
Port int `yaml:"port"`
|
||||
@@ -14,14 +22,26 @@ type Database struct {
|
||||
Password string `yaml:"password"`
|
||||
}
|
||||
|
||||
func (db Database) Connect(ctx context.Context) (*pgxpool.Pool, error) {
|
||||
if db.Port == 0 {
|
||||
db.Port = 5432
|
||||
}
|
||||
connstr := fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=verify-full",
|
||||
db.User, db.Password, db.Host, db.Port, db.Name)
|
||||
return pgxpool.Connect(ctx, connstr)
|
||||
}
|
||||
|
||||
type Publisher struct {
|
||||
Name string `yaml:"name"`
|
||||
Name string `yaml:"name"`
|
||||
Addr string
|
||||
Proto string `yaml:"proto"`
|
||||
Port int `yaml:"port"`
|
||||
Topics []string `yaml:"topics"`
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
Database Database `yaml:"db"`
|
||||
Publishers map[string]Publisher `yaml:"publishers"`
|
||||
Database Database `yaml:"db"`
|
||||
Publishers map[string]*Publisher `yaml:"publishers"`
|
||||
}
|
||||
|
||||
var DefaultConfigFile = "/etc/sensenet/sensenet.yaml"
|
||||
@@ -38,5 +58,18 @@ func LoadConfig(path string) (*Config, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for k, v := range config.Publishers {
|
||||
if v.Port == 0 {
|
||||
v.Port = defaultPort
|
||||
}
|
||||
|
||||
if v.Proto == "" {
|
||||
v.Proto = defaultProto
|
||||
}
|
||||
|
||||
v.Addr = fmt.Sprintf("%s://%s:%d", v.Proto, k, v.Port)
|
||||
config.Publishers[k] = v
|
||||
}
|
||||
|
||||
return config, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user