github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/ownable/ownable.go (about)

     1  package ownable
     2  
     3  import (
     4  	"github.com/jmoiron/sqlx"
     5  	"github.com/k0marov/go-socnet/core/abstract/ownable/service"
     6  	"github.com/k0marov/go-socnet/core/abstract/ownable/store/sql_db"
     7  	"github.com/k0marov/go-socnet/core/abstract/table_name"
     8  	"github.com/k0marov/go-socnet/core/general/core_err"
     9  )
    10  
    11  type (
    12  	OwnerGetter = service.OwnerGetter
    13  )
    14  
    15  type ownable struct {
    16  	GetOwner OwnerGetter
    17  }
    18  
    19  func NewOwnable(db *sqlx.DB, tableName table_name.TableName) (ownable, error) {
    20  	// store
    21  	sqlDB, err := sql_db.NewSqlDB(db, tableName)
    22  	if err != nil {
    23  		return ownable{}, core_err.Rethrow("opening ownable sql db", err)
    24  	}
    25  	// service
    26  	getOwner := service.NewOwnerGetter(sqlDB.GetOwner)
    27  	return ownable{
    28  		GetOwner: getOwner,
    29  	}, nil
    30  }