aboutsummaryrefslogtreecommitdiff
path: root/backend/internal/database/keys.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/internal/database/keys.go')
-rw-r--r--backend/internal/database/keys.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/backend/internal/database/keys.go b/backend/internal/database/keys.go
new file mode 100644
index 0000000..0ec4b67
--- /dev/null
+++ b/backend/internal/database/keys.go
@@ -0,0 +1,49 @@
+package database
+
+import (
+ "context"
+ "fmt"
+ "time"
+)
+
+type KeyStore interface {
+ AddKey(ctx context.Context, keyName string, key []byte) (int, error)
+ GetKey(ctx context.Context, keyId int) (*Key, error)
+}
+
+func (d *database) AddKey(ctx context.Context, keyName string, key []byte) (int, error) {
+ row, err := d.queryRow(ctx, d.db, "keys/add_key", keyName, key)
+ if err != nil {
+ return 0, fmt.Errorf("unable to add key: %w", err)
+ }
+
+ var keyId int
+ err = row.Scan(&keyId)
+ if err != nil {
+ return 0, fmt.Errorf("unable to scan key id: %w", err)
+ }
+
+ return keyId, nil
+}
+
+func (d *database) GetKey(ctx context.Context, keyId int) (*Key, error) {
+ row, err := d.queryRow(ctx, d.db, "keys/get_key", keyId)
+ if err != nil {
+ return nil, fmt.Errorf("unable to get key: %w", err)
+ }
+
+ key := &Key{}
+ err = row.Scan(&key.Id, &key.Name, &key.Key, &key.Created)
+ if err != nil {
+ return nil, fmt.Errorf("unable to scan key: %w", err)
+ }
+
+ return key, nil
+}
+
+type Key struct {
+ Id int
+ Name string
+ Key []byte
+ Created time.Time
+}