| package entdriver | |
| import ( | |
| "database/sql" | |
| "entgo.io/ent/dialect" | |
| entDialectSQL "entgo.io/ent/dialect/sql" | |
| entdb "github.com/openmeterio/openmeter/openmeter/ent/db" | |
| ) | |
| type EntPostgresDriver struct { | |
| driver *entDialectSQL.Driver | |
| client *entdb.Client | |
| } | |
| // Close releases all the underlying resources. | |
| func (d *EntPostgresDriver) Close() error { | |
| if err := d.client.Close(); err != nil { | |
| return err | |
| } | |
| if err := d.driver.Close(); err != nil { | |
| return err | |
| } | |
| return nil | |
| } | |
| // Driver returns the underlying Driver. | |
| func (d *EntPostgresDriver) Driver() *entDialectSQL.Driver { | |
| return d.driver | |
| } | |
| // Client returns the underlying Client. | |
| func (d *EntPostgresDriver) Client() *entdb.Client { | |
| return d.client | |
| } | |
| // Clone returns a new EntPostgresDriver initialized by using the underlying *sql.DB. | |
| func (d *EntPostgresDriver) Clone() *EntPostgresDriver { | |
| driver := entDialectSQL.OpenDB(dialect.Postgres, d.driver.DB()) | |
| client := entdb.NewClient(entdb.Driver(driver)) | |
| return &EntPostgresDriver{ | |
| driver: driver, | |
| client: client, | |
| } | |
| } | |
| // NewEntPostgresDriver returns a EntPostgresDriver created from *sql.DB. | |
| func NewEntPostgresDriver(db *sql.DB) *EntPostgresDriver { | |
| driver := entDialectSQL.OpenDB(dialect.Postgres, db) | |
| client := entdb.NewClient(entdb.Driver(driver)) | |
| return &EntPostgresDriver{ | |
| driver: driver, | |
| client: client, | |
| } | |
| } | |