diff --git a/adapters/kmysql/sql_adapter.go b/adapters/kmysql/sql_adapter.go index b9da4a3..532767d 100644 --- a/adapters/kmysql/sql_adapter.go +++ b/adapters/kmysql/sql_adapter.go @@ -38,6 +38,11 @@ func (s SQLAdapter) BeginTx(ctx context.Context) (ksql.Tx, error) { return SQLTx{Tx: tx}, err } +// Close implements the io.Closer interface +func (s SQLAdapter) Close() error { + return s.DB.Close() +} + // SQLTx is used to implement the DBAdapter interface and implements // the Tx interface type SQLTx struct { diff --git a/adapters/kpgx/pgx_adapter.go b/adapters/kpgx/pgx_adapter.go index e7f2174..93a7c40 100644 --- a/adapters/kpgx/pgx_adapter.go +++ b/adapters/kpgx/pgx_adapter.go @@ -42,6 +42,12 @@ func (p PGXAdapter) BeginTx(ctx context.Context) (ksql.Tx, error) { return PGXTx{tx}, err } +// Close implements the io.Closer interface +func (p PGXAdapter) Close() error { + p.db.Close() + return nil +} + // PGXResult is used to implement the DBAdapter interface and implements // the Result interface type PGXResult struct { diff --git a/adapters/ksqlite3/sql_adapter.go b/adapters/ksqlite3/sql_adapter.go index e819f42..7a06798 100644 --- a/adapters/ksqlite3/sql_adapter.go +++ b/adapters/ksqlite3/sql_adapter.go @@ -38,6 +38,11 @@ func (s SQLAdapter) BeginTx(ctx context.Context) (ksql.Tx, error) { return SQLTx{Tx: tx}, err } +// Close implements the io.Closer interface +func (s SQLAdapter) Close() error { + return s.DB.Close() +} + // SQLTx is used to implement the DBAdapter interface and implements // the Tx interface type SQLTx struct { diff --git a/adapters/ksqlserver/sql_adapter.go b/adapters/ksqlserver/sql_adapter.go index bff39ac..3bf66df 100644 --- a/adapters/ksqlserver/sql_adapter.go +++ b/adapters/ksqlserver/sql_adapter.go @@ -38,6 +38,11 @@ func (s SQLAdapter) BeginTx(ctx context.Context) (ksql.Tx, error) { return SQLTx{Tx: tx}, err } +// Close implements the io.Closer interface +func (s SQLAdapter) Close() error { + return s.DB.Close() +} + // SQLTx is used to implement the DBAdapter interface and implements // the Tx interface type SQLTx struct { diff --git a/ksql.go b/ksql.go index 0352c2b..8aacad4 100644 --- a/ksql.go +++ b/ksql.go @@ -4,6 +4,7 @@ import ( "context" "crypto/tls" "fmt" + "io" "reflect" "strings" "unicode" @@ -890,6 +891,14 @@ func (c DB) Transaction(ctx context.Context, fn func(Provider) error) error { } } +func (c DB) Close() error { + closer, ok := c.db.(io.Closer) + if ok { + return closer.Close() + } + return nil +} + type nopScanner struct{} var nopScannerValue = reflect.ValueOf(&nopScanner{}).Interface()