diff options
Diffstat (limited to 'backend/internal/database/keys.go')
-rw-r--r-- | backend/internal/database/keys.go | 49 |
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 +} |