github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/adminpanel/siteprefs/siteprefs.go (about) 1 package siteprefs 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/gocraft/dbr" 8 ) 9 10 // SitePref is the model object corresponding to the site_pref table. 11 type SitePref struct { 12 PrefKey string `db:"pref_key" json:"pref_key" yaml:"pref_key"` 13 PrefValue string `db:"pref_value" json:"pref_value" yaml:"pref_value"` 14 } 15 16 type SitePrefsModel struct { 17 DBDriverName string // TODO: autowire struct tag 18 DBDSN string // TODO: autowire struct tag 19 TablePrefix string 20 Connection *dbr.Connection 21 // TODO: figure out how file sync stuff works 22 } 23 24 func (m *SitePrefsModel) AfterWire() error { 25 26 if m.DBDriverName == "" { 27 return fmt.Errorf("SitePrefsModel.DBDriverName cannot be empty") 28 } 29 if m.DBDSN == "" { 30 return fmt.Errorf("SitePrefsModel.DBDSN cannot be empty") 31 } 32 33 // FIXME: hm, we could register our migrations here... so we can use the table prefix 34 35 conn, err := dbr.Open(m.DBDriverName, m.DBDSN, nil) 36 if err != nil { 37 return err 38 } 39 m.Connection = conn 40 return nil 41 } 42 43 func (m *SitePrefsModel) ReadAll() ([]SitePref, error) { 44 ssn := m.Connection.NewSession(nil) 45 ssn.Select("*").From("") 46 return nil, nil 47 } 48 49 func (m *SitePrefsModel) Read(prefKey string) (*SitePref, error) { 50 return nil, nil 51 } 52 53 func (m *SitePrefsModel) Write(prefKey, prefValue string) error { 54 return nil 55 } 56 57 type SitePrefsHandler struct { 58 Model *SitePrefsModel 59 } 60 61 func NewSitePrefsHandler(model *SitePrefsModel) *SitePrefsHandler { 62 return &SitePrefsHandler{ 63 Model: model, 64 } 65 } 66 67 func (h *SitePrefsHandler) ServeHTTPChain(w http.ResponseWriter, r *http.Request) (wret http.ResponseWriter, rret *http.Request) { 68 69 wret = w 70 rret = r 71 72 return 73 }