It might have been the late hour but spent over 1.5h chasing this the other day... and getting tangled up in config and softdelete2 feathers-plus hooks.
Turns out to setup soft deletes in FeathersJS using feathers-sequelize you only need the Sequelize built in paranoid option.
Here's the example that makes it clear.
sequelizeClient.define('exampleTable', {
id: {
type: DataTypes.BIGINT(20).UNSIGNED,
primaryKey: true,
autoIncrement: true,
},
...
}, {
tableName: 'example_table',
paranoid: true,
deletedAt: 'deleted_at'
});
In essence:
- no need to define a field for deleted_at
- add the paranoid: true option to your sequelize model
- add the field name deletedAt: 'deleted_at' option to your sequelize model (if using alt name)
- sequelize model option timestamps: true should be set, though it is the default, so you likely won't need to declare it
If you need a query that includes the soft deleted items set paranoid: false in a hook.
context => {
context.params.sequelize = {paranoid: false};
}
Any includes will need their paranoid flag set:
context => {
context.params.sequelize = {
include: [{
model: SomeModel,
paranoid: false
}],
paranoid: false
};
}