@fabrix/spool-cart
Version:
Spool - eCommerce Spool for Fabrix
83 lines (82 loc) • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@fabrix/fabrix/dist/common");
const spool_sequelize_1 = require("@fabrix/spool-sequelize");
class GiftCard extends common_1.FabrixModel {
static get resolver() {
return spool_sequelize_1.SequelizeResolver;
}
static config(app, Sequelize) {
return {
options: {
underscored: true,
scopes: {
live: {
where: {
live_mode: true
}
}
}
}
};
}
static schema(app, Sequelize) {
return {
customer_id: {
type: Sequelize.INTEGER
},
recipient_id: {
type: Sequelize.INTEGER
},
order_id: {
type: Sequelize.INTEGER
},
balance: {
type: Sequelize.INTEGER,
defaultValue: 0
},
currency: {
type: Sequelize.STRING
},
code: {
type: Sequelize.STRING
},
code_masked: {
type: Sequelize.STRING
},
last_characters: {
type: Sequelize.STRING
},
note: {
type: Sequelize.STRING
},
disabled_at: {
type: Sequelize.DATE
},
expires_on: {
type: Sequelize.DATE
},
live_mode: {
type: Sequelize.BOOLEAN,
defaultValue: app.config.get('cart.live_mode')
}
};
}
static associate(models) {
models.GiftCard.belongsTo(models.Order, {
foreignKey: 'order_id'
});
models.GiftCard.belongsTo(models.Customer, {
as: 'customer',
foreignKey: 'customer_id'
});
models.GiftCard.belongsTo(models.Customer, {
as: 'recipient',
foreignKey: 'recipient_id'
});
models.GiftCard.hasOne(models.OrderItem, {
foreignKey: 'gift_card_id'
});
}
}
exports.GiftCard = GiftCard;