41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
|
const Sequelize = require('sequelize');
|
||
|
|
||
|
const sequelize = new Sequelize('database', 'username', 'password', {
|
||
|
host: 'localhost',
|
||
|
dialect: 'sqlite',
|
||
|
logging: false,
|
||
|
storage: 'database.sqlite',
|
||
|
});
|
||
|
|
||
|
const Users = require('./models/Users.js')(sequelize, Sequelize.DataTypes);
|
||
|
const ItemShop = require('./models/ItemShop.js')(sequelize, Sequelize.DataTypes);
|
||
|
const UserItems = require('./models/UserItems.js')(sequelize, Sequelize.DataTypes);
|
||
|
|
||
|
UserItems.belongsTo(ItemShop, { foreignKey: 'item_id', as: 'item' });
|
||
|
|
||
|
Reflect.defineProperty(Users.prototype, 'addItem', {
|
||
|
value: async item => {
|
||
|
const userItem = await UserItems.findOne({
|
||
|
where: { user_id: this.user_id, item_id: item.id },
|
||
|
});
|
||
|
|
||
|
if (userItem) {
|
||
|
userItem.amount += 1;
|
||
|
return userItem.save();
|
||
|
}
|
||
|
|
||
|
return UserItems.create({ user_id: this.user_id, item_id: item.id, amount: 1 });
|
||
|
},
|
||
|
});
|
||
|
|
||
|
Reflect.defineProperty(Users.prototype, 'getItems', {
|
||
|
value: () => {
|
||
|
return UserItems.findAll({
|
||
|
where: { user_id: this.user_id },
|
||
|
include: ['item'],
|
||
|
});
|
||
|
},
|
||
|
});
|
||
|
|
||
|
module.exports = { Users, ItemShop, UserItems };
|