Skip to content

Commit 70619c6

Browse files
authored
Merge pull request #209 from hyperledger/externalize-tag-handler
Allow ff tag annotations to be used with schema generation, outside SwggerGen
2 parents 10dbe1a + 4dfd058 commit 70619c6

12 files changed

Lines changed: 191 additions & 135 deletions

File tree

mocks/authmocks/plugin.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/crudmocks/crud.go

Lines changed: 16 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/dbmigratemocks/driver.go

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/httpservermocks/go_http_server.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/wsservermocks/protocol.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/wsservermocks/web_socket_server.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/dbsql/database.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/hyperledger/firefly-common/pkg/i18n"
3131
"github.com/hyperledger/firefly-common/pkg/log"
3232

33+
"github.com/golang-migrate/migrate/v4/database"
3334
// Import migrate file source
3435
_ "github.com/golang-migrate/migrate/v4/source/file"
3536
)
@@ -139,8 +140,17 @@ func (s *Database) RunAsGroup(ctx context.Context, fn func(ctx context.Context)
139140
return s.CommitTx(ctx, tx, false /* we _are_ the auto-committer */)
140141
}
141142

142-
func (s *Database) applyDBMigrations(ctx context.Context, config config.Section, provider Provider) error {
143-
driver, err := provider.GetMigrationDriver(s.db)
143+
func (s *Database) applyDBMigrations(ctx context.Context, config config.Section, provider Provider) (err error) {
144+
var driver database.Driver
145+
providerClosable, isClosable := provider.(ProviderCloseableMigrationDriver)
146+
if isClosable {
147+
driver, err = providerClosable.GetMigrationDriverClosable(s.db)
148+
defer func() {
149+
_ = driver.Close()
150+
}()
151+
} else {
152+
driver, err = provider.GetMigrationDriver(s.db)
153+
}
144154
if err == nil {
145155
fileURL := "file://" + config.GetString(SQLConfMigrationsDirectory)
146156
log.L(ctx).Infof("Running migrations in: %s", fileURL)
@@ -184,7 +194,7 @@ func (s *Database) BeginOrUseTx(ctx context.Context) (ctx1 context.Context, tx *
184194
ctx1 = log.WithLogger(ctx, l)
185195
before := time.Now()
186196
l.Tracef("SQL-> begin")
187-
sqlTX, err := s.db.Begin()
197+
sqlTX, err := s.db.BeginTx(ctx /* transaction should auto-rollback on context cancel */, nil /* default options */)
188198
if err != nil {
189199
return ctx1, nil, false, i18n.WrapError(ctx1, err, i18n.MsgDBBeginFailed)
190200
}

pkg/dbsql/mock_provider.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ type MockProvider struct {
4040
mmg *dbmigratemocks.Driver
4141
}
4242

43+
type MockProviderConnScoped struct {
44+
MockProvider
45+
}
46+
4347
type MockProviderConfig struct {
4448
FakePSQLInsert bool
4549
OpenError error
@@ -108,3 +112,7 @@ func (mp *MockProvider) Open(_ string) (*sql.DB, error) {
108112
func (mp *MockProvider) GetMigrationDriver(_ *sql.DB) (migratedb.Driver, error) {
109113
return mp.mmg, mp.GetMigrationDriverError
110114
}
115+
116+
func (mp *MockProviderConnScoped) GetMigrationDriverConn(_ *sql.DB) (migratedb.Driver, error) {
117+
return mp.mmg, mp.GetMigrationDriverError
118+
}

pkg/dbsql/provider.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ type Provider interface {
5959
// Open creates the DB instances
6060
Open(url string) (*sql.DB, error)
6161

62-
// GetDriver returns the driver implementation
62+
// GetDriver returns the driver implementation - preferred if supported to implement GetMigrationDriverConn so the connection can be cleaned up (cleaning this driver up closes the whole DB)
6363
GetMigrationDriver(*sql.DB) (migratedb.Driver, error)
6464

6565
// Features returns database specific configuration switches
@@ -68,3 +68,9 @@ type Provider interface {
6868
// ApplyInsertQueryCustomizations updates the INSERT query for returning the Sequence, and returns whether it needs to be run as a query to return the Sequence field
6969
ApplyInsertQueryCustomizations(insert sq.InsertBuilder, requestConflictEmptyResult bool) (updatedInsert sq.InsertBuilder, runAsQuery bool)
7070
}
71+
72+
// Implementing this interface allows cleanup of the connection used during migration
73+
type ProviderCloseableMigrationDriver interface {
74+
// Returns the driver implementation that is safe to close. Specifically this means the WithConnection() use in migration, rather than WithInstance().
75+
GetMigrationDriverClosable(*sql.DB) (migratedb.Driver, error)
76+
}

0 commit comments

Comments
 (0)