receipt_indexer/backend/internal/storage/sql-roles.go
Ethan Wellenreiter 074658f71c Implementing SQL version of roles interface
Signed-off-by: Ethan Wellenreiter <ewellenreiter@gmail.com>
2025-05-05 22:04:34 -04:00

40 lines
936 B
Go

package storage
import (
"context"
"database/sql"
)
type SQLRolesStore struct {
db *sql.DB
}
func (s *SQLRolesStore) GetByName(ctx context.Context, name string) (*Role, error) {
ctx, cancel := context.WithTimeout(ctx, QueryTimeoutDuration)
defer cancel()
query := `SELECT id, name, description, level FROM roles WHERE name = $1`
role := &Role{}
err := s.db.QueryRowContext(ctx, query, name).Scan(&role.ID, &role.Name, &role.Description, &role.Level)
if err != nil {
return nil, err
}
return role, nil
}
func (s *SQLRolesStore) GetById(ctx context.Context, id int64) (*Role, error) {
ctx, cancel := context.WithTimeout(ctx, QueryTimeoutDuration)
defer cancel()
query := `SELECT id, name, description, level FROM roles WHERE id = $1`
role := &Role{}
err := s.db.QueryRowContext(ctx, query, id).Scan(&role.ID, &role.Name, &role.Description, &role.Level)
if err != nil {
return nil, err
}
return role, nil
}