diff --git a/src/database/eventdb.js b/src/database/eventdb.js index 06352df..ae4dc3f 100644 --- a/src/database/eventdb.js +++ b/src/database/eventdb.js @@ -1,25 +1,51 @@ -const { - event_schedule: EventTimes, - event_role_view: EventRoleView, - event_roles: EventRoles, +const { + event_schedule: EventSchedule, + event_roles: EventRoles, + event: Event, } = require('./models') const ReadEvents = async () => { try { - const events = await EventTimes.findAll() - return events + const events = await EventSchedule.findAll({ + include: [{ + model: Event, + as: 'event' + }] + }) + + const eventsMap = events.map(event => ({ + schedule_id: event.id, + event_name: event.event.name, + start_time: event.start_time, + end_time: event.end_time, + day_of_week: event.day_of_week + })) + + return eventsMap } catch (error) { console.error('Error reading event entries:', error) return false } } + const GetEventRole = async () => { try { - const eventRoles = await EventRoleView.findAll() + const eventRoles = await EventRoles.findAll({ + include: [{ + model: Event, + as: 'event' + }], + attributes: [ + 'role', 'event.name' + ] + }) const rolesEventMap = new Map() - eventRoles.forEach(row => rolesEventMap.set(row.event_name, row.role)) + eventRoles.forEach(row => { + if (!row.event) return + rolesEventMap.set(row.event.name, row.role) + }) return rolesEventMap } catch (error) { @@ -28,6 +54,7 @@ const GetEventRole = async () => { } } + const GetIconRole = async () => { try { const eventIcons = await EventRoles.findAll({ diff --git a/src/database/models/birthday.js b/src/database/models/birthday.js index 38192fb..ef76913 100644 --- a/src/database/models/birthday.js +++ b/src/database/models/birthday.js @@ -1,24 +1,24 @@ -const Sequelize = require('sequelize') +const Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { return sequelize.define('birthday', { id: { autoIncrement: true, type: DataTypes.INTEGER, allowNull: false, - primaryKey: true, + primaryKey: true }, date: { type: DataTypes.DATEONLY, - allowNull: false, + allowNull: false }, discorduser: { type: DataTypes.STRING(100), allowNull: false, references: { model: 'discorduser', - key: 'name', - }, - }, + key: 'name' + } + } }, { sequelize, tableName: 'birthday', @@ -26,12 +26,12 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'birthday_pkey', + name: "birthday_pkey", unique: true, fields: [ - { name: 'id' }, - ], + { name: "id" }, + ] }, - ], - }) -} + ] + }); +}; diff --git a/src/database/models/blacklist.js b/src/database/models/blacklist.js index 7473bc3..4cc796a 100644 --- a/src/database/models/blacklist.js +++ b/src/database/models/blacklist.js @@ -1,23 +1,23 @@ -const Sequelize = require('sequelize') +const Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { return sequelize.define('blacklist', { name: { type: DataTypes.STRING(100), allowNull: false, - primaryKey: true, + primaryKey: true }, reason: { type: DataTypes.TEXT, - allowNull: false, + allowNull: false }, reportedby: { type: DataTypes.STRING(100), allowNull: true, references: { model: 'discorduser', - key: 'name', - }, - }, + key: 'name' + } + } }, { sequelize, tableName: 'blacklist', @@ -25,12 +25,12 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'blacklist_pkey', + name: "blacklist_pkey", unique: true, fields: [ - { name: 'name' }, - ], + { name: "name" }, + ] }, - ], - }) -} + ] + }); +}; diff --git a/src/database/models/discorduser.js b/src/database/models/discorduser.js index e0901e9..0a5d189 100644 --- a/src/database/models/discorduser.js +++ b/src/database/models/discorduser.js @@ -1,11 +1,11 @@ -const Sequelize = require('sequelize') +const Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { return sequelize.define('discorduser', { name: { type: DataTypes.STRING(100), allowNull: false, - primaryKey: true, - }, + primaryKey: true + } }, { sequelize, tableName: 'discorduser', @@ -13,12 +13,12 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'discorduser_pkey', + name: "discorduser_pkey", unique: true, fields: [ - { name: 'name' }, - ], + { name: "name" }, + ] }, - ], - }) -} + ] + }); +}; diff --git a/src/database/models/event.js b/src/database/models/event.js index 44fe59e..c59f6e3 100644 --- a/src/database/models/event.js +++ b/src/database/models/event.js @@ -1,17 +1,18 @@ -const Sequelize = require('sequelize') -module.exports = function(sequelize, DataTypes) { - return sequelize.define('event', { +const Sequelize = require('sequelize'); + +module.exports = function (sequelize, DataTypes) { + const Event = sequelize.define('event', { id: { autoIncrement: true, type: DataTypes.INTEGER, allowNull: false, - primaryKey: true, + primaryKey: true }, name: { type: DataTypes.STRING(255), allowNull: false, - unique: 'event_name_key', - }, + unique: 'event_name_key' + } }, { sequelize, tableName: 'event', @@ -21,17 +22,23 @@ module.exports = function(sequelize, DataTypes) { { name: 'event_name_key', unique: true, - fields: [ - { name: 'name' }, - ], + fields: [{ name: 'name' }] }, { name: 'event_pkey', unique: true, - fields: [ - { name: 'id' }, - ], - }, - ], - }) -} + fields: [{ name: 'id' }] + } + ] + }); + + Event.associate = function (models) { + Event.hasMany(models.event_schedule, { as: 'event_schedules', foreignKey: 'event_id' }); + }; + + Event.associate = function (models) { + Event.hasMany(models.event_roles, { as: 'event_roles', foreignKey: 'event_id' }) + } + + return Event; +}; diff --git a/src/database/models/event_roles.js b/src/database/models/event_roles.js index 89654b7..1a4801c 100644 --- a/src/database/models/event_roles.js +++ b/src/database/models/event_roles.js @@ -1,28 +1,28 @@ -const Sequelize = require('sequelize') -module.exports = function(sequelize, DataTypes) { - return sequelize.define('event_roles', { +const Sequelize = require('sequelize'); +module.exports = function (sequelize, DataTypes) { + const EventRole = sequelize.define('event_roles', { event_id: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'event', - key: 'id', - }, + key: 'id' + } }, role: { type: DataTypes.STRING(50), - allowNull: false, + allowNull: false }, icon_name: { type: DataTypes.STRING(50), - allowNull: true, + allowNull: true }, role_id: { autoIncrement: true, type: DataTypes.INTEGER, allowNull: false, - primaryKey: true, - }, + primaryKey: true + } }, { sequelize, tableName: 'event_roles', @@ -30,12 +30,18 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'event_roles_pkey', + name: "event_roles_pkey", unique: true, fields: [ - { name: 'role_id' }, - ], + { name: "role_id" }, + ] }, - ], - }) -} + ] + }); + + EventRole.associate = function (models) { + EventRole.belongsTo(models.event, { as: 'event', foreignKey: 'event_id' }) + } + + return EventRole +}; diff --git a/src/database/models/event_schedule.js b/src/database/models/event_schedule.js index b394238..259c9d4 100644 --- a/src/database/models/event_schedule.js +++ b/src/database/models/event_schedule.js @@ -1,32 +1,33 @@ -const Sequelize = require('sequelize') -module.exports = function(sequelize, DataTypes) { - return sequelize.define('event_schedule', { +const Sequelize = require('sequelize'); + +module.exports = function (sequelize, DataTypes) { + const EventSchedule = sequelize.define('event_schedule', { id: { autoIncrement: true, type: DataTypes.INTEGER, allowNull: false, - primaryKey: true, + primaryKey: true }, event_id: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'event', - key: 'id', - }, + key: 'id' + } }, day_of_week: { type: DataTypes.STRING(9), - allowNull: true, + allowNull: true }, start_time: { type: DataTypes.TIME, - allowNull: true, + allowNull: true }, end_time: { type: DataTypes.TIME, - allowNull: true, - }, + allowNull: true + } }, { sequelize, tableName: 'event_schedule', @@ -36,10 +37,14 @@ module.exports = function(sequelize, DataTypes) { { name: 'event_schedule_pkey', unique: true, - fields: [ - { name: 'id' }, - ], - }, - ], - }) -} + fields: [{ name: 'id' }] + } + ] + }); + + EventSchedule.associate = function (models) { + EventSchedule.belongsTo(models.event, { as: 'event', foreignKey: 'event_id' }); + }; + + return EventSchedule; +}; diff --git a/src/database/models/init-models.js b/src/database/models/init-models.js index 144d7fe..c51dc65 100644 --- a/src/database/models/init-models.js +++ b/src/database/models/init-models.js @@ -1,37 +1,38 @@ -var DataTypes = require('sequelize').DataTypes -var _birthday = require('./birthday') -var _blacklist = require('./blacklist') -var _discorduser = require('./discorduser') -var _event = require('./event') -var _event_roles = require('./event_roles') -var _event_schedule = require('./event_schedule') -var _static = require('./static') -var _static_members = require('./static_members') +var DataTypes = require("sequelize").DataTypes; +var _birthday = require("./birthday"); +var _blacklist = require("./blacklist"); +var _discorduser = require("./discorduser"); +var _event = require("./event"); +var _event_roles = require("./event_roles"); +var _event_schedule = require("./event_schedule"); +var _static = require("./static"); +var _static_members = require("./static_members"); + function initModels(sequelize) { - var birthday = _birthday(sequelize, DataTypes) - var blacklist = _blacklist(sequelize, DataTypes) - var discorduser = _discorduser(sequelize, DataTypes) - var event = _event(sequelize, DataTypes) - var event_roles = _event_roles(sequelize, DataTypes) - var event_schedule = _event_schedule(sequelize, DataTypes) - var static = _static(sequelize, DataTypes) - var static_members = _static_members(sequelize, DataTypes) + var birthday = _birthday(sequelize, DataTypes); + var blacklist = _blacklist(sequelize, DataTypes); + var discorduser = _discorduser(sequelize, DataTypes); + var event = _event(sequelize, DataTypes); + var event_roles = _event_roles(sequelize, DataTypes); + var event_schedule = _event_schedule(sequelize, DataTypes); + var static = _static(sequelize, DataTypes); + var static_members = _static_members(sequelize, DataTypes); - discorduser.belongsToMany(static, { as: 'static_id_statics', through: static_members, foreignKey: 'username', otherKey: 'static_id' }) - static.belongsToMany(discorduser, { as: 'username_discordusers', through: static_members, foreignKey: 'static_id', otherKey: 'username' }) - birthday.belongsTo(discorduser, { as: 'discorduser_discorduser', foreignKey: 'discorduser'}) - discorduser.hasMany(birthday, { as: 'birthdays', foreignKey: 'discorduser'}) - blacklist.belongsTo(discorduser, { as: 'reportedby_discorduser', foreignKey: 'reportedby'}) - discorduser.hasMany(blacklist, { as: 'blacklists', foreignKey: 'reportedby'}) - static_members.belongsTo(discorduser, { as: 'username_discorduser', foreignKey: 'username'}) - discorduser.hasMany(static_members, { as: 'static_members', foreignKey: 'username'}) - event_roles.belongsTo(event, { as: 'event', foreignKey: 'event_id'}) - event.hasMany(event_roles, { as: 'event_roles', foreignKey: 'event_id'}) - event_schedule.belongsTo(event, { as: 'event', foreignKey: 'event_id'}) - event.hasMany(event_schedule, { as: 'event_schedules', foreignKey: 'event_id'}) - static_members.belongsTo(static, { as: 'static', foreignKey: 'static_id'}) - static.hasMany(static_members, { as: 'static_members', foreignKey: 'static_id'}) + discorduser.belongsToMany(static, { as: 'static_id_statics', through: static_members, foreignKey: "username", otherKey: "static_id" }); + static.belongsToMany(discorduser, { as: 'username_discordusers', through: static_members, foreignKey: "static_id", otherKey: "username" }); + birthday.belongsTo(discorduser, { as: "discorduser_discorduser", foreignKey: "discorduser" }); + discorduser.hasMany(birthday, { as: "birthdays", foreignKey: "discorduser" }); + blacklist.belongsTo(discorduser, { as: "reportedby_discorduser", foreignKey: "reportedby" }); + discorduser.hasMany(blacklist, { as: "blacklists", foreignKey: "reportedby" }); + static_members.belongsTo(discorduser, { as: "username_discorduser", foreignKey: "username" }); + discorduser.hasMany(static_members, { as: "static_members", foreignKey: "username" }); + event_roles.belongsTo(event, { as: "event", foreignKey: "event_id" }); + event.hasMany(event_roles, { as: "event_roles", foreignKey: "event_id" }); + event_schedule.belongsTo(event, { as: 'event', foreignKey: 'event_id' }) + event.hasMany(event_schedule, { as: 'event_schedules', foreignKey: 'event_id' }) + static_members.belongsTo(static, { as: "static", foreignKey: "static_id" }); + static.hasMany(static_members, { as: "static_members", foreignKey: "static_id" }); return { birthday, @@ -42,8 +43,9 @@ function initModels(sequelize) { event_schedule, static, static_members, - } + }; } -module.exports = initModels -module.exports.initModels = initModels -module.exports.default = initModels + +module.exports = initModels; +module.exports.initModels = initModels; +module.exports.default = initModels; diff --git a/src/database/models/static.js b/src/database/models/static.js index 4377d62..fc8b5e6 100644 --- a/src/database/models/static.js +++ b/src/database/models/static.js @@ -1,29 +1,41 @@ -const Sequelize = require('sequelize') -module.exports = function(sequelize, DataTypes) { +const Sequelize = require('sequelize'); +module.exports = function (sequelize, DataTypes) { return sequelize.define('static', { id: { autoIncrement: true, type: DataTypes.INTEGER, allowNull: false, - primaryKey: true, + primaryKey: true }, name: { type: DataTypes.STRING(12), allowNull: false, - unique: 'unique_name', + unique: "unique_name" }, creator: { type: DataTypes.STRING(255), - allowNull: false, + allowNull: false }, size: { type: DataTypes.INTEGER, - allowNull: true, + allowNull: true }, time: { type: DataTypes.DATE, - allowNull: true, + allowNull: true }, + role_id: { + type: DataTypes.INTEGER, + allowNull: true // or false depending on your requirements + }, + text_channel_id: { + type: DataTypes.STRING, // or INTEGER if IDs are numeric + allowNull: true // or false depending on your requirements + }, + voice_channel_id: { + type: DataTypes.STRING, // or INTEGER if IDs are numeric + allowNull: true // or false depending on your requirements + } }, { sequelize, tableName: 'static', @@ -31,19 +43,19 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'static_pkey', + name: "static_pkey", unique: true, fields: [ - { name: 'id' }, - ], + { name: "id" }, + ] }, { - name: 'unique_name', + name: "unique_name", unique: true, fields: [ - { name: 'name' }, - ], + { name: "name" }, + ] }, - ], - }) -} + ] + }); +}; diff --git a/src/database/models/static_members.js b/src/database/models/static_members.js index f15d624..605a281 100644 --- a/src/database/models/static_members.js +++ b/src/database/models/static_members.js @@ -1,5 +1,5 @@ -const Sequelize = require('sequelize') -module.exports = function(sequelize, DataTypes) { +const Sequelize = require('sequelize'); +module.exports = function (sequelize, DataTypes) { return sequelize.define('static_members', { static_id: { type: DataTypes.INTEGER, @@ -7,8 +7,8 @@ module.exports = function(sequelize, DataTypes) { primaryKey: true, references: { model: 'static', - key: 'id', - }, + key: 'id' + } }, username: { type: DataTypes.STRING(100), @@ -16,9 +16,9 @@ module.exports = function(sequelize, DataTypes) { primaryKey: true, references: { model: 'discorduser', - key: 'name', - }, - }, + key: 'name' + } + } }, { sequelize, tableName: 'static_members', @@ -26,13 +26,13 @@ module.exports = function(sequelize, DataTypes) { timestamps: false, indexes: [ { - name: 'static_members_pkey', + name: "static_members_pkey", unique: true, fields: [ - { name: 'static_id' }, - { name: 'username' }, - ], + { name: "static_id" }, + { name: "username" }, + ] }, - ], - }) -} + ] + }); +}; diff --git a/src/database/staticdb.js b/src/database/staticdb.js index 5602f61..7310d5f 100644 --- a/src/database/staticdb.js +++ b/src/database/staticdb.js @@ -1,33 +1,39 @@ -const { - static: Static, - static_members: StaticMembers, - discorduser: DiscordUser, +const { + static: Static, + static_members: StaticMembers, + discorduser: DiscordUser, } = require('./models') -const CreateStatic = async (name, creator, members, size) => { +const CreateStatic = async (name, creator, members, size, role_id, text_channel_id, voice_channel_id) => { try { + console.log(role_id, text_channel_id, voice_channel_id) + const staticEntry = await Static.create({ name, creator, size, + role_id, + text_channel_id, + voice_channel_id, }) const staticId = staticEntry.id await Promise.all( members.map(async member => { + if (!member.username) return; const [user] = await DiscordUser.findOrCreate({ - where: { - name: member, + where: { + name: member.username, }, - defaults: { - name: member, + defaults: { + name: member.username, }, }) await StaticMembers.create({ static_id: staticId, - member: user.name, + username: user.name, }) }) ) @@ -60,8 +66,8 @@ const DeleteStatic = async (name) => { if (!staticEntry) return false await StaticMembers.destroy({ - where: { - static_id: staticEntry.id, + where: { + static_id: staticEntry.id, }, })