Change user level only updating when points change

pull/4/head
trivernis 5 years ago
parent c01d37e355
commit 6fda95f735

@ -1,5 +1,6 @@
import * as sqz from "sequelize"; import * as sqz from "sequelize";
import { import {
BeforeCreate,
BeforeUpdate, BeforeUpdate,
BelongsTo, BelongsTo,
BelongsToMany, BelongsToMany,
@ -42,11 +43,14 @@ export class User extends Model<User> {
* It assigns the corresponding level to the user * It assigns the corresponding level to the user
* @param instance * @param instance
*/ */
@BeforeCreate
@BeforeUpdate @BeforeUpdate
public static async assignLevel(instance: User) { public static async assignLevel(instance: User) {
const level = await Level.findOne({where: {points: {[sqz.Op.lte]: instance.rankpoints}}, order: [["points", "desc"]]}) as Level; if (instance.changed("rankpoints") || instance.isNewRecord) {
if (level) { const level = await Level.findOne({where: {points: {[sqz.Op.lte]: instance.rankpoints}}, order: [["points", "desc"]]}) as Level;
instance.$set("rLevel", level); if (level) {
instance.$set("rLevel", level);
}
} }
} }

Loading…
Cancel
Save