package roles import ( "github.com/jmoiron/sqlx" "github.com/rs/zerolog/log" ) type Role struct { ID int64 `json:"id"` Name string `json:"name"` Offering string `json:"offering"` *sqlx.DB } func NewRole(db *sqlx.DB, name, offering string) *Role { return &Role{ Name: name, Offering: offering, DB: db, } } func (r *Role) Save() error { q := `insert or replace into roles (name, offering) values (?, ?)` res, err := r.Exec(q, r.Name, r.Offering) if checkErr(err) { return err } id, err := res.LastInsertId() if checkErr(err) { return err } r.ID = id return nil } func getRolesByOffering(db *sqlx.DB, offering string) ([]*Role, error) { roles := []*Role{} err := db.Select(&roles, `select * from roles where offering=?`, offering) if checkErr(err) { return nil, err } for _, r := range roles { r.DB = db } return roles, nil } func getRole(db *sqlx.DB, name, offering string) (*Role, error) { role := &Role{} err := db.Get(role, `select * from roles where role=? and offering=?`, role, offering) if checkErr(err) { return nil, err } role.DB = db return role, nil } func checkErr(err error) bool { if err != nil { log.Error().Err(err).Msg("") return true } return false }