Interface
package dao
import "credential-management/src/internal/model"
type Client interface {
Connect() error
Disconnect() error
InsertLookup(tr *Transaction, credentialLookup *model.CredentialLookup) error
UpdateLookup(tr *Transaction, credentialLookup *model.CredentialLookup) error
GetLookupById(tr *Transaction, id string) (*model.CredentialLookup, error)
GetLookupByField(tr *Transaction, field string, value string) ([]*model.CredentialLookup, error)
DeleteLookup(tr *Transaction, id string) error
}
Type Implementing Interface
type MongoClient struct {
connectURI string
dbName string
client *mongo.Client
collection *mongo.Collection
}
func NewMongoClient(host string) Client {
...
return client
}
func (m *MongoClient) Connect() error {
....
Convert from Interface to Type
client := NewMongoClient("host")
//cast to MongoClient to set mt.Coll
var mongoClient = client.(*MongoClient)
//perform actions only available in mongoClient type
mongoClient.collection = mt.Coll