...
1 package database
2
3 import (
4 "context"
5 "database/sql"
6 "fmt"
7
8 rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules"
9 datasql "edge-infra.dev/pkg/sds/emergencyaccess/rules/storage/database/sql"
10 )
11
12
13 func (ds Dataset) EARoles(ctx context.Context, bannerID string, command rulesengine.Command) ([]string, error) {
14 rows, err := ds.db.QueryContext(ctx, datasql.SelectPrivNamesForCommandAndBanner, command.Name, command.Type, bannerID)
15 if err != nil {
16 return nil, err
17 }
18 defer rows.Close()
19
20 return scanPrivRows(rows)
21 }
22
23 func scanPrivRows(rows *sql.Rows) ([]string, error) {
24 var res []string
25 for rows.Next() {
26 var privilege string
27 err := rows.Scan(&privilege)
28 if err != nil {
29 return nil, fmt.Errorf("error in data:scanPrivRows: %v", err)
30 }
31 res = append(res, privilege)
32 }
33 err := rows.Err()
34 if err != nil {
35 err = fmt.Errorf("error in data:scanPrivRows on rows.Err: %v", err)
36 }
37 return res, err
38 }
39
View as plain text