Files
zrok/controller/store/secret.go
2025-06-16 11:49:07 -04:00

48 lines
1.2 KiB
Go

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
}