mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Allow detect whether it's in a database transaction for a context.Context (#21756)
Fix #19513 This PR introduce a new db method `InTransaction(context.Context)`, and also builtin check on `db.TxContext` and `db.WithTx`. There is also a new method `db.AutoTx` has been introduced but could be used by other PRs. `WithTx` will always open a new transaction, if a transaction exist in context, return an error. `AutoTx` will try to open a new transaction if no transaction exist in context. That means it will always enter a transaction if there is no error. Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
		| @@ -112,7 +112,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork | ||||
| 		panic(panicErr) | ||||
| 	}() | ||||
|  | ||||
| 	err = db.WithTx(func(txCtx context.Context) error { | ||||
| 	err = db.WithTx(ctx, func(txCtx context.Context) error { | ||||
| 		if err = repo_module.CreateRepositoryByExample(txCtx, doer, owner, repo, false); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| @@ -184,7 +184,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork | ||||
|  | ||||
| // ConvertForkToNormalRepository convert the provided repo from a forked repo to normal repo | ||||
| func ConvertForkToNormalRepository(repo *repo_model.Repository) error { | ||||
| 	err := db.WithTx(func(ctx context.Context) error { | ||||
| 	err := db.WithTx(db.DefaultContext, func(ctx context.Context) error { | ||||
| 		repo, err := repo_model.GetRepositoryByIDCtx(ctx, repo.ID) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
|   | ||||
		Reference in New Issue
	
	Block a user