87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
const { Sequelize, DataTypes } = require('sequelize');
|
|
const { sequelize } = require('./model');
|
|
const crypto = require('crypto');
|
|
|
|
const Order = sequelize.define(
|
|
'Orders',
|
|
{
|
|
order_id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true },
|
|
invoice_id: { type: DataTypes.STRING, allowNull: false },
|
|
username: { type: DataTypes.STRING, allowNull: false },
|
|
custom_id: { type: DataTypes.STRING, allowNull: false },
|
|
amount: { type: DataTypes.STRING, allowNull: false },
|
|
total_price: { type: DataTypes.DECIMAL, allowNull: false },
|
|
currency_code: { type: DataTypes.STRING, allowNull: false },
|
|
items: { type: DataTypes.STRING, allowNull: false },
|
|
order_status: { type: DataTypes.STRING, allowNull: false, defaultValue: 'NOT_PAID' },
|
|
salt: { type: DataTypes.STRING, allowNull: false },
|
|
},
|
|
{ timestamps: true },
|
|
);
|
|
|
|
function genSalt() {
|
|
return crypto.randomBytes(16).toString('hex');
|
|
}
|
|
|
|
function createMD5HashWithSalt(inputString, salt) {
|
|
// Prepend the salt to the inputString
|
|
const saltedInput = salt + inputString;
|
|
|
|
// Proceed with the MD5 hash
|
|
const hash = crypto.createHash('md5').update(saltedInput).digest('hex');
|
|
|
|
// Optionally, you might want to return both the hash and the salt
|
|
// for storage, so you can verify the input against the hash later.
|
|
return { salt, hash };
|
|
}
|
|
|
|
(async () => {
|
|
try {
|
|
await sequelize.authenticate();
|
|
console.log('Connection has been established successfully.');
|
|
const item_name = 'item_name';
|
|
const quantity = parseInt('10');
|
|
const unit_price = parseInt('1');
|
|
const currency_code = 'HKD';
|
|
const amount = parseInt(20);
|
|
const total_price = parseInt(20);
|
|
const email_name = '[email protected]';
|
|
|
|
// create table
|
|
await Order.drop();
|
|
|
|
await sequelize.sync();
|
|
|
|
const order = await Order.create({
|
|
invoice_id: crypto.randomUUID(),
|
|
username: email_name,
|
|
custom_id: createMD5HashWithSalt(
|
|
JSON.stringify(
|
|
[
|
|
{ item_name, quantity, unit_price },
|
|
{ item_name, quantity, unit_price },
|
|
],
|
|
total_price,
|
|
currency_code,
|
|
email_name,
|
|
),
|
|
genSalt(),
|
|
)['hash'],
|
|
amount,
|
|
total_price,
|
|
currency_code,
|
|
items: JSON.stringify([
|
|
{ item_name, quantity, unit_price },
|
|
{ item_name, quantity, unit_price },
|
|
]),
|
|
order_status: 'NOT_PAID',
|
|
salt: '12321',
|
|
});
|
|
orders = await Order.findAll();
|
|
|
|
// await sequelize.close();
|
|
} catch (error) {
|
|
console.error('Unable to connect to the database:', error);
|
|
}
|
|
})();
|