Skip to content

Commit 212e4a7

Browse files
committed
reordered code in driver.go
1 parent 44421b3 commit 212e4a7

File tree

1 file changed

+86
-80
lines changed

1 file changed

+86
-80
lines changed

driver.go

Lines changed: 86 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,6 @@ var (
1919
attrDeprecated = trace.StringAttribute("ocsql.warning", "database driver uses deprecated features")
2020
)
2121

22-
type ocDriver struct {
23-
parent driver.Driver
24-
options TraceOptions
25-
}
26-
27-
type ocConn struct {
28-
parent driver.Conn
29-
options TraceOptions
30-
}
31-
32-
type ocTx struct {
33-
parent driver.Tx
34-
ctx context.Context
35-
options TraceOptions
36-
}
37-
38-
type ocStmt struct {
39-
parent driver.Stmt
40-
query string
41-
options TraceOptions
42-
}
43-
44-
type ocResult struct {
45-
parent driver.Result
46-
ctx context.Context
47-
options TraceOptions
48-
}
49-
50-
type ocRows struct {
51-
parent driver.Rows
52-
ctx context.Context
53-
options TraceOptions
54-
}
55-
5622
// Register initializes and registers our ocsql wrapped database driver
5723
// identified by its driverName and using provided TraceOptions. On success it
5824
// returns the generated driverName to use when calling sql.Open.
@@ -104,6 +70,12 @@ func Wrap(d driver.Driver, options ...TraceOption) driver.Driver {
10470
return ocDriver{parent: d, options: o}
10571
}
10672

73+
// ocDriver implements driver.Driver
74+
type ocDriver struct {
75+
parent driver.Driver
76+
options TraceOptions
77+
}
78+
10779
func (d ocDriver) Open(name string) (driver.Conn, error) {
10880
c, err := d.parent.Open(name)
10981
if err != nil {
@@ -112,6 +84,12 @@ func (d ocDriver) Open(name string) (driver.Conn, error) {
11284
return &ocConn{parent: c, options: d.options}, nil
11385
}
11486

87+
// ocConn implements driver.Conn
88+
type ocConn struct {
89+
parent driver.Conn
90+
options TraceOptions
91+
}
92+
11593
func (c ocConn) Ping(ctx context.Context) (err error) {
11694
if c.options.Ping && (c.options.AllowRoot || trace.FromContext(ctx) != nil) {
11795
var span *trace.Span
@@ -395,52 +373,11 @@ func (c *ocConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx,
395373
return ocTx{parent: tx, ctx: ctx}, nil
396374
}
397375

398-
func (t ocTx) Commit() (err error) {
399-
if t.options.Transaction {
400-
defer func() {
401-
if span := trace.FromContext(t.ctx); span != nil {
402-
span.SetStatus(trace.Status{Code: trace.StatusCodeOK})
403-
setSpanStatus(span, err)
404-
span.End()
405-
}
406-
}()
407-
}
408-
409-
_, span := trace.StartSpan(t.ctx, "sql:commit")
410-
defer func() {
411-
setSpanStatus(span, err)
412-
span.End()
413-
}()
414-
415-
err = t.parent.Commit()
416-
return
417-
}
418-
419-
func (t ocTx) Rollback() (err error) {
420-
if t.options.Transaction {
421-
defer func() {
422-
if span := trace.FromContext(t.ctx); span != nil {
423-
if err == nil {
424-
span.SetStatus(trace.Status{
425-
Code: trace.StatusCodeAborted,
426-
Message: "transaction rollback",
427-
})
428-
} else {
429-
setSpanStatus(span, err)
430-
}
431-
span.End()
432-
}
433-
}()
434-
}
435-
436-
_, span := trace.StartSpan(t.ctx, "sql:rollback")
437-
defer func() {
438-
setSpanStatus(span, err)
439-
span.End()
440-
}()
441-
442-
err = t.parent.Rollback()
443-
return
376+
// ocResult implements driver.Result
377+
type ocResult struct {
378+
parent driver.Result
379+
ctx context.Context
380+
options TraceOptions
444381
}
445382

446383
func (r ocResult) LastInsertId() (id int64, err error) {
@@ -469,6 +406,13 @@ func (r ocResult) RowsAffected() (cnt int64, err error) {
469406
return
470407
}
471408

409+
// ocStmt implements driver.Stmt
410+
type ocStmt struct {
411+
parent driver.Stmt
412+
query string
413+
options TraceOptions
414+
}
415+
472416
func (s ocStmt) Exec(args []driver.Value) (res driver.Result, err error) {
473417
if !s.options.AllowRoot {
474418
return s.parent.Exec(args)
@@ -616,6 +560,13 @@ func (s ocStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (row
616560
return
617561
}
618562

563+
// ocRows implements driver.Rows.
564+
type ocRows struct {
565+
parent driver.Rows
566+
ctx context.Context
567+
options TraceOptions
568+
}
569+
619570
func (r ocRows) Columns() []string {
620571
return r.parent.Columns()
621572
}
@@ -651,6 +602,61 @@ func (r ocRows) Next(dest []driver.Value) (err error) {
651602
return
652603
}
653604

605+
// ocTx implemens driver.Tx
606+
type ocTx struct {
607+
parent driver.Tx
608+
ctx context.Context
609+
options TraceOptions
610+
}
611+
612+
func (t ocTx) Commit() (err error) {
613+
if t.options.Transaction {
614+
defer func() {
615+
if span := trace.FromContext(t.ctx); span != nil {
616+
span.SetStatus(trace.Status{Code: trace.StatusCodeOK})
617+
setSpanStatus(span, err)
618+
span.End()
619+
}
620+
}()
621+
}
622+
623+
_, span := trace.StartSpan(t.ctx, "sql:commit")
624+
defer func() {
625+
setSpanStatus(span, err)
626+
span.End()
627+
}()
628+
629+
err = t.parent.Commit()
630+
return
631+
}
632+
633+
func (t ocTx) Rollback() (err error) {
634+
if t.options.Transaction {
635+
defer func() {
636+
if span := trace.FromContext(t.ctx); span != nil {
637+
if err == nil {
638+
span.SetStatus(trace.Status{
639+
Code: trace.StatusCodeAborted,
640+
Message: "transaction rollback",
641+
})
642+
} else {
643+
setSpanStatus(span, err)
644+
}
645+
span.End()
646+
}
647+
}()
648+
}
649+
650+
_, span := trace.StartSpan(t.ctx, "sql:rollback")
651+
defer func() {
652+
setSpanStatus(span, err)
653+
span.End()
654+
}()
655+
656+
err = t.parent.Rollback()
657+
return
658+
}
659+
654660
func wrapStmt(stmt driver.Stmt, query string, options TraceOptions) driver.Stmt {
655661
s := ocStmt{parent: stmt, query: query, options: options}
656662
_, hasExeCtx := stmt.(driver.StmtExecContext)

0 commit comments

Comments
 (0)