fix(site_store): refactor site store

This commit is contained in:
hexxa 2022-03-22 20:06:30 +08:00 committed by Hexxa
parent b4dc30f824
commit c3a3b2dc5b
3 changed files with 79 additions and 5 deletions

View file

@ -14,6 +14,17 @@ const (
KeySiteCfg = "KeySiteCfg" KeySiteCfg = "KeySiteCfg"
) )
var (
DefaultSiteName = "Quickshare"
DefaultSiteDesc = "Quickshare"
DefaultBgConfig = &db.BgConfig{
Repeat: "repeated",
Position: "top",
Align: "fixed",
BgColor: "#ccc",
}
)
var ( var (
ErrNotFound = errors.New("site config not found") ErrNotFound = errors.New("site config not found")
) )
@ -47,10 +58,7 @@ func (st *SiteStore) Init(cfg *SiteConfig) error {
return err return err
} }
err = st.setCfg(cfg) return st.setCfg(cfg)
if err != nil {
return err
}
} }
return nil return nil
} }
@ -66,10 +74,18 @@ func (st *SiteStore) getCfg() (*SiteConfig, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if err = CheckCfg(cfg, true); err != nil {
return nil, err
}
return cfg, nil return cfg, nil
} }
func (st *SiteStore) setCfg(cfg *SiteConfig) error { func (st *SiteStore) setCfg(cfg *SiteConfig) error {
if err := CheckCfg(cfg, false); err != nil {
return err
}
cfgBytes, err := json.Marshal(cfg) cfgBytes, err := json.Marshal(cfg)
if err != nil { if err != nil {
return err return err
@ -96,3 +112,58 @@ func (st *SiteStore) GetCfg() (*SiteConfig, error) {
return st.getCfg() 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
}

View file

@ -64,10 +64,13 @@ func TestSiteStore(t *testing.T) {
Repeat: "", Repeat: "",
Position: "", Position: "",
Align: "", Align: "",
BgColor: "", BgColor: "#ccc",
}, },
}, },
}) })
if err != nil {
panic(err)
}
testSiteMethods(t, store) testSiteMethods(t, store)
}) })

Binary file not shown.