Skip to content

Instantly share code, notes, and snippets.

@narup
Created May 15, 2020 06:08
Show Gist options
  • Select an option

  • Save narup/8695dfd9c5c13a1b19b9af6723451d90 to your computer and use it in GitHub Desktop.

Select an option

Save narup/8695dfd9c5c13a1b19b9af6723451d90 to your computer and use it in GitHub Desktop.
//In spreadsheet_cfg.go
func readSpreadsheetTemplates() error {
fp := "config-templates/spreadsheet-templates.json"
jsonFile, err := os.Open(fp)
if err != nil {
return err
}
defer jsonFile.Close()
byteValue, err := ioutil.ReadAll(jsonFile)
if err != nil {
return err
}
var sheets map[string]gsheet.SpreadSheet
err = json.Unmarshal([]byte(byteValue), &sheets)
if err != nil {
return err
}
for sheetName, sheet := range sheets {
sheetKey := fmt.Sprintf("%s.%s", SpreadsheetDomain, sheetName)
Set(sheetKey, sheet)
if sheet.Reload {
sl := sheetLoaderMap[sheet.SheetID]
go loadSheetData(sl)
}
}
return nil
}
func loadSheetData(sl SheetLoader) {
defer handlePanic("SheetLoader...")
sl.Load()
}
//SheetLoader type that loads the sheet data
type SheetLoader interface {
SheetID() string
Load() error
}
var sheetLoaderMap map[string]SheetLoader
func init() {
sr := gsheet.ScrubAndRouteSheetLoader{}
sheetLoaderMap[sr.SheetID()] = sr
}
//In scrub_and_route_cfg.go
type ScrubAndRouteSheetLoader struct {
}
func (s ScrubAndRouteSheetLoader) SheetID() string {
return scrubAndRouteDataSheetID
}
func (s ScrubAndRouteSheetLoader) Load() error {
//Load data here!
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment