/
multi_driver.go
57 lines (45 loc) · 1.08 KB
/
multi_driver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Code generated by ent, DO NOT EDIT.
package dbx
import (
"context"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
)
type multiDriver struct {
r, w dialect.Driver
}
var _ dialect.Driver = (*multiDriver)(nil)
func NewMultiDriver(r, w dialect.Driver) dialect.Driver {
return &multiDriver{
r: r,
w: w,
}
}
func (d *multiDriver) Dialect() string {
return d.r.Dialect()
}
func (d *multiDriver) Query(ctx context.Context, query string, args, v any) error {
return d.r.Query(ctx, query, args, v)
}
func (d *multiDriver) Exec(ctx context.Context, query string, args, v any) error {
return d.w.Exec(ctx, query, args, v)
}
func (d *multiDriver) Tx(ctx context.Context) (dialect.Tx, error) {
return d.w.Tx(ctx)
}
func (d *multiDriver) BeginTx(ctx context.Context, opts *sql.TxOptions) (dialect.Tx, error) {
return d.w.(interface {
BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error)
}).BeginTx(ctx, opts)
}
func (d *multiDriver) Close() error {
rerr := d.r.Close()
werr := d.w.Close()
if rerr != nil {
return rerr
}
if werr != nil {
return werr
}
return nil
}