Files
yourpart3/backend/utils/sequelize.js

74 lines
2.3 KiB
JavaScript

import { Sequelize } from 'sequelize';
import dotenv from 'dotenv';
dotenv.config();
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
host: process.env.DB_HOST,
dialect: 'postgres',
define: {
timestamps: false
},
});
const createSchemas = async () => {
await sequelize.query('CREATE SCHEMA IF NOT EXISTS community');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS logs');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS type');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS service');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS forum');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_data');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_type');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_predefine');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_log');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS chat');
await sequelize.query('CREATE SCHEMA IF NOT EXISTS match3');
};
const initializeDatabase = async () => {
await createSchemas();
const { default: models } = await import('../models/index.js');
await syncModels(models);
};
const syncModels = async (models) => {
for (const model of Object.values(models)) {
await model.sync({ alter: true, force: false });
}
};
async function updateFalukantUserMoney(falukantUserId, moneyChange, activity, changedBy = null) {
try {
const result = await sequelize.query(
`SELECT falukant_data.update_money(
:falukantUserId,
:moneyChange,
:activity,
:changedBy
)`,
{
replacements: {
falukantUserId,
moneyChange,
activity,
changedBy,
},
type: sequelize.QueryTypes.SELECT,
}
);
return {
success: true,
message: 'Money updated successfully',
result
};
} catch (error) {
console.error('Error updating money:', error);
return {
success: false,
message: error.message
};
}
}
export { sequelize, initializeDatabase, syncModels, updateFalukantUserMoney };