This commit is contained in:
@@ -30,7 +30,7 @@ func GroupGetByName(groupname string) (Group, error) {
|
||||
func GroupList() ([]Group, error) {
|
||||
var results []Group
|
||||
|
||||
// Query database for role definitions
|
||||
// Query database for groups
|
||||
rows, err := db.Queryx("SELECT * FROM groups")
|
||||
|
||||
if err != nil {
|
||||
|
@@ -1,6 +1,84 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Safe struct {
|
||||
SafeId int `db:"SafeId"`
|
||||
SafeName string `db:"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("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
|
||||
}
|
||||
|
Reference in New Issue
Block a user