Я использую Sequelize ORM. У меня есть модель для таблицы, в которой у нас включено мягкое удаление через paranoid: true
.
Вопрос. Есть ли способ сделать upsert таким образом, чтобы, если объект уже существует в таблице, но был обратимо удален, он просто очистил столбец deleteAt?
Пример настройки: model.js
const Sequelize = require('sequelize')
const sequelize = new Sequelize(
dbName,
username,
password,
{
host,
dialect: 'mysql',
port
}
)
const model = sequelize.define(
'sample_table',
{
uid: {
type: Sequelize.STRING(60),
allowNull: false
primaryKey: true
},
deletedAt: {
type: Sequelize.Date,
allowNull: true,
default: null
}
},
{
tableName: 'sample_table'
deletedAt: true,
paranoid: true
}
)
Пример использования:
const model = require('./model.js')
(async () => {
const myModel = await model.create({
uid: 'sample-uid'
})
await myModel.destroy()
// error is encountered because uid already exists
await model.create({
uid: 'sample-uid'
})
})()