Public source validation / validate (push) Failing after 3m8s
25 lines
1003 B
Go
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
|
|
}
|