Files
ITWorx Pulse release export bd774932d5
Public source validation / validate (push) Failing after 3m8s
Publish ITWorx Pulse source
2026-09-03 02:09:19 +02:00

25 lines
1003 B
Go

package dashboard
import (
"context"
"encoding/json"
"errors"
"github.com/jackc/pgx/v5"
)
func (r Repository) GetVersion(ctx context.Context, id, actor string, number int) (Version, error) {
var v Version
var raw []byte
err := r.Pool.QueryRow(ctx, `SELECT v.id,v.dashboard_id,v.version_number,v.schema_version,v.document,v.change_summary,COALESCE(v.created_by::text,''),v.created_at FROM dashboard_versions v JOIN dashboards d ON d.id=v.dashboard_id WHERE v.dashboard_id=$1 AND v.version_number=$2 AND (d.scope IN ('shared','system') OR d.owner_user_id=(SELECT id FROM users WHERE external_subject=$3))`, id, number, actor).Scan(&v.ID, &v.DashboardID, &v.Number, &v.SchemaVersion, &raw, &v.ChangeSummary, &v.CreatedBy, &v.CreatedAt)
if errors.Is(err, pgx.ErrNoRows) {
return Version{}, ErrNotFound
}
if err != nil {
return Version{}, err
}
if err := json.Unmarshal(raw, &v.Document); err != nil {
return Version{}, errors.New("invalid stored dashboard document")
}
return v, nil
}