remove sqlx.DB from controllers and services

pull/3398/head
Marko Gaćeša 2023-09-28 12:05:52 +02:00
parent f51f97adb2
commit 933d2d9703
65 changed files with 203 additions and 237 deletions

View File

@ -19,7 +19,6 @@ import (
"fmt" "fmt"
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
) )
@ -40,7 +39,7 @@ func (c *Controller) ListChecks(
var checks []types.Check var checks []types.Check
var count int 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) count, err = c.checkStore.Count(ctx, repo.ID, commitSHA, opts)
if err != nil { if err != nil {
return fmt.Errorf("failed to count status check results for repo=%s: %w", repo.UID, err) return fmt.Errorf("failed to count status check results for repo=%s: %w", repo.UID, err)

View File

@ -24,14 +24,13 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB tx dbtx.Transactor
authorizer authz.Authorizer authorizer authz.Authorizer
repoStore store.RepoStore repoStore store.RepoStore
checkStore store.CheckStore checkStore store.CheckStore
@ -39,14 +38,14 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB, tx dbtx.Transactor,
authorizer authz.Authorizer, authorizer authz.Authorizer,
repoStore store.RepoStore, repoStore store.RepoStore,
checkStore store.CheckStore, checkStore store.CheckStore,
gitRPCClient gitrpc.Interface, gitRPCClient gitrpc.Interface,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db, tx: tx,
authorizer: authorizer, authorizer: authorizer,
repoStore: repoStore, repoStore: repoStore,
checkStore: checkStore, checkStore: checkStore,

View File

@ -18,9 +18,9 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store/database/dbtx"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -29,14 +29,14 @@ var WireSet = wire.NewSet(
) )
func ProvideController( func ProvideController(
db *sqlx.DB, tx dbtx.Transactor,
authorizer authz.Authorizer, authorizer authz.Authorizer,
repoStore store.RepoStore, repoStore store.RepoStore,
checkStore store.CheckStore, checkStore store.CheckStore,
rpcClient gitrpc.Interface, rpcClient gitrpc.Interface,
) *Controller { ) *Controller {
return NewController( return NewController(
db, tx,
authorizer, authorizer,
repoStore, repoStore,
checkStore, checkStore,

View File

@ -18,12 +18,9 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
uidCheck check.PathUID uidCheck check.PathUID
connectorStore store.ConnectorStore connectorStore store.ConnectorStore
authorizer authz.Authorizer authorizer authz.Authorizer
@ -31,14 +28,12 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
uidCheck check.PathUID, uidCheck check.PathUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
connectorStore store.ConnectorStore, connectorStore store.ConnectorStore,
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
uidCheck: uidCheck, uidCheck: uidCheck,
connectorStore: connectorStore, connectorStore: connectorStore,
authorizer: authorizer, authorizer: authorizer,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -28,11 +27,11 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
uidCheck check.PathUID, uidCheck check.PathUID,
connectorStore store.ConnectorStore, connectorStore store.ConnectorStore,
authorizer authz.Authorizer, authorizer authz.Authorizer,
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return NewController(db, uidCheck, authorizer, connectorStore, spaceStore) return NewController(uidCheck, authorizer, connectorStore, spaceStore)
} }

View File

@ -20,12 +20,11 @@ import (
"github.com/harness/gitness/app/pipeline/commit" "github.com/harness/gitness/app/pipeline/commit"
"github.com/harness/gitness/app/pipeline/triggerer" "github.com/harness/gitness/app/pipeline/triggerer"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB tx dbtx.Transactor
authorizer authz.Authorizer authorizer authz.Authorizer
executionStore store.ExecutionStore executionStore store.ExecutionStore
checkStore store.CheckStore checkStore store.CheckStore
@ -38,7 +37,7 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB, tx dbtx.Transactor,
authorizer authz.Authorizer, authorizer authz.Authorizer,
executionStore store.ExecutionStore, executionStore store.ExecutionStore,
checkStore store.CheckStore, checkStore store.CheckStore,
@ -50,7 +49,7 @@ func NewController(
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db, tx: tx,
authorizer: authorizer, authorizer: authorizer,
executionStore: executionStore, executionStore: executionStore,
checkStore: checkStore, checkStore: checkStore,

View File

@ -50,7 +50,7 @@ func (c *Controller) List(
var count int64 var count int64
var executions []*types.Execution 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) count, err = c.executionStore.Count(ctx, pipeline.ID)
if err != nil { if err != nil {
return fmt.Errorf("failed to count child executions: %w", err) return fmt.Errorf("failed to count child executions: %w", err)

View File

@ -20,9 +20,9 @@ import (
"github.com/harness/gitness/app/pipeline/commit" "github.com/harness/gitness/app/pipeline/commit"
"github.com/harness/gitness/app/pipeline/triggerer" "github.com/harness/gitness/app/pipeline/triggerer"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -30,7 +30,8 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
tx dbtx.Transactor,
authorizer authz.Authorizer, authorizer authz.Authorizer,
executionStore store.ExecutionStore, executionStore store.ExecutionStore,
checkStore store.CheckStore, checkStore store.CheckStore,
@ -41,6 +42,6 @@ func ProvideController(db *sqlx.DB,
stageStore store.StageStore, stageStore store.StageStore,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
) *Controller { ) *Controller {
return NewController(db, authorizer, executionStore, checkStore, return NewController(tx, authorizer, executionStore, checkStore,
canceler, commitService, triggerer, repoStore, stageStore, pipelineStore) canceler, commitService, triggerer, repoStore, stageStore, pipelineStore)
} }

View File

@ -26,8 +26,6 @@ import (
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
) )
// ServerHookOutput represents the output of server hook api calls. // ServerHookOutput represents the output of server hook api calls.
@ -54,7 +52,6 @@ type BaseInput struct {
} }
type Controller struct { type Controller struct {
db *sqlx.DB
authorizer authz.Authorizer authorizer authz.Authorizer
principalStore store.PrincipalStore principalStore store.PrincipalStore
repoStore store.RepoStore repoStore store.RepoStore
@ -64,7 +61,6 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
authorizer authz.Authorizer, authorizer authz.Authorizer,
principalStore store.PrincipalStore, principalStore store.PrincipalStore,
repoStore store.RepoStore, repoStore store.RepoStore,
@ -73,7 +69,6 @@ func NewController(
urlProvider url.Provider, urlProvider url.Provider,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
authorizer: authorizer, authorizer: authorizer,
principalStore: principalStore, principalStore: principalStore,
repoStore: repoStore, repoStore: repoStore,

View File

@ -21,7 +21,6 @@ import (
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -29,8 +28,8 @@ var WireSet = wire.NewSet(
ProvideController, 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, repoStore store.RepoStore, gitReporter *eventsgit.Reporter, pullreqStore store.PullReqStore,
urlProvider url.Provider) *Controller { urlProvider url.Provider) *Controller {
return NewController(db, authorizer, principalStore, repoStore, gitReporter, pullreqStore, urlProvider) return NewController(authorizer, principalStore, repoStore, gitReporter, pullreqStore, urlProvider)
} }

View File

@ -18,12 +18,9 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/livelog" "github.com/harness/gitness/livelog"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
authorizer authz.Authorizer authorizer authz.Authorizer
executionStore store.ExecutionStore executionStore store.ExecutionStore
repoStore store.RepoStore repoStore store.RepoStore
@ -35,7 +32,6 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
authorizer authz.Authorizer, authorizer authz.Authorizer,
executionStore store.ExecutionStore, executionStore store.ExecutionStore,
repoStore store.RepoStore, repoStore store.RepoStore,
@ -46,7 +42,6 @@ func NewController(
logStream livelog.LogStream, logStream livelog.LogStream,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
authorizer: authorizer, authorizer: authorizer,
executionStore: executionStore, executionStore: executionStore,
repoStore: repoStore, repoStore: repoStore,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/livelog" "github.com/harness/gitness/livelog"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -28,7 +27,7 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
authorizer authz.Authorizer, authorizer authz.Authorizer,
executionStore store.ExecutionStore, executionStore store.ExecutionStore,
repoStore store.RepoStore, repoStore store.RepoStore,
@ -38,6 +37,6 @@ func ProvideController(db *sqlx.DB,
logStore store.LogStore, logStore store.LogStore,
logStream livelog.LogStream, logStream livelog.LogStream,
) *Controller { ) *Controller {
return NewController(db, authorizer, executionStore, repoStore, return NewController(authorizer, executionStore, repoStore,
pipelineStore, stageStore, stepStore, logStore, logStream) pipelineStore, stageStore, stepStore, logStore, logStream)
} }

View File

@ -18,13 +18,10 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
defaultBranch string defaultBranch string
db *sqlx.DB
uidCheck check.PathUID uidCheck check.PathUID
repoStore store.RepoStore repoStore store.RepoStore
triggerStore store.TriggerStore triggerStore store.TriggerStore
@ -33,7 +30,6 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
uidCheck check.PathUID, uidCheck check.PathUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
repoStore store.RepoStore, repoStore store.RepoStore,
@ -41,7 +37,6 @@ func NewController(
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
uidCheck: uidCheck, uidCheck: uidCheck,
repoStore: repoStore, repoStore: repoStore,
triggerStore: triggerStore, triggerStore: triggerStore,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -28,13 +27,13 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
uidCheck check.PathUID, uidCheck check.PathUID,
repoStore store.RepoStore, repoStore store.RepoStore,
triggerStore store.TriggerStore, triggerStore store.TriggerStore,
authorizer authz.Authorizer, authorizer authz.Authorizer,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
) *Controller { ) *Controller {
return NewController(db, uidCheck, authorizer, return NewController(uidCheck, authorizer,
repoStore, triggerStore, pipelineStore) repoStore, triggerStore, pipelineStore)
} }

View File

@ -16,21 +16,16 @@ package plugin
import ( import (
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
pluginStore store.PluginStore pluginStore store.PluginStore
} }
func NewController( func NewController(
db *sqlx.DB,
pluginStore store.PluginStore, pluginStore store.PluginStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
pluginStore: pluginStore, pluginStore: pluginStore,
} }
} }

View File

@ -18,7 +18,6 @@ import (
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -26,8 +25,6 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(pluginStore store.PluginStore) *Controller {
pluginStore store.PluginStore, return NewController(pluginStore)
) *Controller {
return NewController(db, pluginStore)
} }

View File

@ -67,7 +67,7 @@ func (c *Controller) CommentStatus(
var pr *types.PullReq var pr *types.PullReq
var act *types.PullReqActivity 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) pr, err = c.pullreqStore.FindByNumber(ctx, repo.ID, prNum)
if err != nil { if err != nil {
return fmt.Errorf("failed to find pull request by number: %w", err) return fmt.Errorf("failed to find pull request by number: %w", err)

View File

@ -31,14 +31,13 @@ import (
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
gitrpcenum "github.com/harness/gitness/gitrpc/enum" gitrpcenum "github.com/harness/gitness/gitrpc/enum"
"github.com/harness/gitness/lock" "github.com/harness/gitness/lock"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB tx dbtx.Transactor
urlProvider url.Provider urlProvider url.Provider
authorizer authz.Authorizer authorizer authz.Authorizer
pullreqStore store.PullReqStore pullreqStore store.PullReqStore
@ -58,7 +57,7 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB, tx dbtx.Transactor,
urlProvider url.Provider, urlProvider url.Provider,
authorizer authz.Authorizer, authorizer authz.Authorizer,
pullreqStore store.PullReqStore, pullreqStore store.PullReqStore,
@ -77,7 +76,7 @@ func NewController(
sseStreamer sse.Streamer, sseStreamer sse.Streamer,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db, tx: tx,
urlProvider: urlProvider, urlProvider: urlProvider,
authorizer: authorizer, authorizer: authorizer,
pullreqStore: pullreqStore, pullreqStore: pullreqStore,

View File

@ -52,7 +52,7 @@ func (c *Controller) List(
filter.TargetRepoID = repo.ID 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) list, err = c.pullreqStore.List(ctx, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to list pull requests: %w", err) return fmt.Errorf("failed to list pull requests: %w", err)

View File

@ -25,7 +25,6 @@ import (
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store" "github.com/harness/gitness/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
@ -98,7 +97,7 @@ func (c *Controller) ReviewSubmit(
var review *types.PullReqReview 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() now := time.Now().UnixMilli()
review = &types.PullReqReview{ review = &types.PullReqReview{
ID: 0, ID: 0,

View File

@ -24,7 +24,6 @@ import (
"github.com/harness/gitness/app/api/usererror" "github.com/harness/gitness/app/api/usererror"
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/store" "github.com/harness/gitness/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
@ -95,7 +94,7 @@ func (c *Controller) ReviewerAdd(
var reviewer *types.PullReqReviewer 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) reviewer, err = c.reviewerStore.Find(ctx, pr.ID, in.ReviewerID)
if err != nil && !errors.Is(err, store.ErrResourceNotFound) { if err != nil && !errors.Is(err, store.ErrResourceNotFound) {
return err return err

View File

@ -24,9 +24,9 @@ import (
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/lock" "github.com/harness/gitness/lock"
"github.com/harness/gitness/store/database/dbtx"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -34,7 +34,7 @@ var WireSet = wire.NewSet(
ProvideController, 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, pullReqStore store.PullReqStore, pullReqActivityStore store.PullReqActivityStore,
codeCommentsView store.CodeCommentView, codeCommentsView store.CodeCommentView,
pullReqReviewStore store.PullReqReviewStore, pullReqReviewerStore store.PullReqReviewerStore, 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, mtxManager lock.MutexManager, codeCommentMigrator *codecomments.Migrator,
pullreqService *pullreq.Service, sseStreamer sse.Streamer, pullreqService *pullreq.Service, sseStreamer sse.Streamer,
) *Controller { ) *Controller {
return NewController(db, urlProvider, authorizer, return NewController(tx, urlProvider, authorizer,
pullReqStore, pullReqActivityStore, pullReqStore, pullReqActivityStore,
codeCommentsView, codeCommentsView,
pullReqReviewStore, pullReqReviewerStore, pullReqReviewStore, pullReqReviewerStore,

View File

@ -29,16 +29,15 @@ import (
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
defaultBranch string defaultBranch string
db *sqlx.DB tx dbtx.Transactor
urlProvider url.Provider urlProvider url.Provider
uidCheck check.PathUID uidCheck check.PathUID
authorizer authz.Authorizer authorizer authz.Authorizer
@ -52,7 +51,7 @@ type Controller struct {
func NewController( func NewController(
defaultBranch string, defaultBranch string,
db *sqlx.DB, tx dbtx.Transactor,
urlProvider url.Provider, urlProvider url.Provider,
uidCheck check.PathUID, uidCheck check.PathUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
@ -65,7 +64,7 @@ func NewController(
) *Controller { ) *Controller {
return &Controller{ return &Controller{
defaultBranch: defaultBranch, defaultBranch: defaultBranch,
db: db, tx: tx,
urlProvider: urlProvider, urlProvider: urlProvider,
uidCheck: uidCheck, uidCheck: uidCheck,
authorizer: authorizer, authorizer: authorizer,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/app/services/importer" "github.com/harness/gitness/app/services/importer"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "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 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) repo = remoteRepository.ToRepo(parentSpace.ID, in.UID, in.Description, &session.Principal)
err = c.repoStore.Create(ctx, repo) err = c.repoStore.Create(ctx, repo)

View File

@ -40,7 +40,7 @@ func (c *Controller) ListPipelines(
var count int64 var count int64
var pipelines []*types.Pipeline 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) count, err = c.pipelineStore.Count(ctx, repo.ID, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to count child executions: %w", err) return fmt.Errorf("failed to count child executions: %w", err)

View File

@ -20,11 +20,11 @@ import (
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -32,13 +32,13 @@ var WireSet = wire.NewSet(
ProvideController, 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, uidCheck check.PathUID, authorizer authz.Authorizer, repoStore store.RepoStore,
spaceStore store.SpaceStore, pipelineStore store.PipelineStore, spaceStore store.SpaceStore, pipelineStore store.PipelineStore,
principalStore store.PrincipalStore, rpcClient gitrpc.Interface, principalStore store.PrincipalStore, rpcClient gitrpc.Interface,
importer *importer.Repository, importer *importer.Repository,
) *Controller { ) *Controller {
return NewController(config.Git.DefaultBranch, db, urlProvider, return NewController(config.Git.DefaultBranch, tx, urlProvider,
uidCheck, authorizer, repoStore, uidCheck, authorizer, repoStore,
spaceStore, pipelineStore, principalStore, rpcClient, spaceStore, pipelineStore, principalStore, rpcClient,
importer) importer)

View File

@ -19,12 +19,9 @@ import (
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/encrypt" "github.com/harness/gitness/encrypt"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
uidCheck check.PathUID uidCheck check.PathUID
encrypter encrypt.Encrypter encrypter encrypt.Encrypter
secretStore store.SecretStore secretStore store.SecretStore
@ -33,7 +30,6 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
uidCheck check.PathUID, uidCheck check.PathUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
encrypter encrypt.Encrypter, encrypter encrypt.Encrypter,
@ -41,7 +37,6 @@ func NewController(
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
uidCheck: uidCheck, uidCheck: uidCheck,
encrypter: encrypter, encrypter: encrypter,
secretStore: secretStore, secretStore: secretStore,

View File

@ -21,7 +21,6 @@ import (
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -29,12 +28,12 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
uidCheck check.PathUID, uidCheck check.PathUID,
encrypter encrypt.Encrypter, encrypter encrypt.Encrypter,
secretStore store.SecretStore, secretStore store.SecretStore,
authorizer authz.Authorizer, authorizer authz.Authorizer,
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return NewController(db, uidCheck, authorizer, encrypter, secretStore, spaceStore) return NewController(uidCheck, authorizer, encrypter, secretStore, spaceStore)
} }

View File

@ -39,6 +39,8 @@ func NewController(principalUIDCheck check.PrincipalUID, authorizer authz.Author
} }
func findServiceFromUID(ctx context.Context, 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) return principalStore.FindServiceByUID(ctx, serviceUID)
} }

View File

@ -23,10 +23,9 @@ import (
"github.com/harness/gitness/app/sse" "github.com/harness/gitness/app/sse"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
var ( var (
@ -37,7 +36,7 @@ var (
type Controller struct { type Controller struct {
nestedSpacesEnabled bool nestedSpacesEnabled bool
db *sqlx.DB tx dbtx.Transactor
urlProvider url.Provider urlProvider url.Provider
sseStreamer sse.Streamer sseStreamer sse.Streamer
uidCheck check.PathUID uidCheck check.PathUID
@ -56,7 +55,7 @@ type Controller struct {
exporter *exporter.Repository 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, sseStreamer sse.Streamer, uidCheck check.PathUID, authorizer authz.Authorizer,
spacePathStore store.SpacePathStore, pipelineStore store.PipelineStore, secretStore store.SecretStore, spacePathStore store.SpacePathStore, pipelineStore store.PipelineStore, secretStore store.SecretStore,
connectorStore store.ConnectorStore, templateStore store.TemplateStore, spaceStore store.SpaceStore, 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 { ) *Controller {
return &Controller{ return &Controller{
nestedSpacesEnabled: config.NestedSpacesEnabled, nestedSpacesEnabled: config.NestedSpacesEnabled,
db: db, tx: tx,
urlProvider: urlProvider, urlProvider: urlProvider,
sseStreamer: sseStreamer, sseStreamer: sseStreamer,
uidCheck: uidCheck, uidCheck: uidCheck,

View File

@ -26,7 +26,6 @@ import (
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/app/bootstrap" "github.com/harness/gitness/app/bootstrap"
"github.com/harness/gitness/app/paths" "github.com/harness/gitness/app/paths"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
@ -61,7 +60,7 @@ func (c *Controller) Create(
return nil, fmt.Errorf("failed to sanitize input: %w", err) return nil, fmt.Errorf("failed to sanitize input: %w", err)
} }
var space *types.Space 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) space, err = c.createSpaceInnerInTX(ctx, session, parentID, in)
return err return err
}) })

View File

@ -23,7 +23,6 @@ import (
"github.com/harness/gitness/app/api/usererror" "github.com/harness/gitness/app/api/usererror"
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/app/services/exporter" "github.com/harness/gitness/app/services/exporter"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "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...) 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) err = c.exporter.RunManyForSpace(ctx, space.ID, repos, providerInfo)
if errors.Is(err, exporter.ErrJobRunning) { if errors.Is(err, exporter.ErrJobRunning) {
return usererror.ConflictWithPayload("export already in progress") return usererror.ConflictWithPayload("export already in progress")

View File

@ -21,7 +21,6 @@ import (
"github.com/harness/gitness/app/api/usererror" "github.com/harness/gitness/app/api/usererror"
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/app/services/importer" "github.com/harness/gitness/app/services/importer"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "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)) cloneURLs := make([]string, len(remoteRepositories))
var space *types.Space 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) space, err = c.createSpaceInnerInTX(ctx, session, parentSpaceID, &in.CreateInput)
if err != nil { if err != nil {
return err return err

View File

@ -45,7 +45,7 @@ func (c *Controller) ListSecrets(
var count int64 var count int64
var secrets []*types.Secret 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) count, err = c.secretStore.Count(ctx, space.ID, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to count child executions: %w", err) return fmt.Errorf("failed to count child executions: %w", err)

View File

@ -51,7 +51,7 @@ func (c *Controller) ListSpacesNoAuth(
var spaces []*types.Space var spaces []*types.Space
var count int64 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) count, err = c.spaceStore.Count(ctx, spaceID, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to count child spaces: %w", err) return fmt.Errorf("failed to count child spaces: %w", err)

View File

@ -43,7 +43,7 @@ func (c *Controller) MembershipList(ctx context.Context,
var memberships []types.MembershipUser var memberships []types.MembershipUser
var membershipsCount int64 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) memberships, err = c.membershipStore.ListUsers(ctx, space.ID, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to list memberships for space: %w", err) return fmt.Errorf("failed to list memberships for space: %w", err)

View File

@ -21,7 +21,6 @@ import (
apiauth "github.com/harness/gitness/app/api/auth" apiauth "github.com/harness/gitness/app/api/auth"
"github.com/harness/gitness/app/auth" "github.com/harness/gitness/app/auth"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
) )
@ -95,7 +94,7 @@ func (c *Controller) moveInner(
space *types.Space, space *types.Space,
inUID *string, inUID *string,
) error { ) 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 // delete old primary segment
err := c.spacePathStore.DeletePrimarySegment(ctx, space.ID) err := c.spacePathStore.DeletePrimarySegment(ctx, space.ID)
if err != nil { if err != nil {

View File

@ -22,11 +22,11 @@ import (
"github.com/harness/gitness/app/sse" "github.com/harness/gitness/app/sse"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -34,7 +34,7 @@ var WireSet = wire.NewSet(
ProvideController, 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, uidCheck check.PathUID, authorizer authz.Authorizer, spacePathStore store.SpacePathStore,
pipelineStore store.PipelineStore, secretStore store.SecretStore, pipelineStore store.PipelineStore, secretStore store.SecretStore,
connectorStore store.ConnectorStore, templateStore store.TemplateStore, 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, repoCtrl *repo.Controller, membershipStore store.MembershipStore, importer *importer.Repository,
exporter *exporter.Repository, exporter *exporter.Repository,
) *Controller { ) *Controller {
return NewController(config, db, urlProvider, sseStreamer, uidCheck, authorizer, return NewController(config, tx, urlProvider, sseStreamer, uidCheck, authorizer,
spacePathStore, pipelineStore, secretStore, spacePathStore, pipelineStore, secretStore,
connectorStore, templateStore, connectorStore, templateStore,
spaceStore, repoStore, principalStore, spaceStore, repoStore, principalStore,

View File

@ -18,12 +18,9 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
uidCheck check.PathUID uidCheck check.PathUID
templateStore store.TemplateStore templateStore store.TemplateStore
authorizer authz.Authorizer authorizer authz.Authorizer
@ -31,14 +28,12 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
uidCheck check.PathUID, uidCheck check.PathUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
templateStore store.TemplateStore, templateStore store.TemplateStore,
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
uidCheck: uidCheck, uidCheck: uidCheck,
templateStore: templateStore, templateStore: templateStore,
authorizer: authorizer, authorizer: authorizer,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -28,11 +27,11 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
uidCheck check.PathUID, uidCheck check.PathUID,
templateStore store.TemplateStore, templateStore store.TemplateStore,
authorizer authz.Authorizer, authorizer authz.Authorizer,
spaceStore store.SpaceStore, spaceStore store.SpaceStore,
) *Controller { ) *Controller {
return NewController(db, uidCheck, authorizer, templateStore, spaceStore) return NewController(uidCheck, authorizer, templateStore, spaceStore)
} }

View File

@ -18,12 +18,9 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
db *sqlx.DB
authorizer authz.Authorizer authorizer authz.Authorizer
triggerStore store.TriggerStore triggerStore store.TriggerStore
uidCheck check.PathUID uidCheck check.PathUID
@ -32,7 +29,6 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB,
authorizer authz.Authorizer, authorizer authz.Authorizer,
triggerStore store.TriggerStore, triggerStore store.TriggerStore,
uidCheck check.PathUID, uidCheck check.PathUID,
@ -40,7 +36,6 @@ func NewController(
repoStore store.RepoStore, repoStore store.RepoStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db,
authorizer: authorizer, authorizer: authorizer,
triggerStore: triggerStore, triggerStore: triggerStore,
uidCheck: uidCheck, uidCheck: uidCheck,

View File

@ -20,7 +20,6 @@ import (
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -28,12 +27,12 @@ var WireSet = wire.NewSet(
ProvideController, ProvideController,
) )
func ProvideController(db *sqlx.DB, func ProvideController(
authorizer authz.Authorizer, authorizer authz.Authorizer,
triggerStore store.TriggerStore, triggerStore store.TriggerStore,
uidCheck check.PathUID, uidCheck check.PathUID,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
repoStore store.RepoStore, repoStore store.RepoStore,
) *Controller { ) *Controller {
return NewController(db, authorizer, triggerStore, uidCheck, pipelineStore, repoStore) return NewController(authorizer, triggerStore, uidCheck, pipelineStore, repoStore)
} }

View File

@ -20,8 +20,6 @@ import (
"github.com/harness/gitness/store" "github.com/harness/gitness/store"
"github.com/harness/gitness/store/database/dbtx" "github.com/harness/gitness/store/database/dbtx"
"github.com/jmoiron/sqlx"
) )
type TxOptionRetryCount int 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, // 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). // but this can be overridden by providing an additional TxOptionRetryCount option).
func TxOptLock(ctx context.Context, func TxOptLock(ctx context.Context,
db *sqlx.DB, tx dbtx.Transactor,
txFn func(ctx context.Context) error, txFn func(ctx context.Context) error,
opts ...interface{}, opts ...interface{},
) (err error) { ) (err error) {
@ -42,7 +40,7 @@ func TxOptLock(ctx context.Context,
} }
for try := 0; try < tries; try++ { 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) { if !errors.Is(err, store.ErrVersionConflict) {
break break
} }

View File

@ -19,16 +19,16 @@ import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
) )
type Controller struct { type Controller struct {
db *sqlx.DB tx dbtx.Transactor
principalUIDCheck check.PrincipalUID principalUIDCheck check.PrincipalUID
authorizer authz.Authorizer authorizer authz.Authorizer
principalStore store.PrincipalStore principalStore store.PrincipalStore
@ -37,7 +37,7 @@ type Controller struct {
} }
func NewController( func NewController(
db *sqlx.DB, tx dbtx.Transactor,
principalUIDCheck check.PrincipalUID, principalUIDCheck check.PrincipalUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
principalStore store.PrincipalStore, principalStore store.PrincipalStore,
@ -45,7 +45,7 @@ func NewController(
membershipStore store.MembershipStore, membershipStore store.MembershipStore,
) *Controller { ) *Controller {
return &Controller{ return &Controller{
db: db, tx: tx,
principalUIDCheck: principalUIDCheck, principalUIDCheck: principalUIDCheck,
authorizer: authorizer, authorizer: authorizer,
principalStore: principalStore, principalStore: principalStore,

View File

@ -44,7 +44,7 @@ func (c *Controller) MembershipSpaces(ctx context.Context,
var membershipSpaces []types.MembershipSpace var membershipSpaces []types.MembershipSpace
var membershipsCount int64 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) membershipSpaces, err = c.membershipStore.ListSpaces(ctx, user.ID, filter)
if err != nil { if err != nil {
return fmt.Errorf("failed to list membership spaces for user: %w", err) return fmt.Errorf("failed to list membership spaces for user: %w", err)

View File

@ -17,10 +17,10 @@ package user
import ( import (
"github.com/harness/gitness/app/auth/authz" "github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -29,7 +29,7 @@ var WireSet = wire.NewSet(
) )
func ProvideController( func ProvideController(
db *sqlx.DB, tx dbtx.Transactor,
principalUIDCheck check.PrincipalUID, principalUIDCheck check.PrincipalUID,
authorizer authz.Authorizer, authorizer authz.Authorizer,
principalStore store.PrincipalStore, principalStore store.PrincipalStore,
@ -37,7 +37,7 @@ func ProvideController(
membershipStore store.MembershipStore, membershipStore store.MembershipStore,
) *Controller { ) *Controller {
return NewController( return NewController(
db, tx,
principalUIDCheck, principalUIDCheck,
authorizer, authorizer,
principalStore, principalStore,

View File

@ -27,15 +27,12 @@ import (
"github.com/harness/gitness/encrypt" "github.com/harness/gitness/encrypt"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
) )
type Controller struct { type Controller struct {
allowLoopback bool allowLoopback bool
allowPrivateNetwork bool allowPrivateNetwork bool
db *sqlx.DB
authorizer authz.Authorizer authorizer authz.Authorizer
webhookStore store.WebhookStore webhookStore store.WebhookStore
webhookExecutionStore store.WebhookExecutionStore webhookExecutionStore store.WebhookExecutionStore
@ -47,7 +44,6 @@ type Controller struct {
func NewController( func NewController(
allowLoopback bool, allowLoopback bool,
allowPrivateNetwork bool, allowPrivateNetwork bool,
db *sqlx.DB,
authorizer authz.Authorizer, authorizer authz.Authorizer,
webhookStore store.WebhookStore, webhookStore store.WebhookStore,
webhookExecutionStore store.WebhookExecutionStore, webhookExecutionStore store.WebhookExecutionStore,
@ -58,7 +54,6 @@ func NewController(
return &Controller{ return &Controller{
allowLoopback: allowLoopback, allowLoopback: allowLoopback,
allowPrivateNetwork: allowPrivateNetwork, allowPrivateNetwork: allowPrivateNetwork,
db: db,
authorizer: authorizer, authorizer: authorizer,
webhookStore: webhookStore, webhookStore: webhookStore,
webhookExecutionStore: webhookExecutionStore, webhookExecutionStore: webhookExecutionStore,

View File

@ -21,7 +21,6 @@ import (
"github.com/harness/gitness/encrypt" "github.com/harness/gitness/encrypt"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -29,9 +28,12 @@ var WireSet = wire.NewSet(
ProvideController, 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, webhookStore store.WebhookStore, webhookExecutionStore store.WebhookExecutionStore,
repoStore store.RepoStore, webhookService *webhook.Service, encrypter encrypt.Encrypter) *Controller { repoStore store.RepoStore, webhookService *webhook.Service, encrypter encrypt.Encrypter,
return NewController(config.AllowLoopback, config.AllowPrivateNetwork, ) *Controller {
db, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter) return NewController(
config.AllowLoopback, config.AllowPrivateNetwork, authorizer,
webhookStore, webhookExecutionStore,
repoStore, webhookService, encrypter)
} }

View File

@ -37,7 +37,6 @@ import (
"github.com/drone/drone-yaml/yaml/linter" "github.com/drone/drone-yaml/yaml/linter"
v1yaml "github.com/drone/spec/dist/go" v1yaml "github.com/drone/spec/dist/go"
"github.com/drone/spec/dist/go/parse/normalize" "github.com/drone/spec/dist/go/parse/normalize"
"github.com/jmoiron/sqlx"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
@ -80,7 +79,7 @@ type triggerer struct {
executionStore store.ExecutionStore executionStore store.ExecutionStore
checkStore store.CheckStore checkStore store.CheckStore
stageStore store.StageStore stageStore store.StageStore
db *sqlx.DB tx dbtx.Transactor
pipelineStore store.PipelineStore pipelineStore store.PipelineStore
fileService file.Service fileService file.Service
scheduler scheduler.Scheduler scheduler scheduler.Scheduler
@ -92,7 +91,7 @@ func New(
checkStore store.CheckStore, checkStore store.CheckStore,
stageStore store.StageStore, stageStore store.StageStore,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
db *sqlx.DB, tx dbtx.Transactor,
repoStore store.RepoStore, repoStore store.RepoStore,
scheduler scheduler.Scheduler, scheduler scheduler.Scheduler,
fileService file.Service, fileService file.Service,
@ -102,7 +101,7 @@ func New(
checkStore: checkStore, checkStore: checkStore,
stageStore: stageStore, stageStore: stageStore,
scheduler: scheduler, scheduler: scheduler,
db: db, tx: tx,
pipelineStore: pipelineStore, pipelineStore: pipelineStore,
fileService: fileService, fileService: fileService,
repoStore: repoStore, repoStore: repoStore,
@ -449,7 +448,7 @@ func (t *triggerer) createExecutionWithStages(
execution *types.Execution, execution *types.Execution,
stages []*types.Stage, stages []*types.Stage,
) error { ) 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) err := t.executionStore.Create(ctx, execution)
if err != nil { if err != nil {
return err return err

View File

@ -18,9 +18,9 @@ import (
"github.com/harness/gitness/app/pipeline/file" "github.com/harness/gitness/app/pipeline/file"
"github.com/harness/gitness/app/pipeline/scheduler" "github.com/harness/gitness/app/pipeline/scheduler"
"github.com/harness/gitness/app/store" "github.com/harness/gitness/app/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
// WireSet provides a wire set for this package. // WireSet provides a wire set for this package.
@ -33,12 +33,12 @@ func ProvideTriggerer(
executionStore store.ExecutionStore, executionStore store.ExecutionStore,
checkStore store.CheckStore, checkStore store.CheckStore,
stageStore store.StageStore, stageStore store.StageStore,
db *sqlx.DB, tx dbtx.Transactor,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
fileService file.Service, fileService file.Service,
scheduler scheduler.Scheduler, scheduler scheduler.Scheduler,
repoStore store.RepoStore, repoStore store.RepoStore,
) Triggerer { ) Triggerer {
return New(executionStore, checkStore, stageStore, pipelineStore, return New(executionStore, checkStore, stageStore, pipelineStore,
db, repoStore, scheduler, fileService) tx, repoStore, scheduler, fileService)
} }

View File

@ -90,7 +90,7 @@ func (r *Repository) processPipelines(ctx context.Context,
nowMilli := now.UnixMilli() 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 { for _, p := range pipelineFiles {
pipeline := &types.Pipeline{ pipeline := &types.Pipeline{
Description: "", Description: "",

View File

@ -33,10 +33,10 @@ import (
"github.com/harness/gitness/encrypt" "github.com/harness/gitness/encrypt"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
gitness_store "github.com/harness/gitness/store" gitness_store "github.com/harness/gitness/store"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/enum" "github.com/harness/gitness/types/enum"
"github.com/jmoiron/sqlx"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
@ -54,7 +54,7 @@ type Repository struct {
defaultBranch string defaultBranch string
urlProvider gitnessurl.Provider urlProvider gitnessurl.Provider
git gitrpc.Interface git gitrpc.Interface
db *sqlx.DB tx dbtx.Transactor
repoStore store.RepoStore repoStore store.RepoStore
pipelineStore store.PipelineStore pipelineStore store.PipelineStore
triggerStore store.TriggerStore triggerStore store.TriggerStore

View File

@ -21,10 +21,10 @@ import (
"github.com/harness/gitness/app/url" "github.com/harness/gitness/app/url"
"github.com/harness/gitness/encrypt" "github.com/harness/gitness/encrypt"
"github.com/harness/gitness/gitrpc" "github.com/harness/gitness/gitrpc"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
var WireSet = wire.NewSet( var WireSet = wire.NewSet(
@ -35,7 +35,7 @@ func ProvideRepoImporter(
config *types.Config, config *types.Config,
urlProvider url.Provider, urlProvider url.Provider,
git gitrpc.Interface, git gitrpc.Interface,
db *sqlx.DB, tx dbtx.Transactor,
repoStore store.RepoStore, repoStore store.RepoStore,
pipelineStore store.PipelineStore, pipelineStore store.PipelineStore,
triggerStore store.TriggerStore, triggerStore store.TriggerStore,
@ -48,7 +48,7 @@ func ProvideRepoImporter(
defaultBranch: config.Git.DefaultBranch, defaultBranch: config.Git.DefaultBranch,
urlProvider: urlProvider, urlProvider: urlProvider,
git: git, git: git,
db: db, tx: tx,
repoStore: repoStore, repoStore: repoStore,
pipelineStore: pipelineStore, pipelineStore: pipelineStore,
triggerStore: triggerStore, triggerStore: triggerStore,

View File

@ -33,14 +33,11 @@ import (
"github.com/harness/gitness/pubsub" "github.com/harness/gitness/pubsub"
"github.com/harness/gitness/stream" "github.com/harness/gitness/stream"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/jmoiron/sqlx"
) )
type Service struct { type Service struct {
pullreqEvReporter *pullreqevents.Reporter pullreqEvReporter *pullreqevents.Reporter
gitRPCClient gitrpc.Interface gitRPCClient gitrpc.Interface
db *sqlx.DB
repoGitInfoCache store.RepoGitInfoCache repoGitInfoCache store.RepoGitInfoCache
repoStore store.RepoStore repoStore store.RepoStore
pullreqStore store.PullReqStore pullreqStore store.PullReqStore
@ -64,7 +61,6 @@ func New(ctx context.Context,
pullreqEvReaderFactory *events.ReaderFactory[*pullreqevents.Reader], pullreqEvReaderFactory *events.ReaderFactory[*pullreqevents.Reader],
pullreqEvReporter *pullreqevents.Reporter, pullreqEvReporter *pullreqevents.Reporter,
gitRPCClient gitrpc.Interface, gitRPCClient gitrpc.Interface,
db *sqlx.DB,
repoGitInfoCache store.RepoGitInfoCache, repoGitInfoCache store.RepoGitInfoCache,
repoStore store.RepoStore, repoStore store.RepoStore,
pullreqStore store.PullReqStore, pullreqStore store.PullReqStore,
@ -79,7 +75,6 @@ func New(ctx context.Context,
service := &Service{ service := &Service{
pullreqEvReporter: pullreqEvReporter, pullreqEvReporter: pullreqEvReporter,
gitRPCClient: gitRPCClient, gitRPCClient: gitRPCClient,
db: db,
repoGitInfoCache: repoGitInfoCache, repoGitInfoCache: repoGitInfoCache,
repoStore: repoStore, repoStore: repoStore,
pullreqStore: pullreqStore, pullreqStore: pullreqStore,

View File

@ -29,7 +29,6 @@ import (
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/google/wire" "github.com/google/wire"
"github.com/jmoiron/sqlx"
) )
var WireSet = wire.NewSet( var WireSet = wire.NewSet(
@ -42,7 +41,6 @@ func ProvideService(ctx context.Context,
pullReqEvFactory *events.ReaderFactory[*pullreqevents.Reader], pullReqEvFactory *events.ReaderFactory[*pullreqevents.Reader],
pullReqEvReporter *pullreqevents.Reporter, pullReqEvReporter *pullreqevents.Reporter,
gitRPCClient gitrpc.Interface, gitRPCClient gitrpc.Interface,
db *sqlx.DB,
repoGitInfoCache store.RepoGitInfoCache, repoGitInfoCache store.RepoGitInfoCache,
repoStore store.RepoStore, repoStore store.RepoStore,
pullreqStore store.PullReqStore, pullreqStore store.PullReqStore,
@ -55,6 +53,6 @@ func ProvideService(ctx context.Context,
sseStreamer sse.Streamer, sseStreamer sse.Streamer,
) (*Service, error) { ) (*Service, error) {
return New(ctx, config, gitReaderFactory, pullReqEvFactory, pullReqEvReporter, gitRPCClient, return New(ctx, config, gitReaderFactory, pullReqEvFactory, pullReqEvReporter, gitRPCClient,
db, repoGitInfoCache, repoStore, pullreqStore, activityStore, repoGitInfoCache, repoStore, pullreqStore, activityStore,
codeCommentView, codeCommentMigrator, fileViewStore, pubsub, urlProvider, sseStreamer) codeCommentView, codeCommentMigrator, fileViewStore, pubsub, urlProvider, sseStreamer)
} }

View File

@ -35,7 +35,7 @@ type logs struct {
Data []byte `db:"log_data"` Data []byte `db:"log_data"`
} }
// NewLogStore returns a new LogStore. // NewDatabaseLogStore returns a new LogStore.
func NewDatabaseLogStore(db *sqlx.DB) store.LogStore { func NewDatabaseLogStore(db *sqlx.DB) store.LogStore {
return &logStore{ return &logStore{
db: db, db: db,

View File

@ -68,6 +68,7 @@ import (
"github.com/harness/gitness/livelog" "github.com/harness/gitness/livelog"
"github.com/harness/gitness/lock" "github.com/harness/gitness/lock"
"github.com/harness/gitness/pubsub" "github.com/harness/gitness/pubsub"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
@ -81,6 +82,7 @@ func initSystem(ctx context.Context, config *types.Config) (*cliserver.System, e
bootstrap.WireSet, bootstrap.WireSet,
cliserver.ProvideDatabaseConfig, cliserver.ProvideDatabaseConfig,
database.WireSet, database.WireSet,
dbtx.WireSet,
cache.WireSet, cache.WireSet,
router.WireSet, router.WireSet,
pullreqservice.WireSet, pullreqservice.WireSet,

View File

@ -8,7 +8,6 @@ package main
import ( import (
"context" "context"
check2 "github.com/harness/gitness/app/api/controller/check" check2 "github.com/harness/gitness/app/api/controller/check"
"github.com/harness/gitness/app/api/controller/connector" "github.com/harness/gitness/app/api/controller/connector"
"github.com/harness/gitness/app/api/controller/execution" "github.com/harness/gitness/app/api/controller/execution"
@ -67,6 +66,7 @@ import (
"github.com/harness/gitness/livelog" "github.com/harness/gitness/livelog"
"github.com/harness/gitness/lock" "github.com/harness/gitness/lock"
"github.com/harness/gitness/pubsub" "github.com/harness/gitness/pubsub"
"github.com/harness/gitness/store/database/dbtx"
"github.com/harness/gitness/types" "github.com/harness/gitness/types"
"github.com/harness/gitness/types/check" "github.com/harness/gitness/types/check"
) )
@ -79,6 +79,8 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
if err != nil { if err != nil {
return nil, err return nil, err
} }
accessorTx := dbtx.ProvideAccessorTx(db)
transactor := dbtx.ProvideTransactor(accessorTx)
principalUID := check.ProvidePrincipalUIDCheck() principalUID := check.ProvidePrincipalUIDCheck()
spacePathTransformation := store.ProvidePathTransformation() spacePathTransformation := store.ProvidePathTransformation()
spacePathStore := database.ProvideSpacePathStore(db, spacePathTransformation) spacePathStore := database.ProvideSpacePathStore(db, spacePathTransformation)
@ -92,7 +94,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
principalUIDTransformation := store.ProvidePrincipalUIDTransformation() principalUIDTransformation := store.ProvidePrincipalUIDTransformation()
principalStore := database.ProvidePrincipalStore(db, principalUIDTransformation) principalStore := database.ProvidePrincipalStore(db, principalUIDTransformation)
tokenStore := database.ProvideTokenStore(db) 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) serviceController := service.NewController(principalUID, authorizer, principalStore)
bootstrapBootstrap := bootstrap.ProvideBootstrap(config, controller, serviceController) bootstrapBootstrap := bootstrap.ProvideBootstrap(config, controller, serviceController)
authenticator := authn.ProvideAuthenticator(config, principalStore, tokenStore) authenticator := authn.ProvideAuthenticator(config, principalStore, tokenStore)
@ -131,11 +133,11 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
return nil, err return nil, err
} }
streamer := sse.ProvideEventsStreaming(pubSub) 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 { if err != nil {
return nil, err 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) executionStore := database.ProvideExecutionStore(db)
checkStore := database.ProvideCheckStore(db, principalInfoCache) checkStore := database.ProvideCheckStore(db, principalInfoCache)
stageStore := database.ProvideStageStore(db) 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) cancelerCanceler := canceler.ProvideCanceler(executionStore, streamer, repoStore, schedulerScheduler, stageStore, stepStore)
commitService := commit.ProvideService(gitrpcInterface) commitService := commit.ProvideService(gitrpcInterface)
fileService := file.ProvideService(gitrpcInterface) fileService := file.ProvideService(gitrpcInterface)
triggererTriggerer := triggerer.ProvideTriggerer(executionStore, checkStore, stageStore, db, pipelineStore, fileService, schedulerScheduler, repoStore) triggererTriggerer := triggerer.ProvideTriggerer(executionStore, checkStore, stageStore, transactor, pipelineStore, fileService, schedulerScheduler, repoStore)
executionController := execution.ProvideController(db, authorizer, executionStore, checkStore, cancelerCanceler, commitService, triggererTriggerer, repoStore, stageStore, pipelineStore) executionController := execution.ProvideController(transactor, authorizer, executionStore, checkStore, cancelerCanceler, commitService, triggererTriggerer, repoStore, stageStore, pipelineStore)
logStore := logs.ProvideLogStore(db, config) logStore := logs.ProvideLogStore(db, config)
logStream := livelog.ProvideLogStream(config) logStream := livelog.ProvideLogStream()
logsController := logs2.ProvideController(db, authorizer, executionStore, repoStore, pipelineStore, stageStore, stepStore, logStore, logStream) logsController := logs2.ProvideController(authorizer, executionStore, repoStore, pipelineStore, stageStore, stepStore, logStore, logStream)
secretStore := database.ProvideSecretStore(db) secretStore := database.ProvideSecretStore(db)
connectorStore := database.ProvideConnectorStore(db) connectorStore := database.ProvideConnectorStore(db)
templateStore := database.ProvideTemplateStore(db) templateStore := database.ProvideTemplateStore(db)
@ -159,14 +161,14 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
if err != nil { if err != nil {
return nil, err return nil, err
} }
spaceController := space.ProvideController(config, db, provider, streamer, pathUID, authorizer, spacePathStore, pipelineStore, secretStore, connectorStore, templateStore, spaceStore, repoStore, principalStore, repoController, membershipStore, repository, exporterRepository) spaceController := space.ProvideController(config, transactor, 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) pipelineController := pipeline.ProvideController(pathUID, repoStore, triggerStore, authorizer, pipelineStore)
secretController := secret.ProvideController(db, pathUID, encrypter, secretStore, authorizer, spaceStore) secretController := secret.ProvideController(pathUID, encrypter, secretStore, authorizer, spaceStore)
triggerController := trigger.ProvideController(db, authorizer, triggerStore, pathUID, pipelineStore, repoStore) triggerController := trigger.ProvideController(authorizer, triggerStore, pathUID, pipelineStore, repoStore)
connectorController := connector.ProvideController(db, pathUID, connectorStore, authorizer, spaceStore) connectorController := connector.ProvideController(pathUID, connectorStore, authorizer, spaceStore)
templateController := template.ProvideController(db, pathUID, templateStore, authorizer, spaceStore) templateController := template.ProvideController(pathUID, templateStore, authorizer, spaceStore)
pluginStore := database.ProvidePluginStore(db) pluginStore := database.ProvidePluginStore(db)
pluginController := plugin.ProvideController(db, pluginStore) pluginController := plugin.ProvideController(pluginStore)
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache) pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache) pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
codeCommentView := database.ProvideCodeCommentView(db) codeCommentView := database.ProvideCodeCommentView(db)
@ -196,11 +198,11 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
} }
repoGitInfoView := database.ProvideRepoGitInfoView(db) repoGitInfoView := database.ProvideRepoGitInfoView(db)
repoGitInfoCache := cache.ProvideRepoGitInfoCache(repoGitInfoView) 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 { if err != nil {
return nil, err 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) webhookConfig := server.ProvideWebhookConfig(config)
webhookStore := database.ProvideWebhookStore(db) webhookStore := database.ProvideWebhookStore(db)
webhookExecutionStore := database.ProvideWebhookExecutionStore(db) webhookExecutionStore := database.ProvideWebhookExecutionStore(db)
@ -208,15 +210,15 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
if err != nil { if err != nil {
return nil, err 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) eventsReporter, err := events3.ProvideReporter(eventsSystem)
if err != nil { if err != nil {
return nil, err 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) serviceaccountController := serviceaccount.NewController(principalUID, authorizer, principalStore, spaceStore, repoStore, tokenStore)
principalController := principal.ProvideController(principalStore) 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) 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) 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) gitHandler := router.ProvideGitHandler(config, provider, repoStore, authenticator, authorizer, gitrpcInterface)

View File

@ -15,8 +15,6 @@
package livelog package livelog
import ( import (
"github.com/harness/gitness/types"
"github.com/google/wire" "github.com/google/wire"
) )
@ -26,6 +24,6 @@ var WireSet = wire.NewSet(
) )
// ProvideLogStream provides an implementation of a logs streamer. // ProvideLogStream provides an implementation of a logs streamer.
func ProvideLogStream(config *types.Config) LogStream { func ProvideLogStream() LogStream {
return NewMemory() return NewMemory()
} }

View File

@ -20,20 +20,7 @@ import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
) )
// ctxKeyDB is context key for storing and retrieving Transactor to and from a context. // ctxKeyTx is context key for storing and retrieving TransactionAccessor 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.
type ctxKeyTx struct{} type ctxKeyTx struct{}
// GetAccessor returns Accessor interface from the context if it exists or creates a new one from the provided *sql.DB. // GetAccessor returns Accessor interface from the context if it exists or creates a new one from the provided *sql.DB.

View File

@ -22,7 +22,7 @@ import (
) )
// New returns new database Runner interface. // New returns new database Runner interface.
func New(db *sqlx.DB) Transactor { func New(db *sqlx.DB) AccessorTx {
mx := getLocker(db) mx := getLocker(db)
run := &runnerDB{ run := &runnerDB{
db: sqlDB{db}, db: sqlDB{db},
@ -34,7 +34,7 @@ func New(db *sqlx.DB) Transactor {
// transactor is combines data access capabilities with transaction starting. // transactor is combines data access capabilities with transaction starting.
type transactor interface { type transactor interface {
Accessor 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. // sqlDB is a wrapper for the sqlx.DB that implements the transactor interface.
@ -44,7 +44,7 @@ type sqlDB struct {
var _ transactor = (*sqlDB)(nil) 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) tx, err := db.DB.BeginTxx(ctx, opts)
return tx, err return tx, err
} }

View File

@ -40,15 +40,19 @@ type Transaction interface {
Rollback() error Rollback() error
} }
// Transactor is used to access the database. It combines Accessor interface
// with capability to run functions in a transaction.
type Transactor interface { type Transactor interface {
Accessor
WithTx(ctx context.Context, txFn func(ctx context.Context) error, opts ...interface{}) error WithTx(ctx context.Context, txFn func(ctx context.Context) error, opts ...interface{}) error
} }
// Tx combines data access capabilities with the transaction commit and rollback. // AccessorTx is used to access the database. It combines Accessor interface
type Tx 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 Accessor
Transaction
} }

View File

@ -29,7 +29,7 @@ type runnerDB struct {
mx locker mx locker
} }
var _ Transactor = runnerDB{} var _ AccessorTx = runnerDB{}
func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error, opts ...interface{}) error { func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error, opts ...interface{}) error {
var txOpts *sql.TxOptions var txOpts *sql.TxOptions
@ -57,9 +57,9 @@ func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error,
} }
rtx := &runnerTx{ rtx := &runnerTx{
Tx: tx, TransactionAccessor: tx,
commit: false, commit: false,
rollback: false, rollback: false,
} }
defer func() { defer func() {
@ -69,7 +69,7 @@ func (r runnerDB) WithTx(ctx context.Context, txFn func(context.Context) error,
_ = tx.Rollback() // ignoring the rollback 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 { if err != nil {
return err return err
} }
@ -162,15 +162,15 @@ func (r runnerDB) SelectContext(ctx context.Context, dest interface{}, query str
// runnerTx executes sqlx database transaction calls. // runnerTx executes sqlx database transaction calls.
// Locking is not used because runnerDB locks the entire transaction. // Locking is not used because runnerDB locks the entire transaction.
type runnerTx struct { type runnerTx struct {
Tx TransactionAccessor
commit bool commit bool
rollback bool rollback bool
} }
var _ Tx = (*runnerTx)(nil) var _ TransactionAccessor = (*runnerTx)(nil)
func (r *runnerTx) Commit() error { func (r *runnerTx) Commit() error {
err := r.Tx.Commit() err := r.TransactionAccessor.Commit()
if err == nil { if err == nil {
r.commit = true r.commit = true
} }
@ -178,7 +178,7 @@ func (r *runnerTx) Commit() error {
} }
func (r *runnerTx) Rollback() error { func (r *runnerTx) Rollback() error {
err := r.Tx.Rollback() err := r.TransactionAccessor.Rollback()
if err == nil { if err == nil {
r.rollback = true r.rollback = true
} }

View File

@ -174,7 +174,7 @@ type dbMock struct {
var _ transactor = (*dbMock)(nil) 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{ d.createdTx = &txMock{
t: d.t, t: d.t,
errCommit: d.errCommit, errCommit: d.errCommit,
@ -194,7 +194,7 @@ type txMock struct {
rollback bool rollback bool
} }
var _ Tx = (*txMock)(nil) var _ TransactionAccessor = (*txMock)(nil)
func (tx *txMock) Commit() error { func (tx *txMock) Commit() error {
if tx.finished { if tx.finished {
@ -218,15 +218,16 @@ func (tx *txMock) Rollback() error {
return nil return nil
} }
// nolint:rowserrcheck,sqlclosecheck // it's a unit test, works with mocked DB
func TestLocking(t *testing.T) { func TestLocking(t *testing.T) {
const dummyQuery = "" const dummyQuery = ""
tests := []struct { tests := []struct {
name string name string
fn func(db Transactor, l *lockerCounter) fn func(db AccessorTx, l *lockerCounter)
}{ }{
{ {
name: "exec-lock", name: "exec-lock",
fn: func(db Transactor, l *lockerCounter) { fn: func(db AccessorTx, l *lockerCounter) {
ctx := context.Background() ctx := context.Background()
_, _ = db.ExecContext(ctx, dummyQuery) _, _ = db.ExecContext(ctx, dummyQuery)
_, _ = db.ExecContext(ctx, dummyQuery) _, _ = db.ExecContext(ctx, dummyQuery)
@ -240,7 +241,7 @@ func TestLocking(t *testing.T) {
}, },
{ {
name: "tx-lock", name: "tx-lock",
fn: func(db Transactor, l *lockerCounter) { fn: func(db AccessorTx, l *lockerCounter) {
ctx := context.Background() ctx := context.Background()
_ = db.WithTx(ctx, func(ctx context.Context) error { _ = db.WithTx(ctx, func(ctx context.Context) error {
_, _ = GetAccessor(ctx, nil).ExecContext(ctx, dummyQuery) _, _ = GetAccessor(ctx, nil).ExecContext(ctx, dummyQuery)
@ -256,7 +257,7 @@ func TestLocking(t *testing.T) {
}, },
{ {
name: "tx-read-lock", name: "tx-read-lock",
fn: func(db Transactor, l *lockerCounter) { fn: func(db AccessorTx, l *lockerCounter) {
ctx := context.Background() ctx := context.Background()
_ = db.WithTx(ctx, func(ctx context.Context) error { _ = db.WithTx(ctx, func(ctx context.Context) error {
_, _ = GetAccessor(ctx, nil).QueryContext(ctx, dummyQuery) _, _ = 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) Commit() error { return nil }
func (dbMockNop) Rollback() 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
}

View File

@ -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
}