mirror of https://github.com/harness/drone.git
remove sqlx.DB from controllers and services
parent
f51f97adb2
commit
933d2d9703
|
@ -19,7 +19,6 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
)
|
||||
|
@ -40,7 +39,7 @@ func (c *Controller) ListChecks(
|
|||
var checks []types.Check
|
||||
var count int
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
count, err = c.checkStore.Count(ctx, repo.ID, commitSHA, opts)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to count status check results for repo=%s: %w", repo.UID, err)
|
||||
|
|
|
@ -24,14 +24,13 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
authorizer authz.Authorizer
|
||||
repoStore store.RepoStore
|
||||
checkStore store.CheckStore
|
||||
|
@ -39,14 +38,14 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
authorizer authz.Authorizer,
|
||||
repoStore store.RepoStore,
|
||||
checkStore store.CheckStore,
|
||||
gitRPCClient gitrpc.Interface,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
tx: tx,
|
||||
authorizer: authorizer,
|
||||
repoStore: repoStore,
|
||||
checkStore: checkStore,
|
||||
|
|
|
@ -18,9 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -29,14 +29,14 @@ var WireSet = wire.NewSet(
|
|||
)
|
||||
|
||||
func ProvideController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
authorizer authz.Authorizer,
|
||||
repoStore store.RepoStore,
|
||||
checkStore store.CheckStore,
|
||||
rpcClient gitrpc.Interface,
|
||||
) *Controller {
|
||||
return NewController(
|
||||
db,
|
||||
tx,
|
||||
authorizer,
|
||||
repoStore,
|
||||
checkStore,
|
||||
|
|
|
@ -18,12 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
uidCheck check.PathUID
|
||||
connectorStore store.ConnectorStore
|
||||
authorizer authz.Authorizer
|
||||
|
@ -31,14 +28,12 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
uidCheck check.PathUID,
|
||||
authorizer authz.Authorizer,
|
||||
connectorStore store.ConnectorStore,
|
||||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
uidCheck: uidCheck,
|
||||
connectorStore: connectorStore,
|
||||
authorizer: authorizer,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -28,11 +27,11 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
uidCheck check.PathUID,
|
||||
connectorStore store.ConnectorStore,
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return NewController(db, uidCheck, authorizer, connectorStore, spaceStore)
|
||||
return NewController(uidCheck, authorizer, connectorStore, spaceStore)
|
||||
}
|
||||
|
|
|
@ -20,12 +20,11 @@ import (
|
|||
"github.com/harness/gitness/app/pipeline/commit"
|
||||
"github.com/harness/gitness/app/pipeline/triggerer"
|
||||
"github.com/harness/gitness/app/store"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
authorizer authz.Authorizer
|
||||
executionStore store.ExecutionStore
|
||||
checkStore store.CheckStore
|
||||
|
@ -38,7 +37,7 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
authorizer authz.Authorizer,
|
||||
executionStore store.ExecutionStore,
|
||||
checkStore store.CheckStore,
|
||||
|
@ -50,7 +49,7 @@ func NewController(
|
|||
pipelineStore store.PipelineStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
tx: tx,
|
||||
authorizer: authorizer,
|
||||
executionStore: executionStore,
|
||||
checkStore: checkStore,
|
||||
|
|
|
@ -50,7 +50,7 @@ func (c *Controller) List(
|
|||
var count int64
|
||||
var executions []*types.Execution
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
count, err = c.executionStore.Count(ctx, pipeline.ID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to count child executions: %w", err)
|
||||
|
|
|
@ -20,9 +20,9 @@ import (
|
|||
"github.com/harness/gitness/app/pipeline/commit"
|
||||
"github.com/harness/gitness/app/pipeline/triggerer"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -30,7 +30,8 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
tx dbtx.Transactor,
|
||||
authorizer authz.Authorizer,
|
||||
executionStore store.ExecutionStore,
|
||||
checkStore store.CheckStore,
|
||||
|
@ -41,6 +42,6 @@ func ProvideController(db *sqlx.DB,
|
|||
stageStore store.StageStore,
|
||||
pipelineStore store.PipelineStore,
|
||||
) *Controller {
|
||||
return NewController(db, authorizer, executionStore, checkStore,
|
||||
return NewController(tx, authorizer, executionStore, checkStore,
|
||||
canceler, commitService, triggerer, repoStore, stageStore, pipelineStore)
|
||||
}
|
||||
|
|
|
@ -26,8 +26,6 @@ import (
|
|||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// ServerHookOutput represents the output of server hook api calls.
|
||||
|
@ -54,7 +52,6 @@ type BaseInput struct {
|
|||
}
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
authorizer authz.Authorizer
|
||||
principalStore store.PrincipalStore
|
||||
repoStore store.RepoStore
|
||||
|
@ -64,7 +61,6 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
authorizer authz.Authorizer,
|
||||
principalStore store.PrincipalStore,
|
||||
repoStore store.RepoStore,
|
||||
|
@ -73,7 +69,6 @@ func NewController(
|
|||
urlProvider url.Provider,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
authorizer: authorizer,
|
||||
principalStore: principalStore,
|
||||
repoStore: repoStore,
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
"github.com/harness/gitness/app/url"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -29,8 +28,8 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB, authorizer authz.Authorizer, principalStore store.PrincipalStore,
|
||||
func ProvideController(authorizer authz.Authorizer, principalStore store.PrincipalStore,
|
||||
repoStore store.RepoStore, gitReporter *eventsgit.Reporter, pullreqStore store.PullReqStore,
|
||||
urlProvider url.Provider) *Controller {
|
||||
return NewController(db, authorizer, principalStore, repoStore, gitReporter, pullreqStore, urlProvider)
|
||||
return NewController(authorizer, principalStore, repoStore, gitReporter, pullreqStore, urlProvider)
|
||||
}
|
||||
|
|
|
@ -18,12 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/livelog"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
authorizer authz.Authorizer
|
||||
executionStore store.ExecutionStore
|
||||
repoStore store.RepoStore
|
||||
|
@ -35,7 +32,6 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
authorizer authz.Authorizer,
|
||||
executionStore store.ExecutionStore,
|
||||
repoStore store.RepoStore,
|
||||
|
@ -46,7 +42,6 @@ func NewController(
|
|||
logStream livelog.LogStream,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
authorizer: authorizer,
|
||||
executionStore: executionStore,
|
||||
repoStore: repoStore,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"github.com/harness/gitness/livelog"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -28,7 +27,7 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
authorizer authz.Authorizer,
|
||||
executionStore store.ExecutionStore,
|
||||
repoStore store.RepoStore,
|
||||
|
@ -38,6 +37,6 @@ func ProvideController(db *sqlx.DB,
|
|||
logStore store.LogStore,
|
||||
logStream livelog.LogStream,
|
||||
) *Controller {
|
||||
return NewController(db, authorizer, executionStore, repoStore,
|
||||
return NewController(authorizer, executionStore, repoStore,
|
||||
pipelineStore, stageStore, stepStore, logStore, logStream)
|
||||
}
|
||||
|
|
|
@ -18,13 +18,10 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
defaultBranch string
|
||||
db *sqlx.DB
|
||||
uidCheck check.PathUID
|
||||
repoStore store.RepoStore
|
||||
triggerStore store.TriggerStore
|
||||
|
@ -33,7 +30,6 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
uidCheck check.PathUID,
|
||||
authorizer authz.Authorizer,
|
||||
repoStore store.RepoStore,
|
||||
|
@ -41,7 +37,6 @@ func NewController(
|
|||
pipelineStore store.PipelineStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
uidCheck: uidCheck,
|
||||
repoStore: repoStore,
|
||||
triggerStore: triggerStore,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -28,13 +27,13 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
uidCheck check.PathUID,
|
||||
repoStore store.RepoStore,
|
||||
triggerStore store.TriggerStore,
|
||||
authorizer authz.Authorizer,
|
||||
pipelineStore store.PipelineStore,
|
||||
) *Controller {
|
||||
return NewController(db, uidCheck, authorizer,
|
||||
return NewController(uidCheck, authorizer,
|
||||
repoStore, triggerStore, pipelineStore)
|
||||
}
|
||||
|
|
|
@ -16,21 +16,16 @@ package plugin
|
|||
|
||||
import (
|
||||
"github.com/harness/gitness/app/store"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
pluginStore store.PluginStore
|
||||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
pluginStore store.PluginStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
pluginStore: pluginStore,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@ import (
|
|||
"github.com/harness/gitness/app/store"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -26,8 +25,6 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
pluginStore store.PluginStore,
|
||||
) *Controller {
|
||||
return NewController(db, pluginStore)
|
||||
func ProvideController(pluginStore store.PluginStore) *Controller {
|
||||
return NewController(pluginStore)
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ func (c *Controller) CommentStatus(
|
|||
var pr *types.PullReq
|
||||
var act *types.PullReqActivity
|
||||
|
||||
err = controller.TxOptLock(ctx, c.db, func(ctx context.Context) error {
|
||||
err = controller.TxOptLock(ctx, c.tx, func(ctx context.Context) error {
|
||||
pr, err = c.pullreqStore.FindByNumber(ctx, repo.ID, prNum)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to find pull request by number: %w", err)
|
||||
|
|
|
@ -31,14 +31,13 @@ import (
|
|||
"github.com/harness/gitness/gitrpc"
|
||||
gitrpcenum "github.com/harness/gitness/gitrpc/enum"
|
||||
"github.com/harness/gitness/lock"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
urlProvider url.Provider
|
||||
authorizer authz.Authorizer
|
||||
pullreqStore store.PullReqStore
|
||||
|
@ -58,7 +57,7 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
urlProvider url.Provider,
|
||||
authorizer authz.Authorizer,
|
||||
pullreqStore store.PullReqStore,
|
||||
|
@ -77,7 +76,7 @@ func NewController(
|
|||
sseStreamer sse.Streamer,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
tx: tx,
|
||||
urlProvider: urlProvider,
|
||||
authorizer: authorizer,
|
||||
pullreqStore: pullreqStore,
|
||||
|
|
|
@ -52,7 +52,7 @@ func (c *Controller) List(
|
|||
|
||||
filter.TargetRepoID = repo.ID
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
list, err = c.pullreqStore.List(ctx, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to list pull requests: %w", err)
|
||||
|
|
|
@ -25,7 +25,6 @@ import (
|
|||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
|
@ -98,7 +97,7 @@ func (c *Controller) ReviewSubmit(
|
|||
|
||||
var review *types.PullReqReview
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
now := time.Now().UnixMilli()
|
||||
review = &types.PullReqReview{
|
||||
ID: 0,
|
||||
|
|
|
@ -24,7 +24,6 @@ import (
|
|||
"github.com/harness/gitness/app/api/usererror"
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
|
@ -95,7 +94,7 @@ func (c *Controller) ReviewerAdd(
|
|||
|
||||
var reviewer *types.PullReqReviewer
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
reviewer, err = c.reviewerStore.Find(ctx, pr.ID, in.ReviewerID)
|
||||
if err != nil && !errors.Is(err, store.ErrResourceNotFound) {
|
||||
return err
|
||||
|
|
|
@ -24,9 +24,9 @@ import (
|
|||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/lock"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -34,7 +34,7 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB, urlProvider url.Provider, authorizer authz.Authorizer,
|
||||
func ProvideController(tx dbtx.Transactor, urlProvider url.Provider, authorizer authz.Authorizer,
|
||||
pullReqStore store.PullReqStore, pullReqActivityStore store.PullReqActivityStore,
|
||||
codeCommentsView store.CodeCommentView,
|
||||
pullReqReviewStore store.PullReqReviewStore, pullReqReviewerStore store.PullReqReviewerStore,
|
||||
|
@ -43,7 +43,7 @@ func ProvideController(db *sqlx.DB, urlProvider url.Provider, authorizer authz.A
|
|||
mtxManager lock.MutexManager, codeCommentMigrator *codecomments.Migrator,
|
||||
pullreqService *pullreq.Service, sseStreamer sse.Streamer,
|
||||
) *Controller {
|
||||
return NewController(db, urlProvider, authorizer,
|
||||
return NewController(tx, urlProvider, authorizer,
|
||||
pullReqStore, pullReqActivityStore,
|
||||
codeCommentsView,
|
||||
pullReqReviewStore, pullReqReviewerStore,
|
||||
|
|
|
@ -29,16 +29,15 @@ import (
|
|||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
defaultBranch string
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
urlProvider url.Provider
|
||||
uidCheck check.PathUID
|
||||
authorizer authz.Authorizer
|
||||
|
@ -52,7 +51,7 @@ type Controller struct {
|
|||
|
||||
func NewController(
|
||||
defaultBranch string,
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
urlProvider url.Provider,
|
||||
uidCheck check.PathUID,
|
||||
authorizer authz.Authorizer,
|
||||
|
@ -65,7 +64,7 @@ func NewController(
|
|||
) *Controller {
|
||||
return &Controller{
|
||||
defaultBranch: defaultBranch,
|
||||
db: db,
|
||||
tx: tx,
|
||||
urlProvider: urlProvider,
|
||||
uidCheck: uidCheck,
|
||||
authorizer: authorizer,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/app/services/importer"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
)
|
||||
|
||||
|
@ -51,7 +50,7 @@ func (c *Controller) Import(ctx context.Context, session *auth.Session, in *Impo
|
|||
}
|
||||
|
||||
var repo *types.Repository
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
repo = remoteRepository.ToRepo(parentSpace.ID, in.UID, in.Description, &session.Principal)
|
||||
|
||||
err = c.repoStore.Create(ctx, repo)
|
||||
|
|
|
@ -40,7 +40,7 @@ func (c *Controller) ListPipelines(
|
|||
var count int64
|
||||
var pipelines []*types.Pipeline
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
count, err = c.pipelineStore.Count(ctx, repo.ID, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to count child executions: %w", err)
|
||||
|
|
|
@ -20,11 +20,11 @@ import (
|
|||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -32,13 +32,13 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(config *types.Config, db *sqlx.DB, urlProvider url.Provider,
|
||||
func ProvideController(config *types.Config, tx dbtx.Transactor, urlProvider url.Provider,
|
||||
uidCheck check.PathUID, authorizer authz.Authorizer, repoStore store.RepoStore,
|
||||
spaceStore store.SpaceStore, pipelineStore store.PipelineStore,
|
||||
principalStore store.PrincipalStore, rpcClient gitrpc.Interface,
|
||||
importer *importer.Repository,
|
||||
) *Controller {
|
||||
return NewController(config.Git.DefaultBranch, db, urlProvider,
|
||||
return NewController(config.Git.DefaultBranch, tx, urlProvider,
|
||||
uidCheck, authorizer, repoStore,
|
||||
spaceStore, pipelineStore, principalStore, rpcClient,
|
||||
importer)
|
||||
|
|
|
@ -19,12 +19,9 @@ import (
|
|||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/encrypt"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
uidCheck check.PathUID
|
||||
encrypter encrypt.Encrypter
|
||||
secretStore store.SecretStore
|
||||
|
@ -33,7 +30,6 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
uidCheck check.PathUID,
|
||||
authorizer authz.Authorizer,
|
||||
encrypter encrypt.Encrypter,
|
||||
|
@ -41,7 +37,6 @@ func NewController(
|
|||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
uidCheck: uidCheck,
|
||||
encrypter: encrypter,
|
||||
secretStore: secretStore,
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -29,12 +28,12 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
uidCheck check.PathUID,
|
||||
encrypter encrypt.Encrypter,
|
||||
secretStore store.SecretStore,
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return NewController(db, uidCheck, authorizer, encrypter, secretStore, spaceStore)
|
||||
return NewController(uidCheck, authorizer, encrypter, secretStore, spaceStore)
|
||||
}
|
||||
|
|
|
@ -39,6 +39,8 @@ func NewController(principalUIDCheck check.PrincipalUID, authorizer authz.Author
|
|||
}
|
||||
|
||||
func findServiceFromUID(ctx context.Context,
|
||||
principalStore store.PrincipalStore, serviceUID string) (*types.Service, error) {
|
||||
principalStore store.PrincipalStore,
|
||||
serviceUID string,
|
||||
) (*types.Service, error) {
|
||||
return principalStore.FindServiceByUID(ctx, serviceUID)
|
||||
}
|
||||
|
|
|
@ -23,10 +23,9 @@ import (
|
|||
"github.com/harness/gitness/app/sse"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -37,7 +36,7 @@ var (
|
|||
type Controller struct {
|
||||
nestedSpacesEnabled bool
|
||||
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
urlProvider url.Provider
|
||||
sseStreamer sse.Streamer
|
||||
uidCheck check.PathUID
|
||||
|
@ -56,7 +55,7 @@ type Controller struct {
|
|||
exporter *exporter.Repository
|
||||
}
|
||||
|
||||
func NewController(config *types.Config, db *sqlx.DB, urlProvider url.Provider,
|
||||
func NewController(config *types.Config, tx dbtx.Transactor, urlProvider url.Provider,
|
||||
sseStreamer sse.Streamer, uidCheck check.PathUID, authorizer authz.Authorizer,
|
||||
spacePathStore store.SpacePathStore, pipelineStore store.PipelineStore, secretStore store.SecretStore,
|
||||
connectorStore store.ConnectorStore, templateStore store.TemplateStore, spaceStore store.SpaceStore,
|
||||
|
@ -65,7 +64,7 @@ func NewController(config *types.Config, db *sqlx.DB, urlProvider url.Provider,
|
|||
) *Controller {
|
||||
return &Controller{
|
||||
nestedSpacesEnabled: config.NestedSpacesEnabled,
|
||||
db: db,
|
||||
tx: tx,
|
||||
urlProvider: urlProvider,
|
||||
sseStreamer: sseStreamer,
|
||||
uidCheck: uidCheck,
|
||||
|
|
|
@ -26,7 +26,6 @@ import (
|
|||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/app/bootstrap"
|
||||
"github.com/harness/gitness/app/paths"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
@ -61,7 +60,7 @@ func (c *Controller) Create(
|
|||
return nil, fmt.Errorf("failed to sanitize input: %w", err)
|
||||
}
|
||||
var space *types.Space
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
space, err = c.createSpaceInnerInTX(ctx, session, parentID, in)
|
||||
return err
|
||||
})
|
||||
|
|
|
@ -23,7 +23,6 @@ import (
|
|||
"github.com/harness/gitness/app/api/usererror"
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/app/services/exporter"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
)
|
||||
|
@ -72,7 +71,7 @@ func (c *Controller) Export(ctx context.Context, session *auth.Session, spaceRef
|
|||
repos = append(repos, reposInPage...)
|
||||
}
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.exporter.RunManyForSpace(ctx, space.ID, repos, providerInfo)
|
||||
if errors.Is(err, exporter.ErrJobRunning) {
|
||||
return usererror.ConflictWithPayload("export already in progress")
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
"github.com/harness/gitness/app/api/usererror"
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/app/services/importer"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
)
|
||||
|
||||
|
@ -60,7 +59,7 @@ func (c *Controller) Import(ctx context.Context, session *auth.Session, in *Impo
|
|||
cloneURLs := make([]string, len(remoteRepositories))
|
||||
|
||||
var space *types.Space
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
space, err = c.createSpaceInnerInTX(ctx, session, parentSpaceID, &in.CreateInput)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -45,7 +45,7 @@ func (c *Controller) ListSecrets(
|
|||
var count int64
|
||||
var secrets []*types.Secret
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
count, err = c.secretStore.Count(ctx, space.ID, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to count child executions: %w", err)
|
||||
|
|
|
@ -51,7 +51,7 @@ func (c *Controller) ListSpacesNoAuth(
|
|||
var spaces []*types.Space
|
||||
var count int64
|
||||
|
||||
err := dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
err := c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||
count, err = c.spaceStore.Count(ctx, spaceID, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to count child spaces: %w", err)
|
||||
|
|
|
@ -43,7 +43,7 @@ func (c *Controller) MembershipList(ctx context.Context,
|
|||
var memberships []types.MembershipUser
|
||||
var membershipsCount int64
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
memberships, err = c.membershipStore.ListUsers(ctx, space.ID, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to list memberships for space: %w", err)
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
|
||||
apiauth "github.com/harness/gitness/app/api/auth"
|
||||
"github.com/harness/gitness/app/auth"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
)
|
||||
|
@ -95,7 +94,7 @@ func (c *Controller) moveInner(
|
|||
space *types.Space,
|
||||
inUID *string,
|
||||
) error {
|
||||
return dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
return c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
// delete old primary segment
|
||||
err := c.spacePathStore.DeletePrimarySegment(ctx, space.ID)
|
||||
if err != nil {
|
||||
|
|
|
@ -22,11 +22,11 @@ import (
|
|||
"github.com/harness/gitness/app/sse"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -34,7 +34,7 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(config *types.Config, db *sqlx.DB, urlProvider url.Provider, sseStreamer sse.Streamer,
|
||||
func ProvideController(config *types.Config, tx dbtx.Transactor, urlProvider url.Provider, sseStreamer sse.Streamer,
|
||||
uidCheck check.PathUID, authorizer authz.Authorizer, spacePathStore store.SpacePathStore,
|
||||
pipelineStore store.PipelineStore, secretStore store.SecretStore,
|
||||
connectorStore store.ConnectorStore, templateStore store.TemplateStore,
|
||||
|
@ -42,7 +42,7 @@ func ProvideController(config *types.Config, db *sqlx.DB, urlProvider url.Provid
|
|||
repoCtrl *repo.Controller, membershipStore store.MembershipStore, importer *importer.Repository,
|
||||
exporter *exporter.Repository,
|
||||
) *Controller {
|
||||
return NewController(config, db, urlProvider, sseStreamer, uidCheck, authorizer,
|
||||
return NewController(config, tx, urlProvider, sseStreamer, uidCheck, authorizer,
|
||||
spacePathStore, pipelineStore, secretStore,
|
||||
connectorStore, templateStore,
|
||||
spaceStore, repoStore, principalStore,
|
||||
|
|
|
@ -18,12 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
uidCheck check.PathUID
|
||||
templateStore store.TemplateStore
|
||||
authorizer authz.Authorizer
|
||||
|
@ -31,14 +28,12 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
uidCheck check.PathUID,
|
||||
authorizer authz.Authorizer,
|
||||
templateStore store.TemplateStore,
|
||||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
uidCheck: uidCheck,
|
||||
templateStore: templateStore,
|
||||
authorizer: authorizer,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -28,11 +27,11 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
uidCheck check.PathUID,
|
||||
templateStore store.TemplateStore,
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
) *Controller {
|
||||
return NewController(db, uidCheck, authorizer, templateStore, spaceStore)
|
||||
return NewController(uidCheck, authorizer, templateStore, spaceStore)
|
||||
}
|
||||
|
|
|
@ -18,12 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
authorizer authz.Authorizer
|
||||
triggerStore store.TriggerStore
|
||||
uidCheck check.PathUID
|
||||
|
@ -32,7 +29,6 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
authorizer authz.Authorizer,
|
||||
triggerStore store.TriggerStore,
|
||||
uidCheck check.PathUID,
|
||||
|
@ -40,7 +36,6 @@ func NewController(
|
|||
repoStore store.RepoStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
authorizer: authorizer,
|
||||
triggerStore: triggerStore,
|
||||
uidCheck: uidCheck,
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -28,12 +27,12 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(db *sqlx.DB,
|
||||
func ProvideController(
|
||||
authorizer authz.Authorizer,
|
||||
triggerStore store.TriggerStore,
|
||||
uidCheck check.PathUID,
|
||||
pipelineStore store.PipelineStore,
|
||||
repoStore store.RepoStore,
|
||||
) *Controller {
|
||||
return NewController(db, authorizer, triggerStore, uidCheck, pipelineStore, repoStore)
|
||||
return NewController(authorizer, triggerStore, uidCheck, pipelineStore, repoStore)
|
||||
}
|
||||
|
|
|
@ -20,8 +20,6 @@ import (
|
|||
|
||||
"github.com/harness/gitness/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type TxOptionRetryCount int
|
||||
|
@ -30,7 +28,7 @@ type TxOptionRetryCount int
|
|||
// during the operation, the function will retry the whole transaction again (to the maximum of 5 times,
|
||||
// but this can be overridden by providing an additional TxOptionRetryCount option).
|
||||
func TxOptLock(ctx context.Context,
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
txFn func(ctx context.Context) error,
|
||||
opts ...interface{},
|
||||
) (err error) {
|
||||
|
@ -42,7 +40,7 @@ func TxOptLock(ctx context.Context,
|
|||
}
|
||||
|
||||
for try := 0; try < tries; try++ {
|
||||
err = dbtx.New(db).WithTx(ctx, txFn, opts...)
|
||||
err = tx.WithTx(ctx, txFn, opts...)
|
||||
if !errors.Is(err, store.ErrVersionConflict) {
|
||||
break
|
||||
}
|
||||
|
|
|
@ -19,16 +19,16 @@ import (
|
|||
|
||||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
principalUIDCheck check.PrincipalUID
|
||||
authorizer authz.Authorizer
|
||||
principalStore store.PrincipalStore
|
||||
|
@ -37,7 +37,7 @@ type Controller struct {
|
|||
}
|
||||
|
||||
func NewController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
principalUIDCheck check.PrincipalUID,
|
||||
authorizer authz.Authorizer,
|
||||
principalStore store.PrincipalStore,
|
||||
|
@ -45,7 +45,7 @@ func NewController(
|
|||
membershipStore store.MembershipStore,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
db: db,
|
||||
tx: tx,
|
||||
principalUIDCheck: principalUIDCheck,
|
||||
authorizer: authorizer,
|
||||
principalStore: principalStore,
|
||||
|
|
|
@ -44,7 +44,7 @@ func (c *Controller) MembershipSpaces(ctx context.Context,
|
|||
var membershipSpaces []types.MembershipSpace
|
||||
var membershipsCount int64
|
||||
|
||||
err = dbtx.New(c.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = c.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
membershipSpaces, err = c.membershipStore.ListSpaces(ctx, user.ID, filter)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to list membership spaces for user: %w", err)
|
||||
|
|
|
@ -17,10 +17,10 @@ package user
|
|||
import (
|
||||
"github.com/harness/gitness/app/auth/authz"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -29,7 +29,7 @@ var WireSet = wire.NewSet(
|
|||
)
|
||||
|
||||
func ProvideController(
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
principalUIDCheck check.PrincipalUID,
|
||||
authorizer authz.Authorizer,
|
||||
principalStore store.PrincipalStore,
|
||||
|
@ -37,7 +37,7 @@ func ProvideController(
|
|||
membershipStore store.MembershipStore,
|
||||
) *Controller {
|
||||
return NewController(
|
||||
db,
|
||||
tx,
|
||||
principalUIDCheck,
|
||||
authorizer,
|
||||
principalStore,
|
||||
|
|
|
@ -27,15 +27,12 @@ import (
|
|||
"github.com/harness/gitness/encrypt"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
allowLoopback bool
|
||||
allowPrivateNetwork bool
|
||||
|
||||
db *sqlx.DB
|
||||
authorizer authz.Authorizer
|
||||
webhookStore store.WebhookStore
|
||||
webhookExecutionStore store.WebhookExecutionStore
|
||||
|
@ -47,7 +44,6 @@ type Controller struct {
|
|||
func NewController(
|
||||
allowLoopback bool,
|
||||
allowPrivateNetwork bool,
|
||||
db *sqlx.DB,
|
||||
authorizer authz.Authorizer,
|
||||
webhookStore store.WebhookStore,
|
||||
webhookExecutionStore store.WebhookExecutionStore,
|
||||
|
@ -58,7 +54,6 @@ func NewController(
|
|||
return &Controller{
|
||||
allowLoopback: allowLoopback,
|
||||
allowPrivateNetwork: allowPrivateNetwork,
|
||||
db: db,
|
||||
authorizer: authorizer,
|
||||
webhookStore: webhookStore,
|
||||
webhookExecutionStore: webhookExecutionStore,
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
"github.com/harness/gitness/encrypt"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -29,9 +28,12 @@ var WireSet = wire.NewSet(
|
|||
ProvideController,
|
||||
)
|
||||
|
||||
func ProvideController(config webhook.Config, db *sqlx.DB, authorizer authz.Authorizer,
|
||||
func ProvideController(config webhook.Config, authorizer authz.Authorizer,
|
||||
webhookStore store.WebhookStore, webhookExecutionStore store.WebhookExecutionStore,
|
||||
repoStore store.RepoStore, webhookService *webhook.Service, encrypter encrypt.Encrypter) *Controller {
|
||||
return NewController(config.AllowLoopback, config.AllowPrivateNetwork,
|
||||
db, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter)
|
||||
repoStore store.RepoStore, webhookService *webhook.Service, encrypter encrypt.Encrypter,
|
||||
) *Controller {
|
||||
return NewController(
|
||||
config.AllowLoopback, config.AllowPrivateNetwork, authorizer,
|
||||
webhookStore, webhookExecutionStore,
|
||||
repoStore, webhookService, encrypter)
|
||||
}
|
||||
|
|
|
@ -37,7 +37,6 @@ import (
|
|||
"github.com/drone/drone-yaml/yaml/linter"
|
||||
v1yaml "github.com/drone/spec/dist/go"
|
||||
"github.com/drone/spec/dist/go/parse/normalize"
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
|
@ -80,7 +79,7 @@ type triggerer struct {
|
|||
executionStore store.ExecutionStore
|
||||
checkStore store.CheckStore
|
||||
stageStore store.StageStore
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
pipelineStore store.PipelineStore
|
||||
fileService file.Service
|
||||
scheduler scheduler.Scheduler
|
||||
|
@ -92,7 +91,7 @@ func New(
|
|||
checkStore store.CheckStore,
|
||||
stageStore store.StageStore,
|
||||
pipelineStore store.PipelineStore,
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
repoStore store.RepoStore,
|
||||
scheduler scheduler.Scheduler,
|
||||
fileService file.Service,
|
||||
|
@ -102,7 +101,7 @@ func New(
|
|||
checkStore: checkStore,
|
||||
stageStore: stageStore,
|
||||
scheduler: scheduler,
|
||||
db: db,
|
||||
tx: tx,
|
||||
pipelineStore: pipelineStore,
|
||||
fileService: fileService,
|
||||
repoStore: repoStore,
|
||||
|
@ -449,7 +448,7 @@ func (t *triggerer) createExecutionWithStages(
|
|||
execution *types.Execution,
|
||||
stages []*types.Stage,
|
||||
) error {
|
||||
return dbtx.New(t.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
return t.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
err := t.executionStore.Create(ctx, execution)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -18,9 +18,9 @@ import (
|
|||
"github.com/harness/gitness/app/pipeline/file"
|
||||
"github.com/harness/gitness/app/pipeline/scheduler"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
|
@ -33,12 +33,12 @@ func ProvideTriggerer(
|
|||
executionStore store.ExecutionStore,
|
||||
checkStore store.CheckStore,
|
||||
stageStore store.StageStore,
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
pipelineStore store.PipelineStore,
|
||||
fileService file.Service,
|
||||
scheduler scheduler.Scheduler,
|
||||
repoStore store.RepoStore,
|
||||
) Triggerer {
|
||||
return New(executionStore, checkStore, stageStore, pipelineStore,
|
||||
db, repoStore, scheduler, fileService)
|
||||
tx, repoStore, scheduler, fileService)
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ func (r *Repository) processPipelines(ctx context.Context,
|
|||
|
||||
nowMilli := now.UnixMilli()
|
||||
|
||||
err = dbtx.New(r.db).WithTx(ctx, func(ctx context.Context) error {
|
||||
err = r.tx.WithTx(ctx, func(ctx context.Context) error {
|
||||
for _, p := range pipelineFiles {
|
||||
pipeline := &types.Pipeline{
|
||||
Description: "",
|
||||
|
|
|
@ -33,10 +33,10 @@ import (
|
|||
"github.com/harness/gitness/encrypt"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
gitness_store "github.com/harness/gitness/store"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
|
@ -54,7 +54,7 @@ type Repository struct {
|
|||
defaultBranch string
|
||||
urlProvider gitnessurl.Provider
|
||||
git gitrpc.Interface
|
||||
db *sqlx.DB
|
||||
tx dbtx.Transactor
|
||||
repoStore store.RepoStore
|
||||
pipelineStore store.PipelineStore
|
||||
triggerStore store.TriggerStore
|
||||
|
|
|
@ -21,10 +21,10 @@ import (
|
|||
"github.com/harness/gitness/app/url"
|
||||
"github.com/harness/gitness/encrypt"
|
||||
"github.com/harness/gitness/gitrpc"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var WireSet = wire.NewSet(
|
||||
|
@ -35,7 +35,7 @@ func ProvideRepoImporter(
|
|||
config *types.Config,
|
||||
urlProvider url.Provider,
|
||||
git gitrpc.Interface,
|
||||
db *sqlx.DB,
|
||||
tx dbtx.Transactor,
|
||||
repoStore store.RepoStore,
|
||||
pipelineStore store.PipelineStore,
|
||||
triggerStore store.TriggerStore,
|
||||
|
@ -48,7 +48,7 @@ func ProvideRepoImporter(
|
|||
defaultBranch: config.Git.DefaultBranch,
|
||||
urlProvider: urlProvider,
|
||||
git: git,
|
||||
db: db,
|
||||
tx: tx,
|
||||
repoStore: repoStore,
|
||||
pipelineStore: pipelineStore,
|
||||
triggerStore: triggerStore,
|
||||
|
|
|
@ -33,14 +33,11 @@ import (
|
|||
"github.com/harness/gitness/pubsub"
|
||||
"github.com/harness/gitness/stream"
|
||||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
pullreqEvReporter *pullreqevents.Reporter
|
||||
gitRPCClient gitrpc.Interface
|
||||
db *sqlx.DB
|
||||
repoGitInfoCache store.RepoGitInfoCache
|
||||
repoStore store.RepoStore
|
||||
pullreqStore store.PullReqStore
|
||||
|
@ -64,7 +61,6 @@ func New(ctx context.Context,
|
|||
pullreqEvReaderFactory *events.ReaderFactory[*pullreqevents.Reader],
|
||||
pullreqEvReporter *pullreqevents.Reporter,
|
||||
gitRPCClient gitrpc.Interface,
|
||||
db *sqlx.DB,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
repoStore store.RepoStore,
|
||||
pullreqStore store.PullReqStore,
|
||||
|
@ -79,7 +75,6 @@ func New(ctx context.Context,
|
|||
service := &Service{
|
||||
pullreqEvReporter: pullreqEvReporter,
|
||||
gitRPCClient: gitRPCClient,
|
||||
db: db,
|
||||
repoGitInfoCache: repoGitInfoCache,
|
||||
repoStore: repoStore,
|
||||
pullreqStore: pullreqStore,
|
||||
|
|
|
@ -29,7 +29,6 @@ import (
|
|||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var WireSet = wire.NewSet(
|
||||
|
@ -42,7 +41,6 @@ func ProvideService(ctx context.Context,
|
|||
pullReqEvFactory *events.ReaderFactory[*pullreqevents.Reader],
|
||||
pullReqEvReporter *pullreqevents.Reporter,
|
||||
gitRPCClient gitrpc.Interface,
|
||||
db *sqlx.DB,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
repoStore store.RepoStore,
|
||||
pullreqStore store.PullReqStore,
|
||||
|
@ -55,6 +53,6 @@ func ProvideService(ctx context.Context,
|
|||
sseStreamer sse.Streamer,
|
||||
) (*Service, error) {
|
||||
return New(ctx, config, gitReaderFactory, pullReqEvFactory, pullReqEvReporter, gitRPCClient,
|
||||
db, repoGitInfoCache, repoStore, pullreqStore, activityStore,
|
||||
repoGitInfoCache, repoStore, pullreqStore, activityStore,
|
||||
codeCommentView, codeCommentMigrator, fileViewStore, pubsub, urlProvider, sseStreamer)
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ type logs struct {
|
|||
Data []byte `db:"log_data"`
|
||||
}
|
||||
|
||||
// NewLogStore returns a new LogStore.
|
||||
// NewDatabaseLogStore returns a new LogStore.
|
||||
func NewDatabaseLogStore(db *sqlx.DB) store.LogStore {
|
||||
return &logStore{
|
||||
db: db,
|
||||
|
|
|
@ -68,6 +68,7 @@ import (
|
|||
"github.com/harness/gitness/livelog"
|
||||
"github.com/harness/gitness/lock"
|
||||
"github.com/harness/gitness/pubsub"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
|
||||
|
@ -81,6 +82,7 @@ func initSystem(ctx context.Context, config *types.Config) (*cliserver.System, e
|
|||
bootstrap.WireSet,
|
||||
cliserver.ProvideDatabaseConfig,
|
||||
database.WireSet,
|
||||
dbtx.WireSet,
|
||||
cache.WireSet,
|
||||
router.WireSet,
|
||||
pullreqservice.WireSet,
|
||||
|
|
|
@ -8,7 +8,6 @@ package main
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
check2 "github.com/harness/gitness/app/api/controller/check"
|
||||
"github.com/harness/gitness/app/api/controller/connector"
|
||||
"github.com/harness/gitness/app/api/controller/execution"
|
||||
|
@ -67,6 +66,7 @@ import (
|
|||
"github.com/harness/gitness/livelog"
|
||||
"github.com/harness/gitness/lock"
|
||||
"github.com/harness/gitness/pubsub"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
)
|
||||
|
@ -79,6 +79,8 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
accessorTx := dbtx.ProvideAccessorTx(db)
|
||||
transactor := dbtx.ProvideTransactor(accessorTx)
|
||||
principalUID := check.ProvidePrincipalUIDCheck()
|
||||
spacePathTransformation := store.ProvidePathTransformation()
|
||||
spacePathStore := database.ProvideSpacePathStore(db, spacePathTransformation)
|
||||
|
@ -92,7 +94,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
principalUIDTransformation := store.ProvidePrincipalUIDTransformation()
|
||||
principalStore := database.ProvidePrincipalStore(db, principalUIDTransformation)
|
||||
tokenStore := database.ProvideTokenStore(db)
|
||||
controller := user.ProvideController(db, principalUID, authorizer, principalStore, tokenStore, membershipStore)
|
||||
controller := user.ProvideController(transactor, principalUID, authorizer, principalStore, tokenStore, membershipStore)
|
||||
serviceController := service.NewController(principalUID, authorizer, principalStore)
|
||||
bootstrapBootstrap := bootstrap.ProvideBootstrap(config, controller, serviceController)
|
||||
authenticator := authn.ProvideAuthenticator(config, principalStore, tokenStore)
|
||||
|
@ -131,11 +133,11 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
return nil, err
|
||||
}
|
||||
streamer := sse.ProvideEventsStreaming(pubSub)
|
||||
repository, err := importer.ProvideRepoImporter(config, provider, gitrpcInterface, db, repoStore, pipelineStore, triggerStore, encrypter, jobScheduler, executor, streamer)
|
||||
repository, err := importer.ProvideRepoImporter(config, provider, gitrpcInterface, transactor, repoStore, pipelineStore, triggerStore, encrypter, jobScheduler, executor, streamer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
repoController := repo.ProvideController(config, db, provider, pathUID, authorizer, repoStore, spaceStore, pipelineStore, principalStore, gitrpcInterface, repository)
|
||||
repoController := repo.ProvideController(config, transactor, provider, pathUID, authorizer, repoStore, spaceStore, pipelineStore, principalStore, gitrpcInterface, repository)
|
||||
executionStore := database.ProvideExecutionStore(db)
|
||||
checkStore := database.ProvideCheckStore(db, principalInfoCache)
|
||||
stageStore := database.ProvideStageStore(db)
|
||||
|
@ -147,11 +149,11 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
cancelerCanceler := canceler.ProvideCanceler(executionStore, streamer, repoStore, schedulerScheduler, stageStore, stepStore)
|
||||
commitService := commit.ProvideService(gitrpcInterface)
|
||||
fileService := file.ProvideService(gitrpcInterface)
|
||||
triggererTriggerer := triggerer.ProvideTriggerer(executionStore, checkStore, stageStore, db, pipelineStore, fileService, schedulerScheduler, repoStore)
|
||||
executionController := execution.ProvideController(db, authorizer, executionStore, checkStore, cancelerCanceler, commitService, triggererTriggerer, repoStore, stageStore, pipelineStore)
|
||||
triggererTriggerer := triggerer.ProvideTriggerer(executionStore, checkStore, stageStore, transactor, pipelineStore, fileService, schedulerScheduler, repoStore)
|
||||
executionController := execution.ProvideController(transactor, authorizer, executionStore, checkStore, cancelerCanceler, commitService, triggererTriggerer, repoStore, stageStore, pipelineStore)
|
||||
logStore := logs.ProvideLogStore(db, config)
|
||||
logStream := livelog.ProvideLogStream(config)
|
||||
logsController := logs2.ProvideController(db, authorizer, executionStore, repoStore, pipelineStore, stageStore, stepStore, logStore, logStream)
|
||||
logStream := livelog.ProvideLogStream()
|
||||
logsController := logs2.ProvideController(authorizer, executionStore, repoStore, pipelineStore, stageStore, stepStore, logStore, logStream)
|
||||
secretStore := database.ProvideSecretStore(db)
|
||||
connectorStore := database.ProvideConnectorStore(db)
|
||||
templateStore := database.ProvideTemplateStore(db)
|
||||
|
@ -159,14 +161,14 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
spaceController := space.ProvideController(config, db, provider, streamer, pathUID, authorizer, spacePathStore, pipelineStore, secretStore, connectorStore, templateStore, spaceStore, repoStore, principalStore, repoController, membershipStore, repository, exporterRepository)
|
||||
pipelineController := pipeline.ProvideController(db, pathUID, repoStore, triggerStore, authorizer, pipelineStore)
|
||||
secretController := secret.ProvideController(db, pathUID, encrypter, secretStore, authorizer, spaceStore)
|
||||
triggerController := trigger.ProvideController(db, authorizer, triggerStore, pathUID, pipelineStore, repoStore)
|
||||
connectorController := connector.ProvideController(db, pathUID, connectorStore, authorizer, spaceStore)
|
||||
templateController := template.ProvideController(db, pathUID, templateStore, authorizer, spaceStore)
|
||||
spaceController := space.ProvideController(config, transactor, provider, streamer, pathUID, authorizer, spacePathStore, pipelineStore, secretStore, connectorStore, templateStore, spaceStore, repoStore, principalStore, repoController, membershipStore, repository, exporterRepository)
|
||||
pipelineController := pipeline.ProvideController(pathUID, repoStore, triggerStore, authorizer, pipelineStore)
|
||||
secretController := secret.ProvideController(pathUID, encrypter, secretStore, authorizer, spaceStore)
|
||||
triggerController := trigger.ProvideController(authorizer, triggerStore, pathUID, pipelineStore, repoStore)
|
||||
connectorController := connector.ProvideController(pathUID, connectorStore, authorizer, spaceStore)
|
||||
templateController := template.ProvideController(pathUID, templateStore, authorizer, spaceStore)
|
||||
pluginStore := database.ProvidePluginStore(db)
|
||||
pluginController := plugin.ProvideController(db, pluginStore)
|
||||
pluginController := plugin.ProvideController(pluginStore)
|
||||
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
|
||||
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
|
||||
codeCommentView := database.ProvideCodeCommentView(db)
|
||||
|
@ -196,11 +198,11 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
}
|
||||
repoGitInfoView := database.ProvideRepoGitInfoView(db)
|
||||
repoGitInfoCache := cache.ProvideRepoGitInfoCache(repoGitInfoView)
|
||||
pullreqService, err := pullreq.ProvideService(ctx, config, readerFactory, eventsReaderFactory, reporter, gitrpcInterface, db, repoGitInfoCache, repoStore, pullReqStore, pullReqActivityStore, codeCommentView, migrator, pullReqFileViewStore, pubSub, provider, streamer)
|
||||
pullreqService, err := pullreq.ProvideService(ctx, config, readerFactory, eventsReaderFactory, reporter, gitrpcInterface, repoGitInfoCache, repoStore, pullReqStore, pullReqActivityStore, codeCommentView, migrator, pullReqFileViewStore, pubSub, provider, streamer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pullreqController := pullreq2.ProvideController(db, provider, authorizer, pullReqStore, pullReqActivityStore, codeCommentView, pullReqReviewStore, pullReqReviewerStore, repoStore, principalStore, pullReqFileViewStore, gitrpcInterface, reporter, mutexManager, migrator, pullreqService, streamer)
|
||||
pullreqController := pullreq2.ProvideController(transactor, provider, authorizer, pullReqStore, pullReqActivityStore, codeCommentView, pullReqReviewStore, pullReqReviewerStore, repoStore, principalStore, pullReqFileViewStore, gitrpcInterface, reporter, mutexManager, migrator, pullreqService, streamer)
|
||||
webhookConfig := server.ProvideWebhookConfig(config)
|
||||
webhookStore := database.ProvideWebhookStore(db)
|
||||
webhookExecutionStore := database.ProvideWebhookExecutionStore(db)
|
||||
|
@ -208,15 +210,15 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
webhookController := webhook2.ProvideController(webhookConfig, db, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter)
|
||||
webhookController := webhook2.ProvideController(webhookConfig, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter)
|
||||
eventsReporter, err := events3.ProvideReporter(eventsSystem)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
githookController := githook.ProvideController(db, authorizer, principalStore, repoStore, eventsReporter, pullReqStore, provider)
|
||||
githookController := githook.ProvideController(authorizer, principalStore, repoStore, eventsReporter, pullReqStore, provider)
|
||||
serviceaccountController := serviceaccount.NewController(principalUID, authorizer, principalStore, spaceStore, repoStore, tokenStore)
|
||||
principalController := principal.ProvideController(principalStore)
|
||||
checkController := check2.ProvideController(db, authorizer, repoStore, checkStore, gitrpcInterface)
|
||||
checkController := check2.ProvideController(transactor, authorizer, repoStore, checkStore, gitrpcInterface)
|
||||
systemController := system.NewController(principalStore, config)
|
||||
apiHandler := router.ProvideAPIHandler(config, authenticator, repoController, executionController, logsController, spaceController, pipelineController, secretController, triggerController, connectorController, templateController, pluginController, pullreqController, webhookController, githookController, serviceaccountController, controller, principalController, checkController, systemController)
|
||||
gitHandler := router.ProvideGitHandler(config, provider, repoStore, authenticator, authorizer, gitrpcInterface)
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
package livelog
|
||||
|
||||
import (
|
||||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
|
@ -26,6 +24,6 @@ var WireSet = wire.NewSet(
|
|||
)
|
||||
|
||||
// ProvideLogStream provides an implementation of a logs streamer.
|
||||
func ProvideLogStream(config *types.Config) LogStream {
|
||||
func ProvideLogStream() LogStream {
|
||||
return NewMemory()
|
||||
}
|
||||
|
|
|
@ -20,20 +20,7 @@ import (
|
|||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// ctxKeyDB is context key for storing and retrieving Transactor to and from a context.
|
||||
type ctxKeyDB struct{}
|
||||
|
||||
// PutTransactor places Transactor into the context.
|
||||
func PutTransactor(ctx context.Context, t Transactor) context.Context {
|
||||
return context.WithValue(ctx, ctxKeyDB{}, t)
|
||||
}
|
||||
|
||||
// WithTx starts a transaction with Transactor interface from the context. It will panic if there is no Transactor.
|
||||
func WithTx(ctx context.Context, txFn func(ctx context.Context) error, opts ...interface{}) error {
|
||||
return ctx.Value(ctxKeyDB{}).(Transactor).WithTx(ctx, txFn, opts...)
|
||||
}
|
||||
|
||||
// ctxKeyTx is context key for storing and retrieving Tx to and from a context.
|
||||
// ctxKeyTx is context key for storing and retrieving TransactionAccessor to and from a context.
|
||||
type ctxKeyTx struct{}
|
||||
|
||||
// GetAccessor returns Accessor interface from the context if it exists or creates a new one from the provided *sql.DB.
|
||||
|
|
|
@ -22,7 +22,7 @@ import (
|
|||
)
|
||||
|
||||
// New returns new database Runner interface.
|
||||
func New(db *sqlx.DB) Transactor {
|
||||
func New(db *sqlx.DB) AccessorTx {
|
||||
mx := getLocker(db)
|
||||
run := &runnerDB{
|
||||
db: sqlDB{db},
|
||||
|
@ -34,7 +34,7 @@ func New(db *sqlx.DB) Transactor {
|
|||
// transactor is combines data access capabilities with transaction starting.
|
||||
type transactor interface {
|
||||
Accessor
|
||||
startTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)
|
||||
startTx(ctx context.Context, opts *sql.TxOptions) (TransactionAccessor, error)
|
||||
}
|
||||
|
||||
// sqlDB is a wrapper for the sqlx.DB that implements the transactor interface.
|
||||
|
@ -44,7 +44,7 @@ type sqlDB struct {
|
|||
|
||||
var _ transactor = (*sqlDB)(nil)
|
||||
|
||||
func (db sqlDB) startTx(ctx context.Context, opts *sql.TxOptions) (Tx, error) {
|
||||
func (db sqlDB) startTx(ctx context.Context, opts *sql.TxOptions) (TransactionAccessor, error) {
|
||||
tx, err := db.DB.BeginTxx(ctx, opts)
|
||||
return tx, err
|
||||
}
|
||||
|
|
|
@ -40,15 +40,19 @@ type Transaction interface {
|
|||
Rollback() error
|
||||
}
|
||||
|
||||
// Transactor is used to access the database. It combines Accessor interface
|
||||
// with capability to run functions in a transaction.
|
||||
type Transactor interface {
|
||||
Accessor
|
||||
WithTx(ctx context.Context, txFn func(ctx context.Context) error, opts ...interface{}) error
|
||||
}
|
||||
|
||||
// Tx combines data access capabilities with the transaction commit and rollback.
|
||||
type Tx interface {
|
||||
// AccessorTx is used to access the database. It combines Accessor interface
|
||||
// with Transactor (capability to run functions in a transaction).
|
||||
type AccessorTx interface {
|
||||
Accessor
|
||||
Transactor
|
||||
}
|
||||
|
||||
// TransactionAccessor combines data access capabilities with the transaction commit and rollback.
|
||||
type TransactionAccessor interface {
|
||||
Transaction
|
||||
Accessor
|
||||
Transaction
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ type runnerDB struct {
|
|||
mx locker
|
||||
}
|
||||
|
||||
var _ Transactor = runnerDB{}
|
||||
var _ AccessorTx = runnerDB{}
|
||||
|
||||
func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error, opts ...interface{}) error {
|
||||
var txOpts *sql.TxOptions
|
||||
|
@ -57,9 +57,9 @@ func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error,
|
|||
}
|
||||
|
||||
rtx := &runnerTx{
|
||||
Tx: tx,
|
||||
commit: false,
|
||||
rollback: false,
|
||||
TransactionAccessor: tx,
|
||||
commit: false,
|
||||
rollback: false,
|
||||
}
|
||||
|
||||
defer func() {
|
||||
|
@ -69,7 +69,7 @@ func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error,
|
|||
_ = tx.Rollback() // ignoring the rollback error
|
||||
}()
|
||||
|
||||
err = txFn(context.WithValue(ctx, ctxKeyTx{}, Tx(rtx)))
|
||||
err = txFn(context.WithValue(ctx, ctxKeyTx{}, TransactionAccessor(rtx)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -162,15 +162,15 @@ func (r runnerDB) SelectContext(ctx context.Context, dest interface{}, query str
|
|||
// runnerTx executes sqlx database transaction calls.
|
||||
// Locking is not used because runnerDB locks the entire transaction.
|
||||
type runnerTx struct {
|
||||
Tx
|
||||
TransactionAccessor
|
||||
commit bool
|
||||
rollback bool
|
||||
}
|
||||
|
||||
var _ Tx = (*runnerTx)(nil)
|
||||
var _ TransactionAccessor = (*runnerTx)(nil)
|
||||
|
||||
func (r *runnerTx) Commit() error {
|
||||
err := r.Tx.Commit()
|
||||
err := r.TransactionAccessor.Commit()
|
||||
if err == nil {
|
||||
r.commit = true
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ func (r *runnerTx) Commit() error {
|
|||
}
|
||||
|
||||
func (r *runnerTx) Rollback() error {
|
||||
err := r.Tx.Rollback()
|
||||
err := r.TransactionAccessor.Rollback()
|
||||
if err == nil {
|
||||
r.rollback = true
|
||||
}
|
||||
|
|
|
@ -174,7 +174,7 @@ type dbMock struct {
|
|||
|
||||
var _ transactor = (*dbMock)(nil)
|
||||
|
||||
func (d *dbMock) startTx(context.Context, *sql.TxOptions) (Tx, error) {
|
||||
func (d *dbMock) startTx(context.Context, *sql.TxOptions) (TransactionAccessor, error) {
|
||||
d.createdTx = &txMock{
|
||||
t: d.t,
|
||||
errCommit: d.errCommit,
|
||||
|
@ -194,7 +194,7 @@ type txMock struct {
|
|||
rollback bool
|
||||
}
|
||||
|
||||
var _ Tx = (*txMock)(nil)
|
||||
var _ TransactionAccessor = (*txMock)(nil)
|
||||
|
||||
func (tx *txMock) Commit() error {
|
||||
if tx.finished {
|
||||
|
@ -218,15 +218,16 @@ func (tx *txMock) Rollback() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// nolint:rowserrcheck,sqlclosecheck // it's a unit test, works with mocked DB
|
||||
func TestLocking(t *testing.T) {
|
||||
const dummyQuery = ""
|
||||
tests := []struct {
|
||||
name string
|
||||
fn func(db Transactor, l *lockerCounter)
|
||||
fn func(db AccessorTx, l *lockerCounter)
|
||||
}{
|
||||
{
|
||||
name: "exec-lock",
|
||||
fn: func(db Transactor, l *lockerCounter) {
|
||||
fn: func(db AccessorTx, l *lockerCounter) {
|
||||
ctx := context.Background()
|
||||
_, _ = db.ExecContext(ctx, dummyQuery)
|
||||
_, _ = db.ExecContext(ctx, dummyQuery)
|
||||
|
@ -240,7 +241,7 @@ func TestLocking(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "tx-lock",
|
||||
fn: func(db Transactor, l *lockerCounter) {
|
||||
fn: func(db AccessorTx, l *lockerCounter) {
|
||||
ctx := context.Background()
|
||||
_ = db.WithTx(ctx, func(ctx context.Context) error {
|
||||
_, _ = GetAccessor(ctx, nil).ExecContext(ctx, dummyQuery)
|
||||
|
@ -256,7 +257,7 @@ func TestLocking(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "tx-read-lock",
|
||||
fn: func(db Transactor, l *lockerCounter) {
|
||||
fn: func(db AccessorTx, l *lockerCounter) {
|
||||
ctx := context.Background()
|
||||
_ = db.WithTx(ctx, func(ctx context.Context) error {
|
||||
_, _ = GetAccessor(ctx, nil).QueryContext(ctx, dummyQuery)
|
||||
|
@ -342,4 +343,6 @@ func (dbMockNop) SelectContext(context.Context, interface{}, string, ...interfac
|
|||
func (dbMockNop) Commit() error { return nil }
|
||||
func (dbMockNop) Rollback() error { return nil }
|
||||
|
||||
func (d dbMockNop) startTx(context.Context, *sql.TxOptions) (Tx, error) { return d, nil }
|
||||
func (d dbMockNop) startTx(context.Context, *sql.TxOptions) (TransactionAccessor, error) {
|
||||
return d, nil
|
||||
}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
// Copyright 2023 Harness, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package dbtx
|
||||
|
||||
import (
|
||||
"github.com/google/wire"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
var WireSet = wire.NewSet(
|
||||
ProvideAccessorTx,
|
||||
ProvideAccessor,
|
||||
ProvideTransactor,
|
||||
)
|
||||
|
||||
// ProvideAccessorTx provides the most versatile database access interface.
|
||||
// All DB queries and transactions can be performed.
|
||||
func ProvideAccessorTx(db *sqlx.DB) AccessorTx {
|
||||
return New(db)
|
||||
}
|
||||
|
||||
// ProvideAccessor provides the database access interface. All DB queries can be performed.
|
||||
func ProvideAccessor(a AccessorTx) Accessor {
|
||||
return a
|
||||
}
|
||||
|
||||
// ProvideTransactor provides ability to run DB transactions.
|
||||
func ProvideTransactor(a AccessorTx) Transactor {
|
||||
return a
|
||||
}
|
Loading…
Reference in New Issue