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"
"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)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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: "",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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
}