All checks were successful
continuous-integration/drone/push Build is passing
88 lines
2.3 KiB
Go
88 lines
2.3 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"smt/utils"
|
|
)
|
|
|
|
type Safe struct {
|
|
SafeId int `db:"SafeId" json:"safeId"`
|
|
SafeName string `db:"SafeName" json:"safeName"`
|
|
}
|
|
|
|
// SafeGetByName queries the database for the specified safe name
|
|
func SafeGetByName(safename string) (Safe, error) {
|
|
var s Safe
|
|
|
|
// Query database for matching group object
|
|
err := db.QueryRowx("SELECT * FROM safes WHERE SafeName=?", safename).StructScan(&s)
|
|
if err != nil {
|
|
return s, errors.New("safe not found")
|
|
}
|
|
|
|
return s, nil
|
|
}
|
|
|
|
// SafeList returns a list of all safes in database
|
|
func SafeList() ([]Safe, error) {
|
|
var results []Safe
|
|
|
|
// Query database for safes
|
|
rows, err := db.Queryx("SELECT * FROM safes")
|
|
|
|
if err != nil {
|
|
log.Printf("SafeList error executing sql record : '%s'\n", err)
|
|
return results, err
|
|
} else {
|
|
// parse all the results into a slice
|
|
for rows.Next() {
|
|
var s Safe
|
|
err = rows.StructScan(&s)
|
|
if err != nil {
|
|
log.Printf("SafeList error parsing sql record : '%s'\n", err)
|
|
return results, err
|
|
}
|
|
results = append(results, s)
|
|
|
|
}
|
|
log.Printf("SafeList retrieved '%d' results\n", len(results))
|
|
}
|
|
|
|
return results, nil
|
|
}
|
|
|
|
// SafeList returns a list of safes in database that a user has access to
|
|
func SafeListAllowed(userId int) ([]Safe, error) {
|
|
var results []Safe
|
|
|
|
// Query database for safes
|
|
rows, err := db.Queryx(`
|
|
SELECT safes.* FROM safes INNER JOIN permissions ON safes.SafeId = permissions.SafeId INNER JOIN users ON users.GroupId = permissions.GroupId WHERE users.UserId = ?
|
|
UNION
|
|
SELECT safes.* FROM safes INNER JOIN permissions ON safes.SafeId = permissions.SafeId INNER JOIN users ON users.UserId = permissions.UserId WHERE users.UserId = ?
|
|
`, userId, userId)
|
|
|
|
if err != nil {
|
|
log.Printf("SafeListAllowed error executing sql record : '%s'\n", err)
|
|
return results, err
|
|
} else {
|
|
// parse all the results into a slice
|
|
for rows.Next() {
|
|
var s Safe
|
|
err = rows.StructScan(&s)
|
|
if err != nil {
|
|
log.Printf("SafeListAllowed error parsing sql record : '%s'\n", err)
|
|
return results, err
|
|
}
|
|
results = append(results, s)
|
|
|
|
debugPrint := utils.PrintStructContents(&s, 0)
|
|
log.Printf("SafeListAllowed adding record :\n%s\n", debugPrint)
|
|
}
|
|
log.Printf("SafeListAllowed retrieved '%d' results\n", len(results))
|
|
}
|
|
|
|
return results, nil
|
|
}
|