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 }