mirror of
https://github.com/openziti/zrok.git
synced 2025-08-08 15:54:41 +02:00
48 lines
1.2 KiB
Go
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
|
|
}
|