package database import ( "context" "database/sql" "fmt" rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules" datasql "edge-infra.dev/pkg/sds/emergencyaccess/rules/storage/database/sql" ) // EARoles implements rulesengine.Dataset. func (ds Dataset) EARoles(ctx context.Context, bannerID string, command rulesengine.Command) ([]string, error) { rows, err := ds.db.QueryContext(ctx, datasql.SelectPrivNamesForCommandAndBanner, command.Name, command.Type, bannerID) if err != nil { return nil, err } defer rows.Close() return scanPrivRows(rows) } func scanPrivRows(rows *sql.Rows) ([]string, error) { var res []string for rows.Next() { var privilege string err := rows.Scan(&privilege) if err != nil { return nil, fmt.Errorf("error in data:scanPrivRows: %v", err) } res = append(res, privilege) } err := rows.Err() if err != nil { err = fmt.Errorf("error in data:scanPrivRows on rows.Err: %v", err) } return res, err }