40 lines
936 B
Go
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
|
|
}
|