Skip to content

Commit

Permalink
RavenDB-22501 Exception in studio on delete all items in collection
Browse files Browse the repository at this point in the history
  • Loading branch information
ml054 committed Jun 25, 2024
1 parent 8b6b545 commit f1e84e8
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import virtualNotification from "common/notifications/models/virtualNotification";


abstract class groupedVirtualNotification<T extends { id: string }> extends virtualNotification {
operations = ko.observableArray<T>([]);
}

export = groupedVirtualNotification;
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
/// <reference path="../../../../typings/tsd.d.ts" />
import virtualNotification = require("common/notifications/models/virtualNotification");
import database = require("models/resources/database");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import moment = require("moment");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualBulkInsert extends virtualNotification {
class virtualBulkInsert extends groupedVirtualNotification<virtualBulkOperationItem> {

static readonly Id = "virtual$$bulkInsert";

operations = ko.observableArray<virtualBulkOperationItem>([]);

constructor(db: database) {
super(db, {
Id: virtualBulkInsert.Id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
/// <reference path="../../../../typings/tsd.d.ts" />
import virtualNotification = require("common/notifications/models/virtualNotification");
import database = require("models/resources/database");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import moment = require("moment");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualBulkInsertFailures extends virtualNotification {
class virtualBulkInsertFailures extends groupedVirtualNotification<virtualBulkOperationFailureItem> {

static readonly Id = "virtual$$bulkInsertFailures";

operations = ko.observableArray<virtualBulkOperationFailureItem>([]);

constructor(db: database) {
super(db, {
Id: virtualBulkInsertFailures.Id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
/// <reference path="../../../../typings/tsd.d.ts" />
import virtualNotification = require("common/notifications/models/virtualNotification");
import database = require("models/resources/database");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import moment = require("moment");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualDeleteByQuery extends virtualNotification {
class virtualDeleteByQuery extends groupedVirtualNotification<queryBasedVirtualBulkOperationItem> {

static readonly Id = "virtual$$deleteByQuery";

operations = ko.observableArray<queryBasedVirtualBulkOperationItem>([]);

constructor(db: database) {
super(db, {
Id: virtualDeleteByQuery.Id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
/// <reference path="../../../../typings/tsd.d.ts" />
import virtualNotification = require("common/notifications/models/virtualNotification");
import database = require("models/resources/database");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import moment = require("moment");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualDeleteByQueryFailures extends virtualNotification {
class virtualDeleteByQueryFailures extends groupedVirtualNotification<queryBasedVirtualBulkOperationFailureItem> {

static readonly Id = "virtual$$deleteByQueryFailures";

operations = ko.observableArray<queryBasedVirtualBulkOperationFailureItem>([]);

constructor(db: database) {
super(db, {
Id: virtualDeleteByQueryFailures.Id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ import virtualNotification = require("common/notifications/models/virtualNotific
import database = require("models/resources/database");
import moment = require("moment");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualUpdateByQuery extends virtualNotification {
class virtualUpdateByQuery extends groupedVirtualNotification<queryBasedVirtualBulkOperationItem> {

static readonly Id = "virtual$$updateByQuery";

operations = ko.observableArray<queryBasedVirtualBulkOperationItem>([]);

constructor(db: database) {
super(db, {
Id: virtualUpdateByQuery.Id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
/// <reference path="../../../../typings/tsd.d.ts" />
import virtualNotification = require("common/notifications/models/virtualNotification");
import database = require("models/resources/database");
import pluralizeHelpers = require("common/helpers/text/pluralizeHelpers");
import moment = require("moment");
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";

class virtualUpdateByQueryFailures extends virtualNotification {
class virtualUpdateByQueryFailures extends groupedVirtualNotification<queryBasedVirtualBulkOperationFailureItem> {

static readonly Id = "virtual$$updateByQueryFailures";

operations = ko.observableArray<queryBasedVirtualBulkOperationFailureItem>([]);

constructor(db: database) {
super(db, {
Id: virtualUpdateByQueryFailures.Id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ import complexFieldsAlertDetails
from "viewmodels/common/notificationCenter/detailViewer/alerts/complexFieldsAlertDetails";
import cpuCreditsBalanceDetails
from "viewmodels/common/notificationCenter/detailViewer/alerts/cpuCreditsBalanceDetails";
import groupedVirtualNotification from "common/notifications/models/groupedVirtualNotification";
interface detailsProvider {
supportsDetailsFor(notification: abstractNotification): boolean;
showDetailsFor(notification: abstractNotification, notificationCenter: notificationCenter): JQueryPromise<void> | void;
Expand Down Expand Up @@ -515,7 +516,22 @@ class notificationCenter {

private getOperationById(db: database, operationId: number) {
const notificationsArray = db ? this.databaseNotifications() : this.globalNotifications();
return notificationsArray.find(x => x instanceof operation && x.operationId() === operationId);
const topLevelNotification = notificationsArray.find(x => x instanceof operation && x.operationId() === operationId);
if (topLevelNotification) {
return topLevelNotification;
}

// merge operation was merged into other virtual operation?
for (const array of notificationsArray) {
if (array instanceof groupedVirtualNotification) {
const match = array.operations().find(x => x.id === operationId);
if (match) {
return match;
}
}
}

throw new Error("Unable to find operation with id = " + operationId);
}

openDetails(notification: abstractNotification) {
Expand Down

0 comments on commit f1e84e8

Please sign in to comment.