I'm trying to put external library under the interface but it seems that
this is not possible the way I thought it would be...
My interfaces are as following...
*type Beginner interface { Begin(ctx context.Context) (Tx, error)}type
Querier interface { Exec(ctx context.Context, sql string, arguments
...interface{}) (commandTag pgconn.CommandTag, err error) Query(ctx
context.Context, sql string, args ...interface{}) (pgx.Rows, error)
QueryRow(ctx context.Context, sql string, args ...interface{})
pgx.Row}type Tx interface { Commit(ctx context.Context) error
Rollback(ctx context.Context) error Querier}*
Now I have a function....
*func NewFoo (b Beginer) {}*
Into that function I want to pass a struct instance with the method that
has a following signature. (This function is not under my control).
*Begin(ctx context.Context) (pgx.Tx, error)*
Now the* pgx.Tx* has a following signature
*type Tx interface { Begin(ctx context.Context) (Tx, error)
Commit(ctx context.Context) error Rollback(ctx context.Context) error
CopyFrom(ctx context.Context, tableName Identifier, columnNames []string,
rowSrc CopyFromSource) (int64, error) SendBatch(ctx context.Context, b
*Batch) BatchResults LargeObjects() LargeObjects Prepare(ctx
context.Context, name, sql string) (*pgconn.StatementDescription, error)
Exec(ctx context.Context, sql string, arguments ...interface{})
(commandTag pgconn.CommandTag, err error) Query(ctx context.Context, sql
string, args ...interface{}) (Rows, error) QueryRow(ctx context.Context,
sql string, args ...interface{}) Row // Conn returns the underlying
*Conn that on which this transaction is executing. Conn() *Conn}*
The go is giving me the following error.
cannot use me.DBpgx() (type *pgxpool.Pool) as type db.Beginner in argument
to service.NewFoo:
*pgxpool.Pool does not implement db.Beginner (wrong type for Begin
method)
have Begin(context.Context) (pgx.Tx, error)
want Begin(context.Context) (db.Tx, error)
how come that this is forbidden as my Tx interface is clearly a subset of
pgx.Tx
BR,
Miha
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/9fc0ff89-867a-464b-a955-07a63eec4296n%40googlegroups.com.