Files
starr-philproperties/apps/api/models/courses/course_purchases.mdl.js
T

27 lines
1.3 KiB
JavaScript

'use strict';
const { DataTypes } = require('sequelize');
const sequelize = require('../../config/db.config');
const mdl_Product = require('./products.mdl');
const mdl_CoursePurchase = sequelize.define('CoursePurchase', {
id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true },
user_id: { type: DataTypes.BIGINT, allowNull: false },
product_id: { type: DataTypes.BIGINT, allowNull: false },
amount: { type: DataTypes.DECIMAL(10, 2), allowNull: false },
currency: { type: DataTypes.STRING(10), allowNull: false, defaultValue: 'USD' },
status: { type: DataTypes.ENUM('pending', 'completed', 'failed', 'cancelled', 'refunded'), allowNull: false, defaultValue: 'pending' },
provider: { type: DataTypes.STRING(50), allowNull: false, defaultValue: 'paypal' },
provider_payload: { type: DataTypes.JSONB, allowNull: true, defaultValue: {} },
expires_at: { type: DataTypes.DATE, allowNull: true },
paid_at: { type: DataTypes.DATE, allowNull: true },
}, {
tableName: 'course_purchases',
timestamps: true,
paranoid: true,
});
mdl_CoursePurchase.belongsTo(mdl_Product, { foreignKey: 'product_id', as: 'product' });
mdl_Product.hasMany(mdl_CoursePurchase, { foreignKey: 'product_id', as: 'purchases' });
module.exports = mdl_CoursePurchase;