diff --git a/lib/models/note.js b/lib/models/note.js index 4e9a453e2..628eb2547 100644 --- a/lib/models/note.js +++ b/lib/models/note.js @@ -18,6 +18,7 @@ const S = require('string') // core const config = require('../config') const logger = require('../logger') +const utils = require('../utils') // ot const ot = require('../ot') @@ -191,9 +192,11 @@ module.exports = function (sequelize, DataTypes) { parseNoteIdByAlias: function (_callback) { // try to parse note id by alias (e.g. doc) Note.findOne({ - where: { - alias: noteId - } + where: utils.isMySQL(sequelize) + ? sequelize.where(sequelize.fn('BINARY', sequelize.col('alias')), noteId) + : { + alias: noteId + } }).then(function (note) { if (note) { const filePath = path.join(config.docsPath, path.basename(noteId) + '.md') @@ -296,9 +299,11 @@ module.exports = function (sequelize, DataTypes) { try { if (shortId.isValid(noteId)) { Note.findOne({ - where: { - shortid: noteId - } + where: utils.isMySQL(sequelize) + ? sequelize.where(sequelize.fn('BINARY', sequelize.col('shortid')), noteId) + : { + shortid: noteId + } }).then(function (note) { if (!note) return _callback(null, null) return callback(null, note.id) diff --git a/lib/utils.js b/lib/utils.js index 1e6e76543..01b5eb172 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -4,6 +4,10 @@ exports.isSQLite = function isSQLite (sequelize) { return sequelize.options.dialect === 'sqlite' } +exports.isMySQL = function isMySQL (sequelize) { + return ['mysql', 'mariadb'].includes(sequelize.options.dialect) +} + exports.getImageMimeType = function getImageMimeType (imagePath) { const fileExtension = /[^.]+$/.exec(imagePath)