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

     1  package recommendable
     2  
     3  import (
     4  	"github.com/jmoiron/sqlx"
     5  	"github.com/k0marov/go-socnet/core/abstract/recommendable/service"
     6  	"github.com/k0marov/go-socnet/core/abstract/recommendable/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  	RecsGetter  = service.RecsGetter
    13  	RecsUpdater = service.RecsUpdater
    14  )
    15  
    16  type Recommendable struct {
    17  	GetRecs    RecsGetter
    18  	UpdateRecs RecsUpdater
    19  }
    20  
    21  func NewRecommendable(db *sqlx.DB, tableName table_name.TableName) (Recommendable, error) {
    22  	// store
    23  	sqlDB, err := sql_db.NewSqlDB(db, tableName)
    24  	if err != nil {
    25  		return Recommendable{}, core_err.Rethrow("opening Recommendable sql db", err)
    26  	}
    27  	// service
    28  	getRecs := service.NewRecsGetter(sqlDB.GetRecs, sqlDB.GetRandom)
    29  	updateRecs := service.NewRecsUpdater()
    30  	return Recommendable{
    31  		GetRecs:    getRecs,
    32  		UpdateRecs: updateRecs,
    33  	}, nil
    34  }