当前位置: 首页>>代码示例>>Golang>>正文


Golang Session.Rollback方法代码示例

本文整理汇总了Golang中github.com/go-xorm/xorm.Session.Rollback方法的典型用法代码示例。如果您正苦于以下问题:Golang Session.Rollback方法的具体用法?Golang Session.Rollback怎么用?Golang Session.Rollback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/go-xorm/xorm.Session的用法示例。


在下文中一共展示了Session.Rollback方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: UpdateAccessWithSession

// UpdateAccess updates access information with session for rolling back.
func UpdateAccessWithSession(sess *xorm.Session, access *Access) error {
	if _, err := sess.Id(access.Id).Update(access); err != nil {
		sess.Rollback()
		return err
	}
	return nil
}
开发者ID:hilerchyn,项目名称:gogs,代码行数:8,代码来源:access.go

示例2: doTransaction

func (c *XormController) doTransaction(session *xorm.Session, handler SessionHandlerFunc) error {
	err := session.Begin()
	if err != nil {
		return err
	}

	if err = handler(session); err == nil {
		session.Commit()
	} else {
		session.Rollback()
	}
	return err
}
开发者ID:nashtsai,项目名称:xormrevelmodule,代码行数:13,代码来源:plugin.go

示例3: exec

func (mg *Migrator) exec(m Migration, sess *xorm.Session) error {
	mg.Logger.Info("Executing migration", "id", m.Id())

	condition := m.GetCondition()
	if condition != nil {
		sql, args := condition.Sql(mg.dialect)
		results, err := sess.Query(sql, args...)
		if err != nil || len(results) == 0 {
			mg.Logger.Info("Skipping migration condition not fulfilled", "id", m.Id())
			return sess.Rollback()
		}
	}

	_, err := sess.Exec(m.Sql(mg.dialect))
	if err != nil {
		mg.Logger.Error("Executing migration failed", "id", m.Id(), "error", err)
		return err
	}

	return nil
}
开发者ID:roman-vynar,项目名称:grafana,代码行数:21,代码来源:migrator.go

示例4: sessionRelease

func sessionRelease(sess *xorm.Session) {
	if !sess.IsCommitedOrRollbacked {
		sess.Rollback()
	}
	sess.Close()
}
开发者ID:zhuharev,项目名称:smoljanin.ru,代码行数:6,代码来源:models.go

示例5: removeTeamMemberWithSess

func removeTeamMemberWithSess(orgId, teamId, uid int64, sess *xorm.Session) error {
	if !IsTeamMember(orgId, teamId, uid) {
		return nil
	}

	// Get team and its repositories.
	t, err := GetTeamById(teamId)
	if err != nil {
		return err
	}

	// Check if the user to delete is the last member in owner team.
	if t.IsOwnerTeam() && t.NumMembers == 1 {
		return ErrLastOrgOwner
	}

	t.NumMembers--

	if err = t.GetRepositories(); err != nil {
		return err
	}

	// Get organization.
	org, err := GetUserById(orgId)
	if err != nil {
		return err
	}

	// Get user.
	u, err := GetUserById(uid)
	if err != nil {
		return err
	}

	tu := &TeamUser{
		Uid:    uid,
		OrgId:  orgId,
		TeamId: teamId,
	}

	if _, err := sess.Delete(tu); err != nil {
		sess.Rollback()
		return err
	} else if _, err = sess.Id(t.Id).AllCols().Update(t); err != nil {
		sess.Rollback()
		return err
	}

	// Delete access to team repositories.
	for _, repo := range t.Repos {
		auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, teamId)
		if err != nil {
			sess.Rollback()
			return err
		}

		access := &Access{
			UserName: u.LowerName,
			RepoName: path.Join(org.LowerName, repo.LowerName),
		}
		// Delete access if this is the last team user belongs to.
		if auth == 0 {
			if _, err = sess.Delete(access); err != nil {
				sess.Rollback()
				return fmt.Errorf("fail to delete access: %v", err)
			} else if err = WatchRepo(u.Id, repo.Id, false); err != nil {
				sess.Rollback()
				return err
			}
		} else if auth < t.Authorize {
			// Downgrade authorize level.
			if err = addAccessWithAuthorize(sess, access, AuthorizeToAccessType(auth)); err != nil {
				sess.Rollback()
				return err
			}
		}
	}

	// This must exist.
	ou := new(OrgUser)
	_, err = sess.Where("uid=?", uid).And("org_id=?", org.Id).Get(ou)
	if err != nil {
		sess.Rollback()
		return err
	}
	ou.NumTeams--
	if t.IsOwnerTeam() {
		ou.IsOwner = false
	}
	if _, err = sess.Id(ou.Id).AllCols().Update(ou); err != nil {
		sess.Rollback()
		return err
	}
	return nil
}
开发者ID:felipelovato,项目名称:gogs,代码行数:95,代码来源:org.go


注:本文中的github.com/go-xorm/xorm.Session.Rollback方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。