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/states.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'pkg/database/states.go') diff --git a/pkg/database/states.go b/pkg/database/states.go index 1bd3d76..d65dd7c 100644 --- a/pkg/database/states.go +++ b/pkg/database/states.go @@ -45,7 +45,29 @@ func (db *DB) GetState(path string) ([]byte, error) { return db.dataEncryptionKey.DecryptAES256(encryptedData) } -func (db *DB) LoadStatesByPath() ([]model.State, error) { +func (db *DB) LoadStateById(stateId int) (*model.State, error) { + state := model.State{ + Id: stateId, + } + var ( + created int64 + updated int64 + ) + err := db.QueryRow( + `SELECT created, lock, path, updated FROM states WHERE id = ?;`, + stateId).Scan(&created, &state.Lock, &state.Path, &updated) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return nil, nil + } + return nil, fmt.Errorf("failed to load state id %s from database: %w", stateId, err) + } + state.Created = time.Unix(created, 0) + state.Updated = time.Unix(updated, 0) + return &state, nil +} + +func (db *DB) LoadStates() ([]model.State, error) { rows, err := db.Query( `SELECT created, id, lock, path, updated FROM states;`) if err != nil { @@ -61,7 +83,7 @@ func (db *DB) LoadStatesByPath() ([]model.State, error) { ) err = rows.Scan(&created, &state.Id, &state.Lock, &state.Path, &updated) if err != nil { - return nil, fmt.Errorf("failed to load states from row: %w", err) + return nil, fmt.Errorf("failed to load state from row: %w", err) } state.Created = time.Unix(created, 0) state.Updated = time.Unix(updated, 0) -- cgit v1.2.3