update,
This commit is contained in:
86
tsc1877/task1/project/admin/db_seed/order.js
Normal file
86
tsc1877/task1/project/admin/db_seed/order.js
Normal file
@@ -0,0 +1,86 @@
|
||||
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 = 'cust1@vtkhmall.com';
|
||||
|
||||
// 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);
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user