From c03a5d62ecb48af9f57d0a6912edec9536b2e355 Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Mon, 19 Jul 2021 22:02:04 +0200 Subject: [PATCH] Cleaned up old files and moved things around --- .../AuracleDatabaseDriver.ts} | 4 +- src/common/database/auracle_db_create.sql | 230 ------------------ src/main.ts | 2 +- .../data/ingredient.ods | Bin src/{migration => migrations}/data/school.ods | Bin src/{migration => migrations}/data/spell.ods | Bin .../data/variable.ods | Bin src/models/api-token-model.js | 13 - src/{common/database => }/models/index.ts | 0 src/models/ingredient-model.js | 12 - src/models/meta-school-model.js | 12 - src/models/permission-model.js | 13 - src/models/role-model.js | 12 - src/models/school-model.js | 16 -- src/models/spell-model.js | 24 -- .../database => }/models/spells/Ingredient.ts | 2 +- .../database => }/models/spells/MetaSchool.ts | 2 +- .../database => }/models/spells/School.ts | 2 +- .../database => }/models/spells/Spell.ts | 2 +- src/models/user-model.js | 17 -- .../database => }/models/users/Permission.ts | 2 +- .../database => }/models/users/Role.ts | 2 +- .../database => }/models/users/User.ts | 2 +- src/models/variable-model.js | 12 - 24 files changed, 10 insertions(+), 371 deletions(-) rename src/common/{database/index.ts => classes/AuracleDatabaseDriver.ts} (88%) delete mode 100644 src/common/database/auracle_db_create.sql rename src/{migration => migrations}/data/ingredient.ods (100%) rename src/{migration => migrations}/data/school.ods (100%) rename src/{migration => migrations}/data/spell.ods (100%) rename src/{migration => migrations}/data/variable.ods (100%) delete mode 100644 src/models/api-token-model.js rename src/{common/database => }/models/index.ts (100%) delete mode 100644 src/models/ingredient-model.js delete mode 100644 src/models/meta-school-model.js delete mode 100644 src/models/permission-model.js delete mode 100644 src/models/role-model.js delete mode 100644 src/models/school-model.js delete mode 100644 src/models/spell-model.js rename src/{common/database => }/models/spells/Ingredient.ts (93%) rename src/{common/database => }/models/spells/MetaSchool.ts (93%) rename src/{common/database => }/models/spells/School.ts (93%) rename src/{common/database => }/models/spells/Spell.ts (96%) delete mode 100644 src/models/user-model.js rename src/{common/database => }/models/users/Permission.ts (91%) rename src/{common/database => }/models/users/Role.ts (92%) rename src/{common/database => }/models/users/User.ts (94%) delete mode 100644 src/models/variable-model.js diff --git a/src/common/database/index.ts b/src/common/classes/AuracleDatabaseDriver.ts similarity index 88% rename from src/common/database/index.ts rename to src/common/classes/AuracleDatabaseDriver.ts index b310462..930ce61 100644 --- a/src/common/database/index.ts +++ b/src/common/classes/AuracleDatabaseDriver.ts @@ -1,5 +1,5 @@ import { Model, ModelOptions, Options, Sequelize } from 'sequelize' -import registerModels from './models' +import registerModels from '../../models' const tablePrefix = 'au_' @@ -22,7 +22,7 @@ const driverOptions: Options = { * Docs : https://sequelize.org/master/manual/hooks.html */ hooks: { - beforeDefine: (model: ModelOptions>) => { + beforeDefine: (columns: any, model: ModelOptions>) => { model.tableName = tablePrefix + model.name.plural } } diff --git a/src/common/database/auracle_db_create.sql b/src/common/database/auracle_db_create.sql deleted file mode 100644 index 61f5339..0000000 --- a/src/common/database/auracle_db_create.sql +++ /dev/null @@ -1,230 +0,0 @@ -DROP DATABASE IF EXISTS auracle; -CREATE DATABASE auracle CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -USE auracle; - -/* =========== PRIMARY TABLES =========== */ - --- ROLES -CREATE TABLE IF NOT EXISTS `role` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `name` VARCHAR(255) NOT NULL, - `description` VARCHAR(255) NOT NULL, - PRIMARY KEY(`id`) -); - --- PERMISSIONS -CREATE TABLE IF NOT EXISTS `permission` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `slug` VARCHAR(255) NOT NULL, - PRIMARY KEY(`id`) -); - --- USERS -CREATE TABLE IF NOT EXISTS `user` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `uuid` VARCHAR(36) NOT NULL UNIQUE, - `name` VARCHAR(255) NOT NULL DEFAULT "Disciple", - `mail` VARCHAR(255) NOT NULL, - `avatar` VARCHAR(255), - `gender` VARCHAR(255), - `register_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `password` VARCHAR(255) NOT NULL, - `role_id` INT UNSIGNED NOT NULL DEFAULT 1, - `verified` BOOLEAN DEFAULT false, - `verification_token` VARCHAR(255), - `banned` BOOLEAN DEFAULT false, - PRIMARY KEY(`id`), - FOREIGN KEY(`role_id`) REFERENCES role(`id`) -); - --- API_TOKENS -CREATE TABLE IF NOT EXISTS `api_token` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `value` VARCHAR(255) NOT NULL, - `user_uuid` VARCHAR(36) NOT NULL UNIQUE, - PRIMARY KEY(`id`), - FOREIGN KEY(`user_uuid`) REFERENCES user(`uuid`) -); - --- SPELLS -CREATE TABLE IF NOT EXISTS `spell` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `name` VARCHAR(255) NOT NULL DEFAULT "Nom du sort", - `description` VARCHAR(1000) NOT NULL DEFAULT "Description du sort", - `level` INT UNSIGNED DEFAULT 0, - `charge` INT UNSIGNED DEFAULT 0, - `cost` VARCHAR(255) DEFAULT 0, - `is_ritual` BOOLEAN DEFAULT false, - `published` BOOLEAN DEFAULT false, - `public` BOOLEAN DEFAULT true, - `author_id` INT UNSIGNED NOT NULL DEFAULT 1, - PRIMARY KEY (`id`), - FOREIGN KEY(`author_id`) REFERENCES user(`id`) -); - --- META SCHOOLS -CREATE TABLE IF NOT EXISTS `meta_school` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `name` VARCHAR(255) NOT NULL DEFAULT "Nom de l'école mère", - `description` VARCHAR(255) DEFAULT "Description de l'école mère", - PRIMARY KEY (`id`) -); - --- SCHOOLS -CREATE TABLE IF NOT EXISTS `school` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `name` VARCHAR(255) NOT NULL DEFAULT "Nom de l'école", - `description` VARCHAR(255) DEFAULT "Description de l'école", - `published` BOOLEAN DEFAULT false, - `meta_school_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`id`), - FOREIGN KEY(`meta_school_id`) REFERENCES meta_school(`id`) -); - --- COMMON INGREDIENTS -CREATE TABLE IF NOT EXISTS `ingredient` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `name` VARCHAR(255) NOT NULL DEFAULT "Langue de salamandre", - `description` VARCHAR(255) NOT NULL DEFAULT "Une langue de salamandre de feu encore chaude.", - `published` BOOLEAN DEFAULT false, - PRIMARY KEY (`id`) -); - --- COMMON VARIABLES -CREATE TABLE IF NOT EXISTS `variable` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, - `description` VARCHAR(255) NOT NULL DEFAULT "Nombre de créatures affectées", - `published` BOOLEAN DEFAULT false, - PRIMARY KEY (`id`) -); - -/* ==== ASSOCIATION TABLES ==== */ - --- SPELLS' SCHOOLS --- One spell can have multiple (up to 3) schools -CREATE TABLE IF NOT EXISTS `spell_school` ( - `spell_id` INT UNSIGNED NOT NULL, - `school_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`spell_id`, `school_id`), - FOREIGN KEY(`spell_id`) REFERENCES spell(`id`), - FOREIGN KEY(`school_id`) REFERENCES school(`id`) -); - --- SPELLS' VARIABLES --- One spell can have multiple (up to 2) variables of cost -CREATE TABLE IF NOT EXISTS `spell_variable` ( - `spell_id` INT UNSIGNED NOT NULL, - `variable_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`spell_id`, `variable_id`), - FOREIGN KEY(`spell_id`) REFERENCES spell(`id`), - FOREIGN KEY(`variable_id`) REFERENCES variable(`id`) -); - --- SPELLS' VARIABLES --- One spell can have multiple ingredients -CREATE TABLE IF NOT EXISTS `spell_ingredient` ( - `spell_id` INT UNSIGNED NOT NULL, - `ingredient_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`spell_id`, `ingredient_id`), - FOREIGN KEY(`spell_id`) REFERENCES spell(`id`), - FOREIGN KEY(`ingredient_id`) REFERENCES ingredient(`id`) -); - --- ROLES' PERMISSIONS --- One role can have any number of permissions, or none at all -CREATE TABLE IF NOT EXISTS `role_permission` ( - `role_id` INT UNSIGNED NOT NULL, - `permission_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`role_id`, `permission_id`), - FOREIGN KEY(`role_id`) REFERENCES role(`id`), - FOREIGN KEY(`permission_id`) REFERENCES permission(`id`) -); - --- Ajout d`une nouvelle ligne avant l`insert de description -DELIMITER $$ -CREATE TRIGGER `multiLine` BEFORE INSERT ON `spell` FOR EACH ROW -BEGIN - SET NEW.description = replace(NEW.description, "", "\n"); -END$$ -DELIMITER ; - -/* =========== PRIMARY INSERTS =========== */ -SET NAMES utf8; - --- CSV DATA -LOAD DATA INFILE 'C:/temp/auracle_data/permission.csv' - INTO TABLE `permission` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/role.csv' - INTO TABLE `role` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/role_permission.csv' - INTO TABLE `role_permission` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/user.csv' - INTO TABLE `user` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/api_token.csv' - INTO TABLE `api_token` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/spell.csv' - INTO TABLE `spell` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/meta_school.csv' - INTO TABLE `meta_school` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/school.csv' - INTO TABLE `school` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/ingredient.csv' - INTO TABLE `ingredient` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/variable.csv' - INTO TABLE `variable` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; - -LOAD DATA INFILE 'C:/temp/auracle_data/spell_school.csv' - INTO TABLE `spell_school` - FIELDS TERMINATED BY ',' - ENCLOSED BY '"' - LINES TERMINATED BY '\n' - IGNORE 1 ROWS; diff --git a/src/main.ts b/src/main.ts index de6582d..ea095bd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,7 +12,7 @@ import helmet from 'helmet'; import express from 'express' import { AuracleApi } from './common/classes/AuracleApi' -import { AuracleDatabaseDriver } from './common/database' +import { AuracleDatabaseDriver } from './common/classes/AuracleDatabaseDriver' const apiPort = process.env.API_PORT diff --git a/src/migration/data/ingredient.ods b/src/migrations/data/ingredient.ods similarity index 100% rename from src/migration/data/ingredient.ods rename to src/migrations/data/ingredient.ods diff --git a/src/migration/data/school.ods b/src/migrations/data/school.ods similarity index 100% rename from src/migration/data/school.ods rename to src/migrations/data/school.ods diff --git a/src/migration/data/spell.ods b/src/migrations/data/spell.ods similarity index 100% rename from src/migration/data/spell.ods rename to src/migrations/data/spell.ods diff --git a/src/migration/data/variable.ods b/src/migrations/data/variable.ods similarity index 100% rename from src/migration/data/variable.ods rename to src/migrations/data/variable.ods diff --git a/src/models/api-token-model.js b/src/models/api-token-model.js deleted file mode 100644 index 0c78809..0000000 --- a/src/models/api-token-model.js +++ /dev/null @@ -1,13 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./user-model'); - -let APIToken = bookshelf.Model.extend({ - tableName: 'api_token', - hidden: ['id'], - user() { - return this.belongsTo('User', 'user_uuid', 'uuid'); - } -}); - -module.exports = bookshelf.model('APIToken', APIToken); \ No newline at end of file diff --git a/src/common/database/models/index.ts b/src/models/index.ts similarity index 100% rename from src/common/database/models/index.ts rename to src/models/index.ts diff --git a/src/models/ingredient-model.js b/src/models/ingredient-model.js deleted file mode 100644 index 069a793..0000000 --- a/src/models/ingredient-model.js +++ /dev/null @@ -1,12 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./spell-model'); - -let Ingredient = bookshelf.Model.extend({ - tableName: 'ingredient', - spells() { - return this.belongsToMany('Spell', 'spell_ingredient'); - } -}); - -module.exports = bookshelf.model('Ingredient', Ingredient); \ No newline at end of file diff --git a/src/models/meta-school-model.js b/src/models/meta-school-model.js deleted file mode 100644 index 3be356a..0000000 --- a/src/models/meta-school-model.js +++ /dev/null @@ -1,12 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./school-model'); - -let MetaSchool = bookshelf.Model.extend({ - tableName: 'meta_school', - schools() { - return this.hasMany('School'); - } -}); - -module.exports = bookshelf.model('MetaSchool', MetaSchool); \ No newline at end of file diff --git a/src/models/permission-model.js b/src/models/permission-model.js deleted file mode 100644 index 857cf18..0000000 --- a/src/models/permission-model.js +++ /dev/null @@ -1,13 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./role-model'); - -let Permission = bookshelf.Model.extend({ - tableName: 'permission', - hidden: ['id'], - role() { - return this.belongsToMany('Role', 'role_permission'); - } -}); - -module.exports = bookshelf.model('Permission', Permission); \ No newline at end of file diff --git a/src/models/role-model.js b/src/models/role-model.js deleted file mode 100644 index 60d2e8a..0000000 --- a/src/models/role-model.js +++ /dev/null @@ -1,12 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./permission-model'); - -let Role = bookshelf.Model.extend({ - tableName: 'role', - permissions() { - return this.belongsToMany('Permission', 'role_permission'); - } -}); - -module.exports = bookshelf.model('Role', Role); \ No newline at end of file diff --git a/src/models/school-model.js b/src/models/school-model.js deleted file mode 100644 index 01e142f..0000000 --- a/src/models/school-model.js +++ /dev/null @@ -1,16 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./spell-model'); -require('./meta-school-model'); - -let School = bookshelf.Model.extend({ - tableName: 'school', - spells() { - return this.belongsToMany('Spell', 'spell_school'); - }, - meta_schools() { - return this.belongsTo('MetaSchool', 'meta_school_id'); - } -}); - -module.exports = bookshelf.model('School', School); \ No newline at end of file diff --git a/src/models/spell-model.js b/src/models/spell-model.js deleted file mode 100644 index effa75d..0000000 --- a/src/models/spell-model.js +++ /dev/null @@ -1,24 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./school-model'); -require('./variable-model'); -require('./ingredient-model'); - -let Spell = bookshelf.Model.extend({ - tableName: 'spell', - hidden: [ 'author_id' ], - author() { - return this.belongsTo( 'User', 'author_id' ); - }, - schools() { - return this.belongsToMany( 'School', 'spell_school' ); - }, - variables() { - return this.belongsToMany( 'Variable', 'spell_variable' ); - }, - ingredients() { - return this.belongsToMany( 'Ingredient', 'spell_ingredient' ); - } -}); - -module.exports = bookshelf.model('Spell', Spell); \ No newline at end of file diff --git a/src/common/database/models/spells/Ingredient.ts b/src/models/spells/Ingredient.ts similarity index 93% rename from src/common/database/models/spells/Ingredient.ts rename to src/models/spells/Ingredient.ts index d76e1f9..f932eab 100644 --- a/src/common/database/models/spells/Ingredient.ts +++ b/src/models/spells/Ingredient.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface IngredientAttributes { id: number diff --git a/src/common/database/models/spells/MetaSchool.ts b/src/models/spells/MetaSchool.ts similarity index 93% rename from src/common/database/models/spells/MetaSchool.ts rename to src/models/spells/MetaSchool.ts index 90052c7..37ce22b 100644 --- a/src/common/database/models/spells/MetaSchool.ts +++ b/src/models/spells/MetaSchool.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface MetaSchoolAttributes { id: number diff --git a/src/common/database/models/spells/School.ts b/src/models/spells/School.ts similarity index 93% rename from src/common/database/models/spells/School.ts rename to src/models/spells/School.ts index ef8d55a..2396f14 100644 --- a/src/common/database/models/spells/School.ts +++ b/src/models/spells/School.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface SchoolAttributes { id: number diff --git a/src/common/database/models/spells/Spell.ts b/src/models/spells/Spell.ts similarity index 96% rename from src/common/database/models/spells/Spell.ts rename to src/models/spells/Spell.ts index c861c38..463bfd2 100644 --- a/src/common/database/models/spells/Spell.ts +++ b/src/models/spells/Spell.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface SpellAttributes { id: number diff --git a/src/models/user-model.js b/src/models/user-model.js deleted file mode 100644 index e68e112..0000000 --- a/src/models/user-model.js +++ /dev/null @@ -1,17 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./role-model'); -require('./spell-model'); - -let User = bookshelf.Model.extend({ - tableName: 'user', - hidden: ['password', 'role_id'], - role() { - return this.belongsTo('Role'); - }, - spells() { - return this.hasMany('Spell', 'author_id'); - } -}); - -module.exports = bookshelf.model('User', User); \ No newline at end of file diff --git a/src/common/database/models/users/Permission.ts b/src/models/users/Permission.ts similarity index 91% rename from src/common/database/models/users/Permission.ts rename to src/models/users/Permission.ts index e141ec0..9c7178f 100644 --- a/src/common/database/models/users/Permission.ts +++ b/src/models/users/Permission.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface PermissionAttributes { id: number diff --git a/src/common/database/models/users/Role.ts b/src/models/users/Role.ts similarity index 92% rename from src/common/database/models/users/Role.ts rename to src/models/users/Role.ts index f80a4b2..a78135b 100644 --- a/src/common/database/models/users/Role.ts +++ b/src/models/users/Role.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface RoleAttributes { id: number diff --git a/src/common/database/models/users/User.ts b/src/models/users/User.ts similarity index 94% rename from src/common/database/models/users/User.ts rename to src/models/users/User.ts index ebb2732..a92921a 100644 --- a/src/common/database/models/users/User.ts +++ b/src/models/users/User.ts @@ -1,6 +1,6 @@ import { DataTypes, Model, Optional } from "sequelize"; -import { AuracleDatabaseDriver } from "../../"; +import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver"; interface UserAttributes { id: number diff --git a/src/models/variable-model.js b/src/models/variable-model.js deleted file mode 100644 index 61f5316..0000000 --- a/src/models/variable-model.js +++ /dev/null @@ -1,12 +0,0 @@ -const bookshelf = require('../database/bookshelf').bookshelf; - -require('./spell-model'); - -let Variable = bookshelf.Model.extend({ - tableName: 'variable', - spells() { - return this.belongsToMany('Spell', 'spell_variable'); - } -}); - -module.exports = bookshelf.model('Variable', Variable); \ No newline at end of file