From 04d38094e5bbaa3433f58eaecd8dd02e9a4207a5 Mon Sep 17 00:00:00 2001 From: TeoV Date: Mon, 13 Jan 2020 10:58:36 -0500 Subject: [PATCH] Add Items in config in stordb --- config/datadbcfg.go | 17 ++++++++++++----- config/libconfig_json.go | 5 +++-- config/{storedbcfg.go => stordbcfg.go} | 12 ++++++++++++ .../{storedbcfg_test.go => stordbcfg_test.go} | 0 4 files changed, 27 insertions(+), 7 deletions(-) rename config/{storedbcfg.go => stordbcfg.go} (92%) rename config/{storedbcfg_test.go => stordbcfg_test.go} (100%) diff --git a/config/datadbcfg.go b/config/datadbcfg.go index f35178ee5..2e36fb087 100644 --- a/config/datadbcfg.go +++ b/config/datadbcfg.go @@ -39,7 +39,7 @@ type DataDbCfg struct { QueryTimeout time.Duration RmtConns []string // Remote DataDB connIDs RplConns []string // Replication connIDs - Items map[string]*ItemRmtRplOpt + Items map[string]*ItemOpt } //loadFromJsonCfg loads Database config from JsonCfg @@ -100,9 +100,9 @@ func (dbcfg *DataDbCfg) loadFromJsonCfg(jsnDbCfg *DbJsonCfg) (err error) { } } if jsnDbCfg.Items != nil { - dbcfg.Items = make(map[string]*ItemRmtRplOpt) + dbcfg.Items = make(map[string]*ItemOpt) for kJsn, vJsn := range *jsnDbCfg.Items { - val := new(ItemRmtRplOpt) + val := new(ItemOpt) if err := val.loadFromJsonCfg(vJsn); err != nil { return err } @@ -123,15 +123,17 @@ func (dbcfg *DataDbCfg) Clone() *DataDbCfg { DataDbPass: dbcfg.DataDbPass, DataDbSentinelName: dbcfg.DataDbSentinelName, QueryTimeout: dbcfg.QueryTimeout, + Items: dbcfg.Items, } } -type ItemRmtRplOpt struct { +type ItemOpt struct { Remote bool Replicate bool + TTL time.Duration } -func (itm *ItemRmtRplOpt) loadFromJsonCfg(jsonItm *ItemRmtRplOptJson) (err error) { +func (itm *ItemOpt) loadFromJsonCfg(jsonItm *ItemOptJson) (err error) { if jsonItm == nil { return } @@ -141,5 +143,10 @@ func (itm *ItemRmtRplOpt) loadFromJsonCfg(jsonItm *ItemRmtRplOptJson) (err error if jsonItm.Replicate != nil { itm.Replicate = *jsonItm.Replicate } + if jsonItm.Ttl != nil { + if itm.TTL, err = utils.ParseDurationWithNanosecs(*jsonItm.Ttl); err != nil { + return err + } + } return } diff --git a/config/libconfig_json.go b/config/libconfig_json.go index b8b5558d1..45ce60b29 100755 --- a/config/libconfig_json.go +++ b/config/libconfig_json.go @@ -93,12 +93,13 @@ type DbJsonCfg struct { Sslmode *string // Used only in case of storDb Remote_conns *[]string Replication_conns *[]string - Items *map[string]*ItemRmtRplOptJson + Items *map[string]*ItemOptJson } -type ItemRmtRplOptJson struct { +type ItemOptJson struct { Remote *bool Replicate *bool + Ttl *string } // Filters config diff --git a/config/storedbcfg.go b/config/stordbcfg.go similarity index 92% rename from config/storedbcfg.go rename to config/stordbcfg.go index 9a32c2e1c..6f1a780b0 100644 --- a/config/storedbcfg.go +++ b/config/stordbcfg.go @@ -41,6 +41,7 @@ type StorDbCfg struct { PrefixIndexedFields []string QueryTimeout time.Duration SSLMode string // for PostgresDB used to change default sslmode + Items map[string]*ItemOpt } // loadFromJsonCfg loads StoreDb config from JsonCfg @@ -93,6 +94,16 @@ func (dbcfg *StorDbCfg) loadFromJsonCfg(jsnDbCfg *DbJsonCfg) (err error) { if jsnDbCfg.Sslmode != nil { dbcfg.SSLMode = *jsnDbCfg.Sslmode } + if jsnDbCfg.Items != nil { + dbcfg.Items = make(map[string]*ItemOpt) + for kJsn, vJsn := range *jsnDbCfg.Items { + val := new(ItemOpt) + if err := val.loadFromJsonCfg(vJsn); err != nil { + return err + } + dbcfg.Items[kJsn] = val + } + } return nil } @@ -112,5 +123,6 @@ func (dbcfg *StorDbCfg) Clone() *StorDbCfg { PrefixIndexedFields: dbcfg.PrefixIndexedFields, QueryTimeout: dbcfg.QueryTimeout, SSLMode: dbcfg.SSLMode, + Items: dbcfg.Items, } } diff --git a/config/storedbcfg_test.go b/config/stordbcfg_test.go similarity index 100% rename from config/storedbcfg_test.go rename to config/stordbcfg_test.go