From 074658f71cfc0dc5a61f9246c43a833bfc74eb32 Mon Sep 17 00:00:00 2001 From: Ethan Wellenreiter Date: Mon, 5 May 2025 22:04:13 -0400 Subject: [PATCH] Implementing SQL version of roles interface Signed-off-by: Ethan Wellenreiter --- backend/internal/storage/sql-roles.go | 39 +++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 backend/internal/storage/sql-roles.go diff --git a/backend/internal/storage/sql-roles.go b/backend/internal/storage/sql-roles.go new file mode 100644 index 0000000..84c9d60 --- /dev/null +++ b/backend/internal/storage/sql-roles.go @@ -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 +}