From de1dc72c99856e949293d44db2d7f502503e63ab Mon Sep 17 00:00:00 2001
From: Denis Bykhov <bykhov.denis@gmail.com>
Date: Wed, 7 Jun 2023 23:46:27 +0600
Subject: [PATCH] Fix model when clone ws (#3395)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
---
 packages/core/src/memdb.ts  | 8 +++++++-
 server/account/src/index.ts | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/packages/core/src/memdb.ts b/packages/core/src/memdb.ts
index 3e9e07c909..3aa3d0a473 100644
--- a/packages/core/src/memdb.ts
+++ b/packages/core/src/memdb.ts
@@ -172,7 +172,13 @@ export abstract class MemDb extends TxProcessor implements Storage {
 
   addDoc (doc: Doc): void {
     this.hierarchy.getAncestors(doc._class).forEach((_class) => {
-      this.getObjectsByClass(_class).push(doc)
+      const arr = this.getObjectsByClass(_class)
+      const index = arr.findIndex((p) => p._id === doc._id)
+      if (index === -1) {
+        arr.push(doc)
+      } else {
+        arr[index] = doc
+      }
     })
     this.objectById.set(doc._id, doc)
   }
diff --git a/server/account/src/index.ts b/server/account/src/index.ts
index 7d37854297..a45a8ca6d9 100644
--- a/server/account/src/index.ts
+++ b/server/account/src/index.ts
@@ -573,6 +573,7 @@ export async function createWorkspace (
   if (initWS !== undefined) {
     if ((await getWorkspace(db, productId, initWS)) !== null) {
       await cloneWorkspace(getTransactor(), getWorkspaceId(initWS, productId), getWorkspaceId(workspace, productId))
+      await upgradeModel(getTransactor(), getWorkspaceId(workspace, productId), txes, migrationOperation)
     }
   }
   return result