func (p *Db) load(dir string) error { err := p.list_files(fmt.Sprintf("%s/mappers/%s", dir, p.cfg.Driver), func(d, n string) error { tmp := make(map[string]string, 0) if e := utils.FromToml(fmt.Sprintf("%s/%s", d, n), &tmp); e != nil { return e } for k, v := range tmp { p.mapper[k] = v } return nil }) if err != nil { return err } //--------- err = p.list_files(fmt.Sprintf("%s/migrations/%s", dir, p.cfg.Driver), func(d, n string) error { mig := Migration{} if e := utils.FromToml(fmt.Sprintf("%s/%s", d, n), &mig); e != nil { return e } mig.Id = n[0 : len(n)-5] p.migrations = append(p.migrations, &mig) return nil }) return err }
func Run(file string, store Store, logger logging.Logger) error { cfg := Configuration{} if err := utils.FromToml(file, &cfg); err != nil { return err } timeout := cfg.Timeout() queues := cfg.Queues() fn := func() { que, msg, err := store.Pop(timeout, queues...) if err == nil { logger.Info("get job %s@%s", msg.Id, que) wrk := workers[que] if wrk == nil { err = errors.New("unknown worker") } else { err = wrk.Do(msg) } if err == nil { logger.Info("job done %s@%s", msg.Id, que) } else { logger.Error("error on job %s@%s", msg.Id, que) } } store.Done(que, msg, err) } for i := 0; i < cfg.Workers; i++ { go fn() } return nil }
func (p *Configuration) Load(env string) error { return utils.FromToml(fmt.Sprintf("config/%s/database.toml", env), p) }