package main import "time" type SiteData struct { Title string Port int SessionName string ServerDir string SessionSecret string LastSave time.Time } func NewSiteData() *SiteData { ret := new(SiteData) ret.Title = "BCW Comic Feed" ret.Port = 8080 ret.SessionName = "bcw-comic-feed" ret.ServerDir = "./" return ret } func (m *model) LoadSiteData() { m.Site = m.GetSite() } func (m *model) SaveSite() error { var err error if err = m.bolt.OpenDB(); err != nil { return err } defer m.bolt.CloseDB() bkt := []string{"site"} if err = m.bolt.SetValue(bkt, "title", m.Site.Title); err != nil { return err } if err = m.bolt.SetInt(bkt, "port", m.Site.Port); err != nil { return err } if err = m.bolt.SetValue(bkt, "session-name", m.Site.SessionName); err != nil { return err } if err = m.bolt.SetValue(bkt, "session-secret", m.Site.SessionSecret); err != nil { return err } if err = m.bolt.SetValue(bkt, "server-dir", m.Site.ServerDir); err != nil { return err } if err = m.bolt.SetTimestamp(bkt, "last-save", m.Site.LastSave); err != nil { return err } return nil } func (m *model) GetSite() *SiteData { s := NewSiteData() var err error if err = m.bolt.OpenDB(); err != nil { return s } defer m.bolt.CloseDB() bkt := []string{"site"} var wrkStr string var wrkInt int var wrkTm time.Time if wrkStr, err = m.bolt.GetValue(bkt, "title"); err == nil { s.Title = wrkStr } if wrkInt, err = m.bolt.GetInt(bkt, "port"); err == nil { s.Port = wrkInt } if wrkStr, err = m.bolt.GetValue(bkt, "session-name"); err == nil { s.SessionName = wrkStr } if wrkStr, err = m.bolt.GetValue(bkt, "session-secret"); err == nil { s.SessionSecret = wrkStr } if wrkStr, err = m.bolt.GetValue(bkt, "server-dir"); err == nil { s.ServerDir = wrkStr } if wrkTm, err = m.bolt.GetTimestamp(bkt, "last-save"); err == nil { s.LastSave = wrkTm } return s }