Cleaned up old files and moved things around
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { Model, ModelOptions, Options, Sequelize } from 'sequelize'
|
import { Model, ModelOptions, Options, Sequelize } from 'sequelize'
|
||||||
import registerModels from './models'
|
import registerModels from '../../models'
|
||||||
|
|
||||||
const tablePrefix = 'au_'
|
const tablePrefix = 'au_'
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ const driverOptions: Options = {
|
|||||||
* Docs : https://sequelize.org/master/manual/hooks.html
|
* Docs : https://sequelize.org/master/manual/hooks.html
|
||||||
*/
|
*/
|
||||||
hooks: {
|
hooks: {
|
||||||
beforeDefine: (model: ModelOptions<Model<any, any>>) => {
|
beforeDefine: (columns: any, model: ModelOptions<Model<any, any>>) => {
|
||||||
model.tableName = tablePrefix + model.name.plural
|
model.tableName = tablePrefix + model.name.plural
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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, "<l>", "\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;
|
|
||||||
@@ -12,7 +12,7 @@ import helmet from 'helmet';
|
|||||||
import express from 'express'
|
import express from 'express'
|
||||||
|
|
||||||
import { AuracleApi } from './common/classes/AuracleApi'
|
import { AuracleApi } from './common/classes/AuracleApi'
|
||||||
import { AuracleDatabaseDriver } from './common/database'
|
import { AuracleDatabaseDriver } from './common/classes/AuracleDatabaseDriver'
|
||||||
|
|
||||||
const apiPort = process.env.API_PORT
|
const apiPort = process.env.API_PORT
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -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);
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface IngredientAttributes {
|
interface IngredientAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface MetaSchoolAttributes {
|
interface MetaSchoolAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface SchoolAttributes {
|
interface SchoolAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface SpellAttributes {
|
interface SpellAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -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);
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface PermissionAttributes {
|
interface PermissionAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface RoleAttributes {
|
interface RoleAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DataTypes, Model, Optional } from "sequelize";
|
import { DataTypes, Model, Optional } from "sequelize";
|
||||||
|
|
||||||
import { AuracleDatabaseDriver } from "../../";
|
import { AuracleDatabaseDriver } from "../../common/classes/AuracleDatabaseDriver";
|
||||||
|
|
||||||
interface UserAttributes {
|
interface UserAttributes {
|
||||||
id: number
|
id: number
|
||||||
@@ -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);
|
|
||||||
Reference in New Issue
Block a user