Nested folders: Allow creating folders with duplicate names in different locations (#77076)
* Add API test * Add move tests * Fix create folder * Fix move * Fix test * Drop and re-create index so that allows a folder to contain a dashboard and a subfolder with same name * Get folder by title defaults to root folder and optionally fetches folder by provided parent folder * Apply suggestions from code review
This commit is contained in:
@@ -346,9 +346,15 @@ func getExistingDashboardByIDOrUIDForUpdate(sess *db.Session, dash *dashboards.D
|
||||
func getExistingDashboardByTitleAndFolder(sess *db.Session, dash *dashboards.Dashboard, dialect migrator.Dialect, overwrite,
|
||||
isParentFolderChanged bool) (bool, error) {
|
||||
var existing dashboards.Dashboard
|
||||
// nolint:staticcheck
|
||||
exists, err := sess.Where("org_id=? AND title=? AND (is_folder=? OR folder_id=?)", dash.OrgID, dash.Title,
|
||||
dialect.BooleanStr(true), dash.FolderID).Get(&existing)
|
||||
condition := "org_id=? AND title=?"
|
||||
args := []any{dash.OrgID, dash.Title}
|
||||
if dash.FolderUID != "" {
|
||||
condition += " AND folder_uid=?"
|
||||
args = append(args, dash.FolderUID)
|
||||
} else {
|
||||
condition += " AND folder_uid IS NULL"
|
||||
}
|
||||
exists, err := sess.Where(condition, args...).Get(&existing)
|
||||
if err != nil {
|
||||
return isParentFolderChanged, fmt.Errorf("SQL query for existing dashboard by org ID or folder ID failed: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user