Tant que Sequelize ne prend pas en charge les champs readOnly et le type de données GENERATED, vous pouvez contourner Sequelize avec un type de données personnalisé :
const Item = sequelize.define('Item', {
someCol: { type: DataTypes.DOUBLE },
someOtherCol: { type: DataTypes.DOUBLE },
generatedValue: {
type: 'DOUBLE PRECISION GENERATED ALWAYS AS (LEAST("someCol", "someOtherCol")) STORED',
set() {
throw new Error('generatedValue is read-only')
},
},
})
Cela générera correctement la colonne dans postgres lors de l'utilisation de sync()
, et empêcher la définition de la generatedValue
en javascript en lançant une erreur.
En supposant que sequelize n'essaie jamais de mettre à jour le champ s'il n'a pas changé, comme spécifié dans https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , alors ça devrait marcher.