Add Message
schema version 3
This commit is contained in:
parent
e0428355be
commit
2cd3d5ac16
2 changed files with 21 additions and 8 deletions
|
@ -13,9 +13,11 @@ const PRIVATE = 'private';
|
||||||
// Version 0
|
// Version 0
|
||||||
// - Schema initialized
|
// - Schema initialized
|
||||||
// Version 1
|
// Version 1
|
||||||
// - Attachments: Auto-orient JPEG attachments using EXIF `Orientation` data
|
// - Attachments: Auto-orient JPEG attachments using EXIF `Orientation` data.
|
||||||
// Version 2
|
// Version 2
|
||||||
// - Attachments: Sanitize Unicode order override characters
|
// - Attachments: Sanitize Unicode order override characters.
|
||||||
|
// Version 3
|
||||||
|
// - Attachments: Write attachment data to disk and store relative path to it.
|
||||||
const INITIAL_SCHEMA_VERSION = 0;
|
const INITIAL_SCHEMA_VERSION = 0;
|
||||||
|
|
||||||
// Increment this version number every time we add a message schema upgrade
|
// Increment this version number every time we add a message schema upgrade
|
||||||
|
@ -23,7 +25,7 @@ const INITIAL_SCHEMA_VERSION = 0;
|
||||||
// add more upgrade steps, we could design a pipeline that does this
|
// add more upgrade steps, we could design a pipeline that does this
|
||||||
// incrementally, e.g. from version 0 / unknown -> 1, 1 --> 2, etc., similar to
|
// incrementally, e.g. from version 0 / unknown -> 1, 1 --> 2, etc., similar to
|
||||||
// how we do database migrations:
|
// how we do database migrations:
|
||||||
exports.CURRENT_SCHEMA_VERSION = 2;
|
exports.CURRENT_SCHEMA_VERSION = 3;
|
||||||
|
|
||||||
|
|
||||||
// Public API
|
// Public API
|
||||||
|
@ -163,5 +165,8 @@ const toVersion3 = exports._withSchemaVersion(
|
||||||
);
|
);
|
||||||
|
|
||||||
// UpgradeStep
|
// UpgradeStep
|
||||||
exports.upgradeSchema = async (message, context) =>
|
exports.upgradeSchema = async (message, { writeAttachmentData } = {}) =>
|
||||||
toVersion2(await toVersion1(await toVersion0(message)));
|
toVersion3(
|
||||||
|
await toVersion2(await toVersion1(await toVersion0(message))),
|
||||||
|
{ writeAttachmentData }
|
||||||
|
);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const stringToArrayBuffer = require('string-to-arraybuffer');
|
||||||
const { assert } = require('chai');
|
const { assert } = require('chai');
|
||||||
|
|
||||||
const Message = require('../../../js/modules/types/message');
|
const Message = require('../../../js/modules/types/message');
|
||||||
|
@ -66,7 +67,7 @@ describe('Message', () => {
|
||||||
const input = {
|
const input = {
|
||||||
attachments: [{
|
attachments: [{
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
data: null,
|
data: stringToArrayBuffer('It’s easy if you try'),
|
||||||
fileName: 'test\u202Dfig.exe',
|
fileName: 'test\u202Dfig.exe',
|
||||||
size: 1111,
|
size: 1111,
|
||||||
}],
|
}],
|
||||||
|
@ -75,14 +76,21 @@ describe('Message', () => {
|
||||||
const expected = {
|
const expected = {
|
||||||
attachments: [{
|
attachments: [{
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
data: null,
|
path: 'abc/abcdefg',
|
||||||
fileName: 'test\uFFFDfig.exe',
|
fileName: 'test\uFFFDfig.exe',
|
||||||
size: 1111,
|
size: 1111,
|
||||||
}],
|
}],
|
||||||
schemaVersion: Message.CURRENT_SCHEMA_VERSION,
|
schemaVersion: Message.CURRENT_SCHEMA_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
const actual = await Message.upgradeSchema(input);
|
const expectedAttachmentData = stringToArrayBuffer('It’s easy if you try');
|
||||||
|
const context = {
|
||||||
|
writeAttachmentData: async (attachmentData) => {
|
||||||
|
assert.deepEqual(attachmentData, expectedAttachmentData);
|
||||||
|
return 'abc/abcdefg';
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const actual = await Message.upgradeSchema(input, context);
|
||||||
assert.deepEqual(actual, expected);
|
assert.deepEqual(actual, expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue