예제 #1
0
파일: mysql_store.go 프로젝트: medigo/laika
func (s *mySQLStore) UpdateFeature(feature *models.Feature) error {
	if err := meddler.Update(s.db, "feature", feature); err != nil {
		return err
	}

	envs, err := s.ListEnvironments()
	if err != nil {
		return err
	}

	envsByName := make(map[string]*models.Environment)
	for _, env := range envs {
		envsByName[env.Name] = env
	}

	stats, err := s.listStatusByFeatureID(feature.ID)
	if err != nil {
		return err
	}

	statusByEnvironmentID := make(map[int64]*status)
	for _, stat := range stats {
		statusByEnvironmentID[stat.EnvironmentID] = stat
	}

	for envName, enabled := range feature.Status {
		env := envsByName[envName]
		if env == nil {
			return ErrNoRows
		}

		stat := statusByEnvironmentID[env.ID]
		if stat == nil {
			err := s.createStatus(&status{
				FeatureID:     feature.ID,
				EnvironmentID: env.ID,
				Enabled:       enabled,
			})
			if err != nil {
				return err
			}
		} else {
			if stat.Enabled == enabled {
				// no changes
				continue
			}

			stat.Enabled = enabled
			err := s.updateStatus(stat)
			if err != nil {
				return err
			}
		}
	}

	return nil
}
예제 #2
0
func (sr *SQL) Update(r *Request, rec *Record) error {
	lp, psql := sr.GetPromise(r)
	defer lp.Release()
	if rec.Attributes != nil {
		SetId(rec.Attributes, rec.Id)
	} else {
		// TODO: should this panic? is it possible to UPDATE with a nil ID?
	}
	tx, err := psql.GetSQLTransaction(sr.DB)
	if err != nil {
		return err
	}
	r.API.Logger.Debugf("Fields: %#v\n", rec.Attributes)
	return meddler.Update(tx, sr.Table, rec.Attributes)
}
예제 #3
0
func (db *buildstore) Update(build *model.Build) error {
	return meddler.Update(db, buildTable, build)
}
예제 #4
0
파일: users.go 프로젝트: jonbodner/lgtm
func (db *datastore) UpdateUser(user *model.User) error {
	return meddler.Update(db, userTable, user)
}
예제 #5
0
파일: mysql_store.go 프로젝트: medigo/laika
func (s *mySQLStore) updateStatus(status *status) error {
	return meddler.Update(s.db, "feature_status", status)
}
예제 #6
0
파일: mysql_store.go 프로젝트: medigo/laika
func (s *mySQLStore) UpdateEnvironment(environment *models.Environment) error {
	return meddler.Update(s.db, "environment", environment)
}
예제 #7
0
파일: user.go 프로젝트: voxxit/drone
// PutUser saves a user in the datastore.
func (db *Userstore) PutUser(user *model.User) error {
	user.Updated = time.Now().UTC().Unix()
	return meddler.Update(db, userTable, user)
}
예제 #8
0
파일: repos.go 프로젝트: fclairamb/drone
func (db *repostore) Update(repo *model.Repo) error {
	return meddler.Update(db, repoTable, repo)
}
예제 #9
0
파일: nodes.go 프로젝트: allenbhuiyan/drone
func (db *nodestore) Update(node *model.Node) error {
	return meddler.Update(db, nodeTable, node)
}
예제 #10
0
파일: jobs.go 프로젝트: fclairamb/drone
func (db *jobstore) Update(job *model.Job) error {
	return meddler.Update(db, jobTable, job)
}
예제 #11
0
func (u *User) UpdateBalance(db meddler.DB, delta int) error {
	u.Balance += delta
	return meddler.Update(db, "users", u)
}
예제 #12
0
파일: agents.go 프로젝트: Ablu/drone
func (db *datastore) UpdateAgent(agent *model.Agent) error {
	return meddler.Update(db, agentTable, agent)
}