DiscordJS-Example/database.js

44 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2024-02-06 15:18:06 +00:00
import defineRoleEmojiPair from './models/roleEmojiPairs.js';
import defineVoiceChannel from './models/voiceChannels.js';
2024-04-03 17:30:31 +00:00
import defineResponse from './models/responses.js';
2024-02-06 15:18:06 +00:00
import defineMessage from './models/messages.js';
2024-04-03 17:29:32 +00:00
import defineKeyword from './models/keywords.js';
2024-03-02 22:51:18 +00:00
import defineGuild from './models/guilds.js';
import defineRole from './models/roles.js';
2024-02-06 15:18:06 +00:00
import { Sequelize } from 'sequelize';
import { config } from 'dotenv';
2024-02-11 01:40:10 +00:00
2024-02-06 15:18:06 +00:00
config();
const { DB_NAME } = process.env;
2024-02-11 01:04:12 +00:00
/** The database instance used as an ORM in this project. */
2024-02-06 15:18:06 +00:00
const sequelize = new Sequelize({
storage: `${DB_NAME}.sqlite`,
dialect: 'sqlite',
logging: false
});
2024-02-07 20:02:37 +00:00
const Responses = defineResponse(sequelize);
2024-04-03 17:30:31 +00:00
const Keywords = defineKeyword(sequelize);
Keywords.hasMany(Responses, { foreignKey: 'keyword', onDelete: 'CASCADE' });
2024-04-03 17:29:32 +00:00
const RoleEmojiPairs = defineRoleEmojiPair(sequelize);
2024-02-07 20:02:37 +00:00
const VoiceChannels = defineVoiceChannel(sequelize);
2024-02-07 20:02:37 +00:00
const Messages = defineMessage(sequelize);
Messages.hasMany(RoleEmojiPairs, { foreignKey: 'message', onDelete: 'CASCADE' });
2024-02-06 15:18:06 +00:00
const Roles = defineRole(sequelize);
Roles.hasMany(RoleEmojiPairs, { foreignKey: 'role', onDelete: 'CASCADE' });
2024-03-02 23:47:17 +00:00
const Guilds = defineGuild(sequelize);
Guilds.hasMany(Keywords, { foreignKey: 'guild', onDelete: 'CASCADE' });
Guilds.hasMany(VoiceChannels, { foreignKey: 'guild', onDelete: 'CASCADE' });
Guilds.hasMany(Messages, { foreignKey: 'guild', onDelete: 'CASCADE' });
Guilds.hasMany(Roles, { foreignKey: 'guild', onDelete: 'CASCADE' });
2024-03-02 23:47:17 +00:00
2024-02-06 15:18:06 +00:00
sequelize.sync();
export { sequelize, Guilds, Roles, Messages, VoiceChannels, RoleEmojiPairs, Keywords, Responses };