Storage: Show history+trash using the list command (#99009)
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
This commit is contained in:
co-authored by
Stephanie Hingtgen
parent
67252dfa46
commit
356b32008b
@@ -24,22 +24,25 @@ SELECT
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = {{ .Arg .Query.OrgID }}
|
||||
{{ if .Query.UseHistoryTable }}
|
||||
{{ if .Query.UID }}
|
||||
AND dashboard.uid = {{ .Arg .Query.UID }}
|
||||
{{ end }}
|
||||
{{ if .Query.Version }}
|
||||
AND dashboard_version.version = {{ .Arg .Query.Version }}
|
||||
AND dashboard_version.version = {{ .Arg .Query.Version }}
|
||||
{{ else if .Query.LastID }}
|
||||
AND dashboard_version.version < {{ .Arg .Query.LastID }}
|
||||
AND dashboard_version.version < {{ .Arg .Query.LastID }}
|
||||
{{ end }}
|
||||
ORDER BY dashboard_version.version DESC
|
||||
{{ else }}
|
||||
{{ if .Query.UID }}
|
||||
AND dashboard.uid = {{ .Arg .Query.UID }}
|
||||
AND dashboard.uid = {{ .Arg .Query.UID }}
|
||||
{{ else if .Query.LastID }}
|
||||
AND dashboard.id > {{ .Arg .Query.LastID }}
|
||||
AND dashboard.id > {{ .Arg .Query.LastID }}
|
||||
{{ end }}
|
||||
{{ if .Query.GetTrash }}
|
||||
AND dashboard.deleted IS NOT NULL
|
||||
AND dashboard.deleted IS NOT NULL
|
||||
{{ else if .Query.LastID }}
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.deleted IS NULL
|
||||
{{ end }}
|
||||
ORDER BY dashboard.id DESC
|
||||
{{ end }}
|
||||
|
||||
@@ -98,8 +98,10 @@ func (a *dashboardSqlAccess) getRows(ctx context.Context, sql *legacysql.LegacyD
|
||||
return nil, fmt.Errorf("execute template %q: %w", tmpl.Name(), err)
|
||||
}
|
||||
q := rawQuery
|
||||
// q = sqltemplate.RemoveEmptyLines(rawQuery)
|
||||
// fmt.Printf(">>%s [%+v]", q, req.GetArgs())
|
||||
// if true {
|
||||
// pretty := sqltemplate.RemoveEmptyLines(rawQuery)
|
||||
// fmt.Printf("DASHBOARD QUERY: %s [%+v] // %+v\n", pretty, req.GetArgs(), query)
|
||||
// }
|
||||
|
||||
rows, err := sql.DB.GetSqlxSession().Query(ctx, q, req.GetArgs()...)
|
||||
if err != nil {
|
||||
@@ -267,6 +269,7 @@ func (a *dashboardSqlAccess) scanRow(rows *sql.Rows) (*dashboardRow, error) {
|
||||
|
||||
if deleted.Valid {
|
||||
meta.SetDeletionTimestamp(ptr.To(metav1.NewTime(deleted.Time)))
|
||||
meta.SetGeneration(utils.DeletedGeneration)
|
||||
}
|
||||
|
||||
if message.String != "" {
|
||||
|
||||
@@ -192,6 +192,16 @@ func (a *dashboardSqlAccess) ListIterator(ctx context.Context, req *resource.Lis
|
||||
return 0, err
|
||||
}
|
||||
|
||||
switch req.Source {
|
||||
case resource.ListRequest_HISTORY:
|
||||
query.GetHistory = true
|
||||
query.UID = req.Options.Key.Name
|
||||
case resource.ListRequest_TRASH:
|
||||
query.GetTrash = true
|
||||
case resource.ListRequest_STORE:
|
||||
// normal
|
||||
}
|
||||
|
||||
listRV, err := sql.GetResourceVersion(ctx, "dashboard", "updated")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
@@ -250,87 +260,6 @@ func (a *dashboardSqlAccess) Search(ctx context.Context, req *resource.ResourceS
|
||||
return nil, fmt.Errorf("not yet (filter)")
|
||||
}
|
||||
|
||||
/**
|
||||
func (a *dashboardSqlAccess) History(ctx context.Context, req *resource.HistoryRequest) (*resource.HistoryResponse, error) {
|
||||
info, err := claims.ParseNamespace(req.Key.Namespace)
|
||||
if err == nil {
|
||||
err = isDashboardKey(req.Key, false)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
token, err := readContinueToken(req.NextPageToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if token.orgId > 0 && token.orgId != info.OrgID {
|
||||
return nil, fmt.Errorf("token and orgID mismatch")
|
||||
}
|
||||
limit := int(req.Limit)
|
||||
if limit < 1 {
|
||||
limit = 15
|
||||
}
|
||||
query := &DashboardQuery{
|
||||
OrgID: info.OrgID,
|
||||
Limit: limit + 1,
|
||||
LastID: token.id,
|
||||
UID: req.Key.Name,
|
||||
}
|
||||
if req.ShowDeleted {
|
||||
query.GetTrash = true
|
||||
} else {
|
||||
query.GetHistory = true
|
||||
}
|
||||
|
||||
sql, err := a.sql(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rows, err := a.getRows(ctx, sql, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer func() { _ = rows.Close() }()
|
||||
|
||||
list := &resource.HistoryResponse{}
|
||||
for rows.Next() {
|
||||
if rows.err != nil || rows.row == nil {
|
||||
return list, err
|
||||
}
|
||||
row := rows.row
|
||||
|
||||
partial := &metav1.PartialObjectMetadata{
|
||||
ObjectMeta: row.Dash.ObjectMeta,
|
||||
}
|
||||
partial.UID = "" // it is not useful/helpful/accurate and just confusing now
|
||||
|
||||
val, err := json.Marshal(partial)
|
||||
if err != nil {
|
||||
return list, err
|
||||
}
|
||||
|
||||
if len(list.Items) >= limit {
|
||||
// if query.Requirements.Folder != nil {
|
||||
// row.token.folder = *query.Requirements.Folder
|
||||
// }
|
||||
row.token.id = getVersionFromRV(row.RV) // Use the version as the increment
|
||||
list.NextPageToken = row.token.String() // will skip this one but start here next time
|
||||
return list, err
|
||||
}
|
||||
|
||||
list.Items = append(list.Items, &resource.ResourceMeta{
|
||||
ResourceVersion: row.RV,
|
||||
PartialObjectMeta: val,
|
||||
Size: int32(len(rows.Value())),
|
||||
Hash: "??", // hash the full?
|
||||
})
|
||||
}
|
||||
return list, err
|
||||
}
|
||||
**/
|
||||
|
||||
func (a *dashboardSqlAccess) ListRepositoryObjects(ctx context.Context, req *resource.ListRepositoryObjectsRequest) (*resource.ListRepositoryObjectsResponse, error) {
|
||||
return nil, fmt.Errorf("not implemented")
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
+1
-1
@@ -15,5 +15,5 @@ SELECT
|
||||
LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.uid = 'UUU'
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Vendored
+2
-1
@@ -16,5 +16,6 @@ SELECT
|
||||
LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard_version.version = 3
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard_version.version = 3
|
||||
ORDER BY dashboard_version.version DESC
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
+1
-1
@@ -15,5 +15,5 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.uid = 'UUU'
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Vendored
+2
-1
@@ -16,5 +16,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard_version.version = 3
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard_version.version = 3
|
||||
ORDER BY dashboard_version.version DESC
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.id > 22
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
+1
-1
@@ -15,5 +15,5 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.uid = 'UUU'
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Vendored
+2
-1
@@ -16,5 +16,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard_version.version = 3
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard_version.version = 3
|
||||
ORDER BY dashboard_version.version DESC
|
||||
|
||||
Vendored
+2
-2
@@ -15,6 +15,6 @@ SELECT
|
||||
LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
|
||||
WHERE dashboard.is_folder = false
|
||||
AND dashboard.org_id = 2
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
AND dashboard.uid = 'UUU'
|
||||
AND dashboard.deleted IS NULL
|
||||
ORDER BY dashboard.id DESC
|
||||
|
||||
Reference in New Issue
Block a user