initial safes handler
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-01-10 11:29:21 +11:00
parent 8143470b5a
commit 50f078db7a
4 changed files with 141 additions and 11 deletions

View File

@@ -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 {

View File

@@ -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
}