فهرست منبع

Merge pull request #10677 from overleaf/em-history-id-string

Represent history ids as strings instead of integers

GitOrigin-RevId: 18977195b65492836e570c571ec7e8c7e088612b
Eric Mc Sween 3 سال پیش
والد
کامیت
5083060fbb

+ 1 - 1
services/document-updater/app/js/PersistenceManager.js

@@ -99,7 +99,7 @@ function getDoc(projectId, docId, options = {}, _callback) {
         body.version,
         body.ranges,
         body.pathname,
-        body.projectHistoryId,
+        body.projectHistoryId?.toString(),
         body.projectHistoryType
       )
     } else if (res.statusCode === 404) {

+ 0 - 4
services/document-updater/app/js/RedisManager.js

@@ -244,10 +244,6 @@ module.exports = RedisManager = {
         return callback(new Errors.NotFoundError('document not found'))
       }
 
-      if (projectHistoryId != null) {
-        projectHistoryId = parseInt(projectHistoryId)
-      }
-
       if (docLines && version && !pathname) {
         metrics.inc('pathname', 1, {
           path: 'RedisManager.getDoc',

+ 1 - 1
services/document-updater/test/unit/js/RedisManager/RedisManagerTests.js

@@ -106,7 +106,7 @@ describe('RedisManager', function () {
 
     this.docId = 'doc-id-123'
     this.project_id = 'project-id-123'
-    this.projectHistoryId = 123
+    this.projectHistoryId = '123'
     this.callback = sinon.stub()
   })
 

+ 4 - 4
services/web/app/src/Features/History/HistoryManager.js

@@ -11,7 +11,7 @@ async function initializeProject() {
       settings.apis.project_history.initializeHistoryForNewProjects
     )
   ) {
-    return
+    return null
   }
   const response = await fetch(`${settings.apis.project_history.url}/project`, {
     method: 'POST',
@@ -25,11 +25,11 @@ async function initializeProject() {
     })
   }
   const body = await response.json()
-  const overleafId = body && body.project && body.project.id
-  if (!overleafId) {
+  const historyId = body && body.project && body.project.id
+  if (!historyId) {
     throw new OError('project-history did not provide an id', { body })
   }
-  return { overleaf_id: overleafId }
+  return historyId
 }
 
 async function flushProject(projectId) {

+ 5 - 3
services/web/app/src/Features/Project/ProjectCreationHandler.js

@@ -153,9 +153,11 @@ async function _createBlankProject(
   await ProjectDetailsHandler.promises.validateProjectName(projectName)
 
   if (!attributes.overleaf) {
-    const history = await HistoryManager.promises.initializeProject()
-    attributes.overleaf = {
-      history: { id: history ? history.overleaf_id : undefined },
+    const historyId = await HistoryManager.promises.initializeProject()
+    if (historyId != null) {
+      attributes.overleaf = {
+        history: { id: historyId },
+      }
     }
   }
 

+ 3 - 3
services/web/app/src/Features/Project/ProjectHistoryHandler.js

@@ -154,16 +154,16 @@ const ProjectHistoryHandler = {
         if (history_id != null) {
           return callback()
         } // history already exists, success
-        return HistoryManager.initializeProject(function (err, history) {
+        return HistoryManager.initializeProject(function (err, historyId) {
           if (err != null) {
             return callback(err)
           }
-          if (!(history != null ? history.overleaf_id : undefined)) {
+          if (historyId == null) {
             return callback(new Error('failed to initialize history id'))
           }
           return ProjectHistoryHandler.setHistoryId(
             project_id,
-            history.overleaf_id,
+            historyId,
             function (err) {
               if (err != null) {
                 return callback(err)

+ 5 - 10
services/web/scripts/history/HistoryUpgradeHelper.js

@@ -174,16 +174,11 @@ async function doUpgradeForNoneWithoutConversion(project) {
     // Logic originally from ProjectHistoryHandler.ensureHistoryExistsForProject
     // However sends a force resync project to project history instead
     // of a resync request to doc-updater
-    const historyId = await ProjectHistoryHandler.promises.getHistoryId(
-      projectId
-    )
-    if (!historyId) {
-      const history = await HistoryManager.promises.initializeProject()
-      if (history && history.overleaf_id) {
-        await ProjectHistoryHandler.promises.setHistoryId(
-          projectId,
-          history.overleaf_id
-        )
+    let historyId = await ProjectHistoryHandler.promises.getHistoryId(projectId)
+    if (historyId == null) {
+      historyId = await HistoryManager.promises.initializeProject()
+      if (historyId != null) {
+        await ProjectHistoryHandler.promises.setHistoryId(projectId, historyId)
       }
     }
     await HistoryManager.promises.resyncProject(projectId, {

+ 5 - 5
services/web/scripts/history/upgrade_none_without_conversion_if_no_sl_history.js

@@ -117,15 +117,15 @@ async function doUpgradeForNoneWithoutConversion(project) {
       // Logic originally from ProjectHistoryHandler.ensureHistoryExistsForProject
       // However sends a force resync project to project history instead
       // of a resync request to doc-updater
-      const historyId = await ProjectHistoryHandler.promises.getHistoryId(
+      let historyId = await ProjectHistoryHandler.promises.getHistoryId(
         projectId
       )
-      if (!historyId) {
-        const history = await HistoryManager.promises.initializeProject()
-        if (history && history.overleaf_id) {
+      if (historyId == null) {
+        historyId = await HistoryManager.promises.initializeProject()
+        if (historyId != null) {
           await ProjectHistoryHandler.promises.setHistoryId(
             projectId,
-            history.overleaf_id
+            historyId
           )
         }
       }

+ 1 - 1
services/web/test/unit/src/History/HistoryManagerTests.js

@@ -74,7 +74,7 @@ describe('HistoryManager', function () {
         })
 
         it('should return the overleaf id', function () {
-          expect(this.result).to.deep.equal({ overleaf_id: this.overleaf_id })
+          expect(this.result).to.deep.equal(this.overleaf_id)
         })
       })
 

+ 1 - 1
services/web/test/unit/src/Project/ProjectHistoryHandlerTests.js

@@ -60,7 +60,7 @@ describe('ProjectHistoryHandler', function () {
       this.newHistoryId = 123456789
       this.HistoryManager.initializeProject = sinon
         .stub()
-        .callsArgWith(0, null, { overleaf_id: this.newHistoryId })
+        .callsArgWith(0, null, this.newHistoryId)
       this.HistoryManager.flushProject = sinon.stub().callsArg(1)
       return (this.ProjectEntityUpdateHandler.resyncProjectHistory = sinon
         .stub()