Use TEXT vs STRING, specify string column lengths

This commit is contained in:
Ben Gotow 2016-07-08 13:49:51 -07:00
parent fbfe693dbd
commit 17df581105
8 changed files with 18 additions and 55 deletions

View file

@ -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))

View file

@ -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: {

View file

@ -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: [
{

View file

@ -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;

View file

@ -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,

View file

@ -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;

View file

@ -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)
},
}
},
}

View file

@ -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,