Implementing SQL version of roles interface

Signed-off-by: Ethan Wellenreiter <ewellenreiter@gmail.com>
This commit is contained in:
Ethan Wellenreiter 2025-05-05 22:04:13 -04:00
parent 65e18bf7a2
commit 074658f71c

View File

@ -0,0 +1,39 @@
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
}