feat(webui): bootstrap state version page

This commit is contained in:
Julien Dessaux 2025-01-28 00:30:30 +01:00
parent 26e10a9399
commit 21c8d6601a
Signed by: adyxax
GPG key ID: F92E51B86E07177E
4 changed files with 101 additions and 0 deletions

View file

@ -1,12 +1,44 @@
package database
import (
"database/sql"
"errors"
"fmt"
"time"
"git.adyxax.org/adyxax/tfstated/pkg/model"
)
func (db *DB) LoadVersionById(id int) (*model.Version, error) {
version := model.Version{
Id: id,
}
var (
created int64
encryptedData []byte
)
err := db.QueryRow(
`SELECT account_id, state_id, data, lock, created FROM versions WHERE id = ?;`,
id).Scan(
&version.AccountId,
&version.StateId,
&encryptedData,
&version.Lock,
&created)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
}
return nil, fmt.Errorf("failed to load version id %d from database: %w", id, err)
}
version.Created = time.Unix(created, 0)
version.Data, err = db.dataEncryptionKey.DecryptAES256(encryptedData)
if err != nil {
return nil, fmt.Errorf("failed to decrypt version %d data: %w", id, err)
}
return &version, nil
}
func (db *DB) LoadVersionsByState(state *model.State) ([]model.Version, error) {
rows, err := db.Query(
`SELECT account_id, created, data, id, lock