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  }