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 }