This commit is contained in:
Isaac
2021-05-22 00:04:18 +01:00
parent 777719d1b3
commit 32f43ac18f
58 changed files with 837 additions and 926 deletions

View File

@@ -1,42 +1,42 @@
module.exports = {
sqlite: {
name: 'SQLite',
dialect: 'sqlite',
packages: ['sqlite3'],
},
mysql: {
name: 'MySQL',
dialect: 'mysql',
packages: ['mysql2']
},
maria: {
name: 'MariaDB',
dialect: 'mariadb',
name: 'MariaDB',
package: ['mariadb']
},
mariadb: {
name: 'MariaDB',
dialect: 'mariadb',
name: 'MariaDB',
package: ['mariadb']
},
microsoft: {
dialect: 'mssql',
name: 'Microsoft SQL',
packages: ['tedious']
},
mysql: {
dialect: 'mysql',
name: 'MySQL',
packages: ['mysql2']
},
postgre: { // this is wrong
name: 'PostgreSQL',
dialect: 'postgres',
name: 'PostgreSQL',
packages: ['pg', 'pg-hstore']
},
postgres: {
name: 'PostgreSQL',
dialect: 'postgres',
name: 'PostgreSQL',
packages: ['pg', 'pg-hstore']
},
postgresql: {
name: 'PostgreSQL',
dialect: 'postgres',
name: 'PostgreSQL',
packages: ['pg', 'pg-hstore']
},
microsoft: {
name: 'Microsoft SQL',
dialect: 'mssql',
packages: ['tedious']
},
sqlite: {
dialect: 'sqlite',
name: 'SQLite',
packages: ['sqlite3']
}
};

View File

@@ -3,7 +3,7 @@ const fs = require('fs');
const { path } = require('../utils/fs');
const types = require('./dialects');
module.exports = async (client) => {
module.exports = async client => {
const {
DB_TYPE,
@@ -36,8 +36,8 @@ module.exports = async (client) => {
client.log.info('Using SQLite storage');
sequelize = new Sequelize({
dialect: types[type].dialect,
storage: path('./user/database.sqlite'),
logging: text => client.log.debug(text)
logging: text => client.log.debug(text),
storage: path('./user/database.sqlite')
});
client.log.warn('SQLite is not sufficient for a production environment if you want to use ticket archives. You should disable "log_messages" in your servers\' settings or use a different database.');
} else {
@@ -45,8 +45,8 @@ module.exports = async (client) => {
sequelize = new Sequelize(DB_NAME, DB_USER, DB_PASS, {
dialect: types[type].dialect,
host: DB_HOST,
port: DB_PORT,
logging: text => client.log.debug(text)
logging: text => client.log.debug(text),
port: DB_PORT
});
}
@@ -66,11 +66,7 @@ module.exports = async (client) => {
require(`./models/${model}`)(client, sequelize);
}
sequelize.sync({
alter: {
drop: false
}
});
sequelize.sync({ alter: { drop: false } });
return sequelize;
};

View File

@@ -2,67 +2,65 @@ const { DataTypes } = require('sequelize');
module.exports = ({ config }, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Category', {
id: {
type: DataTypes.CHAR(19),
primaryKey: true,
allowNull: false,
},
claiming: {
type: DataTypes.BOOLEAN,
defaultValue: false,
type: DataTypes.BOOLEAN
},
guild: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'guilds',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'guilds'
},
type: DataTypes.CHAR(19),
unique: 'name-guild'
},
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.CHAR(19)
},
image: {
type: DataTypes.STRING,
allowNull: true,
type: DataTypes.STRING
},
max_per_member: {
type: DataTypes.INTEGER,
defaultValue: 1
defaultValue: 1,
type: DataTypes.INTEGER
},
name: {
type: DataTypes.STRING,
allowNull: false,
type: DataTypes.STRING,
unique: 'name-guild'
},
name_format: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: config.defaults.name_format
defaultValue: config.defaults.name_format,
type: DataTypes.STRING
},
opening_message: {
type: DataTypes.STRING,
defaultValue: config.defaults.opening_message,
type: DataTypes.STRING
},
opening_questions: {
type: DataTypes.JSON,
allowNull: true,
type: DataTypes.JSON
},
ping: {
type: DataTypes.JSON,
defaultValue: [],
type: DataTypes.JSON
},
require_topic: {
type: DataTypes.BOOLEAN,
defaultValue: false,
type: DataTypes.BOOLEAN
},
roles: {
type: DataTypes.JSON,
allowNull: false,
type: DataTypes.JSON
},
survey: {
type: DataTypes.STRING,
allowNull: true,
type: DataTypes.STRING
}
}, {
tableName: DB_TABLE_PREFIX + 'categories'
});
}, { tableName: DB_TABLE_PREFIX + 'categories' });
};

View File

@@ -1,23 +1,21 @@
const { DataTypes } = require('sequelize');
module.exports = (client, sequelize) => {
module.exports = (_client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('ChannelEntity', {
channel: {
type: DataTypes.CHAR(19),
allowNull: false,
type: DataTypes.CHAR(19),
unique: 'channel-ticket'
},
name: DataTypes.TEXT,
ticket: {
type: DataTypes.CHAR(19),
allowNull: false,
unique: 'channel-ticket',
references: {
model: DB_TABLE_PREFIX + 'tickets',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'tickets'
},
},
}, {
tableName: DB_TABLE_PREFIX + 'channel_entities'
});
type: DataTypes.CHAR(19),
unique: 'channel-ticket'
}
}, { tableName: DB_TABLE_PREFIX + 'channel_entities' });
};

View File

@@ -2,48 +2,47 @@ const { DataTypes } = require('sequelize');
module.exports = ({ config }, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Guild', {
id: {
type: DataTypes.CHAR(19),
primaryKey: true,
allowNull: false,
},
blacklist: {
type: DataTypes.JSON,
defaultValue: [],
type: DataTypes.JSON
},
colour: {
type: DataTypes.STRING,
defaultValue: config.defaults.colour
defaultValue: config.defaults.colour,
type: DataTypes.STRING
},
command_prefix: {
type: DataTypes.STRING,
defaultValue: config.defaults.command_prefix
defaultValue: config.defaults.command_prefix,
type: DataTypes.STRING
},
error_colour: {
type: DataTypes.STRING,
defaultValue: 'RED'
defaultValue: 'RED',
type: DataTypes.STRING
},
footer: {
type: DataTypes.STRING,
defaultValue: 'Discord Tickets by eartharoid'
defaultValue: 'Discord Tickets by eartharoid',
type: DataTypes.STRING
},
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.CHAR(19)
},
locale: {
type: DataTypes.STRING,
defaultValue: config.locale
defaultValue: config.locale,
type: DataTypes.STRING
},
log_messages: {
type: DataTypes.BOOLEAN,
defaultValue: config.defaults.log_messages
defaultValue: config.defaults.log_messages,
type: DataTypes.BOOLEAN
},
success_colour: {
type: DataTypes.STRING,
defaultValue: 'GREEN'
defaultValue: 'GREEN',
type: DataTypes.STRING
},
tags: {
type: DataTypes.JSON,
defaultValue: {}
defaultValue: {},
type: DataTypes.JSON
}
}, {
tableName: DB_TABLE_PREFIX + 'guilds'
});
}, { tableName: DB_TABLE_PREFIX + 'guilds' });
};

View File

@@ -1,37 +1,36 @@
const { DataTypes } = require('sequelize');
module.exports = (client, sequelize) => {
module.exports = (_client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Message', {
id: {
type: DataTypes.CHAR(19),
primaryKey: true,
allowNull: false,
},
author: {
type: DataTypes.CHAR(19),
allowNull: false,
type: DataTypes.CHAR(19)
},
data: {
type: DataTypes.TEXT,
allowNull: false,
type: DataTypes.TEXT
},
deleted: {
type: DataTypes.BOOLEAN,
defaultValue: false,
type: DataTypes.BOOLEAN
},
edited: {
type: DataTypes.BOOLEAN,
defaultValue: false,
type: DataTypes.BOOLEAN
},
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.CHAR(19)
},
ticket: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'tickets',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'tickets'
},
},
}, {
tableName: DB_TABLE_PREFIX + 'messages'
});
type: DataTypes.CHAR(19)
}
}, { tableName: DB_TABLE_PREFIX + 'messages' });
};

View File

@@ -3,26 +3,24 @@ module.exports = (client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Panel', {
categories: {
type: DataTypes.JSON,
allowNull: false
allowNull: false,
type: DataTypes.JSON
},
channel: {
type: DataTypes.CHAR(19),
allowNull: false
allowNull: false,
type: DataTypes.CHAR(19)
},
guild: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'guilds',
key: 'id'
}
key: 'id',
model: DB_TABLE_PREFIX + 'guilds'
},
type: DataTypes.CHAR(19)
},
message: {
type: DataTypes.CHAR(19),
allowNull: false
allowNull: false,
type: DataTypes.CHAR(19)
}
}, {
tableName: DB_TABLE_PREFIX + 'panels'
});
}, { tableName: DB_TABLE_PREFIX + 'panels' });
};

View File

@@ -3,25 +3,23 @@ module.exports = (client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('RoleEntity', {
colour: {
type: DataTypes.CHAR(6),
defaultValue: '7289DA',
type: DataTypes.CHAR(6)
},
name: DataTypes.TEXT,
role: {
type: DataTypes.CHAR(19),
allowNull: false,
type: DataTypes.CHAR(19),
unique: 'role-ticket'
},
ticket: {
type: DataTypes.CHAR(19),
allowNull: false,
unique: 'role-ticket',
references: {
model: DB_TABLE_PREFIX + 'tickets',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'tickets'
},
},
}, {
tableName: DB_TABLE_PREFIX + 'role_entities'
});
type: DataTypes.CHAR(19),
unique: 'role-ticket'
}
}, { tableName: DB_TABLE_PREFIX + 'role_entities' });
};

View File

@@ -3,24 +3,22 @@ module.exports = (client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Survey', {
guild: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'guilds',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'guilds'
},
type: DataTypes.CHAR(19),
unique: 'name-guild'
},
name: {
type: DataTypes.STRING,
allowNull: false,
type: DataTypes.STRING,
unique: 'name-guild'
},
questions: {
type: DataTypes.JSON,
allowNull: true,
},
}, {
tableName: DB_TABLE_PREFIX + 'surveys'
});
type: DataTypes.JSON
}
}, { tableName: DB_TABLE_PREFIX + 'surveys' });
};

View File

@@ -3,28 +3,26 @@ module.exports = (client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('SurveyResponse', {
answers: {
type: DataTypes.JSON,
allowNull: true,
type: DataTypes.JSON
},
survey: {
type: DataTypes.INTEGER,
allowNull: false,
unique: 'survey-ticket',
references: {
model: DB_TABLE_PREFIX + 'surveys',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'surveys'
},
type: DataTypes.INTEGER,
unique: 'survey-ticket'
},
ticket: {
type: DataTypes.CHAR(19),
allowNull: false,
unique: 'survey-ticket',
references: {
model: DB_TABLE_PREFIX + 'tickets',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'tickets'
},
},
}, {
tableName: DB_TABLE_PREFIX + 'survey_responses'
});
type: DataTypes.CHAR(19),
unique: 'survey-ticket'
}
}, { tableName: DB_TABLE_PREFIX + 'survey_responses' });
};

View File

@@ -1,75 +1,73 @@
const { DataTypes } = require('sequelize');
module.exports = (client, sequelize) => {
module.exports = (_client, sequelize) => {
const { DB_TABLE_PREFIX } = process.env;
sequelize.define('Ticket', {
id: {
type: DataTypes.CHAR(19),
primaryKey: true,
allowNull: false,
},
category: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'categories',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'categories'
},
type: DataTypes.CHAR(19)
},
claimed_by: {
type: DataTypes.CHAR(19),
allowNull: true,
type: DataTypes.CHAR(19)
},
closed_by: {
type: DataTypes.CHAR(19),
allowNull: true,
type: DataTypes.CHAR(19)
},
closed_reason: {
type: DataTypes.STRING,
allowNull: true,
type: DataTypes.STRING
},
creator: {
type: DataTypes.CHAR(19),
allowNull: false,
type: DataTypes.CHAR(19)
},
first_response: {
type: DataTypes.DATE,
allowNull: true,
type: DataTypes.DATE
},
guild: {
type: DataTypes.CHAR(19),
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'guilds',
key: 'id'
key: 'id',
model: DB_TABLE_PREFIX + 'guilds'
},
type: DataTypes.CHAR(19),
unique: 'number-guild'
},
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.CHAR(19)
},
last_message: {
type: DataTypes.DATE,
allowNull: true,
type: DataTypes.DATE
},
number: {
type: DataTypes.INTEGER,
allowNull: false,
type: DataTypes.INTEGER,
unique: 'number-guild'
},
open: {
type: DataTypes.BOOLEAN,
defaultValue: true
defaultValue: true,
type: DataTypes.BOOLEAN
},
opening_message: {
type: DataTypes.CHAR(19),
allowNull: true,
type: DataTypes.CHAR(19)
},
pinned_messages: {
type: DataTypes.JSON,
defaultValue: []
defaultValue: [],
type: DataTypes.JSON
},
topic: {
type: DataTypes.TEXT,
allowNull: true,
},
}, {
tableName: DB_TABLE_PREFIX + 'tickets'
});
type: DataTypes.TEXT
}
}, { tableName: DB_TABLE_PREFIX + 'tickets' });
};

View File

@@ -6,30 +6,29 @@ module.exports = (client, sequelize) => {
bot: DataTypes.BOOLEAN,
discriminator: DataTypes.STRING,
display_name: DataTypes.TEXT,
ticket: {
type: DataTypes.CHAR(19),
role: {
allowNull: false,
unique: 'user-ticket',
references: {
model: DB_TABLE_PREFIX + 'tickets',
key: 'id'
key: 'role',
model: DB_TABLE_PREFIX + 'role_entities'
},
type: DataTypes.CHAR(19)
},
user: {
type: DataTypes.CHAR(19),
ticket: {
allowNull: false,
references: {
key: 'id',
model: DB_TABLE_PREFIX + 'tickets'
},
type: DataTypes.CHAR(19),
unique: 'user-ticket'
},
username: DataTypes.TEXT,
role: {
type: DataTypes.CHAR(19),
user: {
allowNull: false,
references: {
model: DB_TABLE_PREFIX + 'role_entities',
key: 'role'
},
type: DataTypes.CHAR(19),
unique: 'user-ticket'
},
}, {
tableName: DB_TABLE_PREFIX + 'user_entities'
});
username: DataTypes.TEXT
}, { tableName: DB_TABLE_PREFIX + 'user_entities' });
};