github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/deletable/deletable.go (about) 1 package deletable 2 3 import ( 4 "github.com/jmoiron/sqlx" 5 "github.com/k0marov/go-socnet/core/abstract/deletable/service" 6 "github.com/k0marov/go-socnet/core/abstract/deletable/store/sql_db" 7 "github.com/k0marov/go-socnet/core/abstract/ownable" 8 "github.com/k0marov/go-socnet/core/abstract/table_name" 9 "github.com/k0marov/go-socnet/core/general/core_err" 10 ) 11 12 type ( 13 Deleter = service.Deleter 14 ForceDeleter = service.ForceDeleter 15 ) 16 17 type deletable struct { 18 Delete Deleter 19 ForceDelete ForceDeleter 20 } 21 22 func NewDeletable(db *sqlx.DB, tableName table_name.TableName, ownerGetter ownable.OwnerGetter) (deletable, error) { 23 // store 24 sqlDB, err := sql_db.NewSqlDB(db, tableName) 25 if err != nil { 26 return deletable{}, core_err.Rethrow("opening sql db for Deletable", err) 27 } 28 // service 29 deleter := service.NewDeleter(ownerGetter, sqlDB.Delete) 30 forceDeleter := service.NewForceDeleter(sqlDB.Delete) 31 32 return deletable{ 33 Delete: deleter, 34 ForceDelete: forceDeleter, 35 }, nil 36 }