store implementation for secrets (#968)

This commit is contained in:
Michael Quigley 2025-06-16 11:49:07 -04:00
parent 6c0004a490
commit 65da4561f8
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62

View File

@ -0,0 +1,47 @@
package store
import (
"github.com/jmoiron/sqlx"
"github.com/pkg/errors"
)
type Secrets struct {
Model
ShareId int
Secrets []Secret
}
type Secret struct {
Key string
Value string
}
func (str *Store) CreateSecrets(secrets Secrets, trx *sqlx.Tx) error {
for _, secret := range secrets.Secrets {
stmt, err := trx.Prepare("insert into secrets (share_id, key, value) values ($1, $2, $3)")
if err != nil {
return errors.Wrap(err, "error preparing secrets insert statement")
}
_, err = stmt.Exec(secrets.ShareId, secret.Key, secret.Value)
if err != nil {
return errors.Wrap(err, "error executing secrets insert statement")
}
}
return nil
}
func (str *Store) GetSecrets(shareId int, trx *sqlx.Tx) (Secrets, error) {
secrets := Secrets{}
rows, err := trx.Queryx("select * from secrets where share_id = $1 and not deleted", shareId)
if err != nil {
return Secrets{}, errors.Wrap(err, "error getting all from secrets")
}
for rows.Next() {
secret := Secret{}
if err := rows.StructScan(&secret); err != nil {
return Secrets{}, errors.Wrap(err, "error scanning secrets")
}
secrets.Secrets = append(secrets.Secrets, secret)
}
return secrets, nil
}