From c3a3b2dc5b58ad75b6f3addf1f19a29f145fa39c Mon Sep 17 00:00:00 2001 From: hexxa Date: Tue, 22 Mar 2022 20:06:30 +0800 Subject: [PATCH] fix(site_store): refactor site store --- src/db/sitestore/site_store.go | 79 +++++++++++++++++++++++-- src/db/sitestore/site_store_test.go | 5 +- src/server/testdata/test_quickshare.db | Bin 524288 -> 524288 bytes 3 files changed, 79 insertions(+), 5 deletions(-) diff --git a/src/db/sitestore/site_store.go b/src/db/sitestore/site_store.go index 00ef2e6..8b80e29 100644 --- a/src/db/sitestore/site_store.go +++ b/src/db/sitestore/site_store.go @@ -14,6 +14,17 @@ const ( KeySiteCfg = "KeySiteCfg" ) +var ( + DefaultSiteName = "Quickshare" + DefaultSiteDesc = "Quickshare" + DefaultBgConfig = &db.BgConfig{ + Repeat: "repeated", + Position: "top", + Align: "fixed", + BgColor: "#ccc", + } +) + var ( ErrNotFound = errors.New("site config not found") ) @@ -47,10 +58,7 @@ func (st *SiteStore) Init(cfg *SiteConfig) error { return err } - err = st.setCfg(cfg) - if err != nil { - return err - } + return st.setCfg(cfg) } return nil } @@ -66,10 +74,18 @@ func (st *SiteStore) getCfg() (*SiteConfig, error) { if err != nil { return nil, err } + + if err = CheckCfg(cfg, true); err != nil { + return nil, err + } return cfg, nil } func (st *SiteStore) setCfg(cfg *SiteConfig) error { + if err := CheckCfg(cfg, false); err != nil { + return err + } + cfgBytes, err := json.Marshal(cfg) if err != nil { return err @@ -96,3 +112,58 @@ func (st *SiteStore) GetCfg() (*SiteConfig, error) { return st.getCfg() } + +func CheckCfg(cfg *SiteConfig, autoFill bool) error { + if cfg.ClientCfg == nil { + if !autoFill { + return errors.New("cfg.ClientCfg not defined") + } + cfg.ClientCfg = &db.ClientConfig{ + SiteName: DefaultSiteName, + SiteDesc: DefaultSiteDesc, + Bg: &db.BgConfig{ + Url: DefaultBgConfig.Url, + Repeat: DefaultBgConfig.Repeat, + Position: DefaultBgConfig.Position, + Align: DefaultBgConfig.Align, + BgColor: DefaultBgConfig.BgColor, + }, + } + + return nil + } + + if cfg.ClientCfg.SiteName == "" { + cfg.ClientCfg.SiteName = DefaultSiteName + } + if cfg.ClientCfg.SiteDesc == "" { + cfg.ClientCfg.SiteDesc = DefaultSiteDesc + } + + if cfg.ClientCfg.Bg == nil { + if !autoFill { + return errors.New("cfg.ClientCfg.Bg not defined") + } + cfg.ClientCfg.Bg = DefaultBgConfig + } + if cfg.ClientCfg.Bg.Url == "" && cfg.ClientCfg.Bg.BgColor == "" { + if !autoFill { + return errors.New("one of Bg.Url or Bg.BgColor must be defined") + } + cfg.ClientCfg.Bg.BgColor = DefaultBgConfig.BgColor + } + if cfg.ClientCfg.Bg.Repeat == "" { + cfg.ClientCfg.Bg.Repeat = DefaultBgConfig.Repeat + } + if cfg.ClientCfg.Bg.Position == "" { + cfg.ClientCfg.Bg.Position = DefaultBgConfig.Position + } + if cfg.ClientCfg.Bg.Align == "" { + cfg.ClientCfg.Bg.Align = DefaultBgConfig.Align + } + if cfg.ClientCfg.Bg.BgColor == "" { + cfg.ClientCfg.Bg.BgColor = DefaultBgConfig.BgColor + } + + return nil +} diff --git a/src/db/sitestore/site_store_test.go b/src/db/sitestore/site_store_test.go index 4515fce..04b94c5 100644 --- a/src/db/sitestore/site_store_test.go +++ b/src/db/sitestore/site_store_test.go @@ -64,10 +64,13 @@ func TestSiteStore(t *testing.T) { Repeat: "", Position: "", Align: "", - BgColor: "", + BgColor: "#ccc", }, }, }) + if err != nil { + panic(err) + } testSiteMethods(t, store) }) diff --git a/src/server/testdata/test_quickshare.db b/src/server/testdata/test_quickshare.db index 7907bdece5816d57298a02eefd84ee8efe357124..f1f6abb17096592bc4e9ceaccaa03596149a8437 100644 GIT binary patch delta 81 zcmZo@P-tjSnBXAb#mLA20uyGekDsYL>DYF|0LBgclLQWSSJ( a6d2nSnA#MW+Z0&Z6j<97*p?}