feat: initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type Role struct {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Level int64 `json:"level"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
type RoleStore struct {
|
||||
db *sql.DB
|
||||
}
|
||||
|
||||
func (s *RoleStore) GetByName(ctx context.Context, name string) (*Role, error) {
|
||||
query := `
|
||||
SELECT id, name, level, description
|
||||
FROM roles
|
||||
WHERE name = $1
|
||||
`
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, QueryTimeout)
|
||||
defer cancel()
|
||||
|
||||
role := &Role{}
|
||||
|
||||
err := s.db.QueryRowContext(ctx, query, name).Scan(
|
||||
&role.ID,
|
||||
&role.Name,
|
||||
&role.Level,
|
||||
&role.Description,
|
||||
)
|
||||
if err != nil {
|
||||
switch err {
|
||||
case sql.ErrNoRows:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return role, nil
|
||||
}
|
||||
Reference in New Issue
Block a user