feat(mysql)!: promote to v1.0.0 — BeginTx with isolation levels, Stats, bump all deps to v1.0.0
Add BeginTx(ctx, *sql.TxOptions) to Client interface for explicit transaction isolation level control; Begin refactored as a convenience wrapper calling BeginTx(ctx, nil). Add Stats() sql.DBStats to Component interface for connection pool observability. Bump all micro-lib dependencies (logz, health, launcher, xerrors) from v0.9.0 to v1.0.0. API committed as stable.
This commit is contained in:
@@ -99,9 +99,10 @@ func (m *mockTx) Rollback() error
|
||||
|
||||
type mockClient struct{ tx *mockTx }
|
||||
|
||||
func (m *mockClient) Begin(ctx context.Context) (Tx, error) { return m.tx, nil }
|
||||
func (m *mockClient) Ping(ctx context.Context) error { return nil }
|
||||
func (m *mockClient) HandleError(err error) error { return HandleError(err) }
|
||||
func (m *mockClient) Begin(ctx context.Context) (Tx, error) { return m.tx, nil }
|
||||
func (m *mockClient) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error) { return m.tx, nil }
|
||||
func (m *mockClient) Ping(ctx context.Context) error { return nil }
|
||||
func (m *mockClient) HandleError(err error) error { return HandleError(err) }
|
||||
func (m *mockClient) GetExecutor(ctx context.Context) Executor {
|
||||
if tx, ok := ctx.Value(ctxTxKey{}).(Executor); ok {
|
||||
return tx
|
||||
@@ -143,6 +144,24 @@ func TestUnitOfWork_InjectsExecutor(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// --- BeginTx / Stats ---
|
||||
|
||||
func TestComponent_BeginTx_NilDB(t *testing.T) {
|
||||
c := &mysqlComponent{logger: newLogger()}
|
||||
_, err := c.BeginTx(context.Background(), nil)
|
||||
if err == nil {
|
||||
t.Error("expected error for nil db")
|
||||
}
|
||||
}
|
||||
|
||||
func TestComponent_Stats_NilDB(t *testing.T) {
|
||||
c := &mysqlComponent{logger: newLogger()}
|
||||
stats := c.Stats()
|
||||
if stats.MaxOpenConnections != 0 || stats.OpenConnections != 0 {
|
||||
t.Errorf("expected zero DBStats, got %+v", stats)
|
||||
}
|
||||
}
|
||||
|
||||
// --- helpers ---
|
||||
|
||||
func assertCode(t *testing.T, err error, want xerrors.Code) {
|
||||
|
||||
Reference in New Issue
Block a user