fix eventdb/model, fix static-create command, many small fixes

This commit is contained in:
Rene Kievits
2024-09-17 06:08:23 +02:00
parent a065618cdb
commit 2732ce6c2b
11 changed files with 231 additions and 166 deletions

View File

@@ -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({

View File

@@ -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" },
]
},
],
})
}
]
});
};

View File

@@ -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" },
]
},
],
})
}
]
});
};

View File

@@ -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" },
]
},
],
})
}
]
});
};

View File

@@ -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;
};

View File

@@ -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
};

View File

@@ -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;
};

View File

@@ -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;

View File

@@ -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" },
]
},
],
})
}
]
});
};

View File

@@ -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" },
]
},
],
})
}
]
});
};

View File

@@ -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,
},
})