From 17df581105e60e1e3c92d73496f0dbf9780c54a1 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Fri, 8 Jul 2016 13:49:51 -0700 Subject: [PATCH] Use TEXT vs STRING, specify string column lengths --- packages/nylas-core/database-types.js | 4 +-- packages/nylas-core/models/account/file.js | 4 +-- packages/nylas-core/models/account/message.js | 10 +++--- .../models/account/syncback-request.js | 6 ++-- packages/nylas-core/models/account/thread.js | 4 +-- .../nylas-core/models/account/transaction.js | 12 ++----- packages/nylas-core/models/model-helpers.js | 31 ------------------- packages/nylas-core/models/shared/account.js | 2 +- 8 files changed, 18 insertions(+), 55 deletions(-) delete mode 100644 packages/nylas-core/models/model-helpers.js diff --git a/packages/nylas-core/database-types.js b/packages/nylas-core/database-types.js index 4bca93136..ea9235e04 100644 --- a/packages/nylas-core/database-types.js +++ b/packages/nylas-core/database-types.js @@ -2,7 +2,7 @@ const Sequelize = require('sequelize'); module.exports = { JSONType: (fieldName, {defaultValue = '{}'} = {}) => ({ - type: Sequelize.STRING, + type: Sequelize.TEXT, defaultValue, get: function get() { return JSON.parse(this.getDataValue(fieldName)) @@ -12,7 +12,7 @@ module.exports = { }, }), JSONARRAYType: (fieldName, {defaultValue = '[]'} = {}) => ({ - type: Sequelize.STRING, + type: Sequelize.TEXT, defaultValue, get: function get() { return JSON.parse(this.getDataValue(fieldName)) diff --git a/packages/nylas-core/models/account/file.js b/packages/nylas-core/models/account/file.js index 8e121ca7c..5043318e8 100644 --- a/packages/nylas-core/models/account/file.js +++ b/packages/nylas-core/models/account/file.js @@ -4,9 +4,9 @@ module.exports = (sequelize, Sequelize) => { const File = sequelize.define('file', { accountId: { type: Sequelize.STRING, allowNull: false }, version: Sequelize.INTEGER, - filename: Sequelize.STRING, + filename: Sequelize.STRING(500), partId: Sequelize.STRING, - contentType: Sequelize.STRING, + contentType: Sequelize.STRING(500), size: Sequelize.INTEGER, }, { classMethods: { diff --git a/packages/nylas-core/models/account/message.js b/packages/nylas-core/models/account/message.js index 0f39e7673..80bf1b5b5 100644 --- a/packages/nylas-core/models/account/message.js +++ b/packages/nylas-core/models/account/message.js @@ -8,11 +8,11 @@ module.exports = (sequelize, Sequelize) => { accountId: { type: Sequelize.STRING, allowNull: false }, version: Sequelize.INTEGER, headerMessageId: Sequelize.STRING, - body: Sequelize.STRING, + body: Sequelize.TEXT, headers: JSONType('headers'), - subject: Sequelize.STRING, - snippet: Sequelize.STRING, - hash: Sequelize.STRING, + subject: Sequelize.STRING(500), + snippet: Sequelize.STRING(255), + hash: Sequelize.STRING(65), date: Sequelize.DATE, unread: Sequelize.BOOLEAN, starred: Sequelize.BOOLEAN, @@ -23,7 +23,7 @@ module.exports = (sequelize, Sequelize) => { bcc: JSONARRAYType('bcc'), replyTo: JSONARRAYType('replyTo'), folderImapUID: { type: Sequelize.STRING, allowNull: true}, - folderImapXGMLabels: { type: Sequelize.STRING, allowNull: true}, + folderImapXGMLabels: { type: Sequelize.TEXT, allowNull: true}, }, { indexes: [ { diff --git a/packages/nylas-core/models/account/syncback-request.js b/packages/nylas-core/models/account/syncback-request.js index 5f1069344..a9c67afc2 100644 --- a/packages/nylas-core/models/account/syncback-request.js +++ b/packages/nylas-core/models/account/syncback-request.js @@ -1,4 +1,4 @@ -const {typeJSON} = require('../model-helpers') +const {JSONType} = require('../../database-types'); module.exports = (sequelize, Sequelize) => { const SyncbackRequest = sequelize.define('syncbackRequest', { @@ -8,8 +8,8 @@ module.exports = (sequelize, Sequelize) => { defaultValue: "NEW", allowNull: false, }, - error: typeJSON('error'), - props: typeJSON('props'), + error: JSONType('error'), + props: JSONType('props'), }); return SyncbackRequest; diff --git a/packages/nylas-core/models/account/thread.js b/packages/nylas-core/models/account/thread.js index 2181fae68..0b77cbd1f 100644 --- a/packages/nylas-core/models/account/thread.js +++ b/packages/nylas-core/models/account/thread.js @@ -5,8 +5,8 @@ module.exports = (sequelize, Sequelize) => { accountId: { type: Sequelize.STRING, allowNull: false }, version: Sequelize.INTEGER, threadId: Sequelize.STRING, - subject: Sequelize.STRING, - snippet: Sequelize.STRING, + subject: Sequelize.STRING(500), + snippet: Sequelize.STRING(255), unreadCount: Sequelize.INTEGER, starredCount: Sequelize.INTEGER, firstMessageDate: Sequelize.DATE, diff --git a/packages/nylas-core/models/account/transaction.js b/packages/nylas-core/models/account/transaction.js index 044659b6d..b089c7cdb 100644 --- a/packages/nylas-core/models/account/transaction.js +++ b/packages/nylas-core/models/account/transaction.js @@ -1,17 +1,11 @@ +const {JSONARRAYType} = require('../../database-types'); + module.exports = (sequelize, Sequelize) => { const Transaction = sequelize.define('transaction', { type: Sequelize.STRING, objectId: Sequelize.STRING, modelName: Sequelize.STRING, - changedFields: { - type: Sequelize.STRING, - get: function get() { - return JSON.parse(this.getDataValue('changedFields')) - }, - set: function set(val) { - this.setDataValue('changedFields', JSON.stringify(val)); - }, - }, + changedFields: JSONARRAYType('changedFields'), }); return Transaction; diff --git a/packages/nylas-core/models/model-helpers.js b/packages/nylas-core/models/model-helpers.js deleted file mode 100644 index 911e87023..000000000 --- a/packages/nylas-core/models/model-helpers.js +++ /dev/null @@ -1,31 +0,0 @@ -const Sequelize = require('sequelize'); - -module.exports = { - typeJSON: function typeJSON(key) { - return { - type: Sequelize.STRING, - get: function get() { - const val = this.getDataValue(key); - if (typeof val === 'string') { - try { - return JSON.parse(val) - } catch (e) { - return val - } - } - return val - }, - set: function set(val) { - let valToSet = val - if (typeof val !== 'string') { - try { - valToSet = JSON.stringify(val) - } catch (e) { - valToSet = val; - } - } - return this.setDataValue(key, valToSet) - }, - } - }, -} diff --git a/packages/nylas-core/models/shared/account.js b/packages/nylas-core/models/shared/account.js index 29a845ac9..e5b203666 100644 --- a/packages/nylas-core/models/shared/account.js +++ b/packages/nylas-core/models/shared/account.js @@ -9,7 +9,7 @@ module.exports = (sequelize, Sequelize) => { provider: Sequelize.STRING, emailAddress: Sequelize.STRING, connectionSettings: JSONType('connectionSettings'), - connectionCredentials: Sequelize.STRING, + connectionCredentials: Sequelize.TEXT, syncPolicy: JSONType('syncPolicy'), syncError: JSONType('syncError', {defaultValue: null}), firstSyncCompletedAt: Sequelize.INTEGER,