diff --git a/packages/local-sync/src/local-api/routes/categories.js b/packages/local-sync/src/local-api/routes/categories.js index 7b62141f8..c1e97de3a 100644 --- a/packages/local-sync/src/local-api/routes/categories.js +++ b/packages/local-sync/src/local-api/routes/categories.js @@ -72,7 +72,7 @@ module.exports = (server) => { tags: [term], validate: { params: { - id: Joi.number().integer(), + id: Joi.string(), }, }, response: { diff --git a/packages/local-sync/src/local-api/serialization.js b/packages/local-sync/src/local-api/serialization.js index 07527b1f6..4d585d0ae 100644 --- a/packages/local-sync/src/local-api/serialization.js +++ b/packages/local-sync/src/local-api/serialization.js @@ -35,7 +35,7 @@ function jsonSchema(modelName) { } if (modelName === 'Folder') { return Joi.object().keys({ - id: Joi.number(), + id: Joi.string(), object: Joi.string(), account_id: Joi.string(), name: Joi.string().allow(null), @@ -44,7 +44,7 @@ function jsonSchema(modelName) { } if (modelName === 'Label') { return Joi.object().keys({ - id: Joi.number(), + id: Joi.string(), object: Joi.string(), account_id: Joi.string(), name: Joi.string().allow(null), diff --git a/packages/local-sync/src/local-sync-worker/imap/fetch-folder-list.js b/packages/local-sync/src/local-sync-worker/imap/fetch-folder-list.js index 0b95dadf2..e3d848408 100644 --- a/packages/local-sync/src/local-sync-worker/imap/fetch-folder-list.js +++ b/packages/local-sync/src/local-sync-worker/imap/fetch-folder-list.js @@ -1,3 +1,4 @@ +const crypto = require('crypto') const {Provider, PromiseUtils} = require('isomorphic-core'); const {localizedCategoryNames} = require('../sync-utils') @@ -93,6 +94,7 @@ class FetchFolderList { const role = this._roleByAttr(box); const Klass = this._classForMailboxWithRole(role, this._db); category = Klass.build({ + id: crypto.createHash('sha256').update(boxName, 'utf8').digest('hex'), name: boxName, accountId: this._db.accountId, role: role, diff --git a/packages/local-sync/src/models/folder.js b/packages/local-sync/src/models/folder.js index 5d8d2fe12..769f513b9 100644 --- a/packages/local-sync/src/models/folder.js +++ b/packages/local-sync/src/models/folder.js @@ -2,6 +2,7 @@ const {DatabaseTypes: {JSONType}} = require('isomorphic-core'); module.exports = (sequelize, Sequelize) => { return sequelize.define('folder', { + id: { type: Sequelize.STRING(65), primaryKey: true }, accountId: { type: Sequelize.STRING, allowNull: false }, version: Sequelize.INTEGER, name: Sequelize.STRING, diff --git a/packages/local-sync/src/models/label.js b/packages/local-sync/src/models/label.js index e6e64b735..8c9a67ba1 100644 --- a/packages/local-sync/src/models/label.js +++ b/packages/local-sync/src/models/label.js @@ -1,5 +1,6 @@ module.exports = (sequelize, Sequelize) => { return sequelize.define('label', { + id: { type: Sequelize.STRING(65), primaryKey: true }, accountId: { type: Sequelize.STRING, allowNull: false }, version: Sequelize.INTEGER, name: Sequelize.STRING,