Files
old-svijetlastrana/data/datamysql/transaction.go
2018-05-25 09:12:42 +02:00

103 lines
2.0 KiB
Go

package datamysql
import (
"database/sql"
"bitbucket.org/nemt/nemt-portal-api/domain/contract"
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
)
type transaction struct {
tx *sql.Tx
users *userRepo
rides *rideRepo
visits *visitRepo
provider *providerRepo
notification *notificationRepo
profile *profileRepo
organization *organizationRepo
zipcodes *zipcodeRepo
plan *planRepo
}
func newTransaction(tx *sql.Tx) *transaction {
t := new(transaction)
t.tx = tx
t.users = newUserRepo(tx)
t.rides = newRideRepo(tx)
t.visits = newVisitRepo(tx)
t.provider = newProviderRepo(tx)
t.notification = newNotificationRepo(tx)
t.profile = newProfileRepo(tx)
t.organization = newOrganizationRepo(tx)
t.zipcodes = newZipcodeRepo(tx)
t.plan = newPlanRepo(tx)
return t
}
// Users returns the users set
func (t transaction) Users() contract.UserRepo {
return t.users
}
// Rides returns the rides set
func (t transaction) Rides() contract.RideRepo {
return t.rides
}
// Rides returns the rides set
func (t transaction) Visits() contract.VisitRepo {
return t.visits
}
// Provider returns the rides set
func (t transaction) Provider() contract.ProviderRepo {
return t.provider
}
// Provider returns the rides set
func (t transaction) Profile() contract.ProfileRepo {
return t.profile
}
// Provider returns the rides set
func (t transaction) Notification() contract.NotificationRepo {
return t.notification
}
// Provider returns the rides set
func (t transaction) Organization() contract.OrganizationRepo {
return t.organization
}
func (t transaction) Zipcodes() contract.ZipcodeRepo {
return t.zipcodes
}
func (t transaction) Plans() contract.PlanRepo {
return t.plan
}
func (t *transaction) Commit() error {
err := t.tx.Commit()
if err != nil {
return errors.Wrap(err)
}
return nil
}
func (t *transaction) Rollback() error {
err := t.tx.Rollback()
if err != nil {
return errors.Wrap(err)
}
return nil
}