From 26e10a9399bd6185741d0912ffa54c807ffef671 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Mon, 27 Jan 2025 22:00:51 +0100 Subject: feat(webui): implement state versions list --- pkg/database/versions.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pkg/database/versions.go (limited to 'pkg/database/versions.go') diff --git a/pkg/database/versions.go b/pkg/database/versions.go new file mode 100644 index 0000000..5a6f11f --- /dev/null +++ b/pkg/database/versions.go @@ -0,0 +1,35 @@ +package database + +import ( + "fmt" + "time" + + "git.adyxax.org/adyxax/tfstated/pkg/model" +) + +func (db *DB) LoadVersionsByState(state *model.State) ([]model.Version, error) { + rows, err := db.Query( + `SELECT account_id, created, data, id, lock + FROM versions + WHERE state_id = ? + ORDER BY id DESC;`, state.Id) + if err != nil { + return nil, fmt.Errorf("failed to load versions from database: %w", err) + } + defer rows.Close() + versions := make([]model.Version, 0) + for rows.Next() { + var version model.Version + var created int64 + err = rows.Scan(&version.AccountId, &created, &version.Data, &version.Id, &version.Lock) + if err != nil { + return nil, fmt.Errorf("failed to load version from row: %w", err) + } + version.Created = time.Unix(created, 0) + versions = append(versions, version) + } + if err := rows.Err(); err != nil { + return nil, fmt.Errorf("failed to load versions from rows: %w", err) + } + return versions, nil +} -- cgit v1.2.3