'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;