diff --git a/Dockerfile b/Dockerfile index a0b6387..f485887 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,21 @@ -FROM node:12 +FROM node:10 WORKDIR /app +COPY ./src/adonisjs . + +#RUN chown node:node /app + RUN npm i npm RUN npm i -g @adonisjs/cli -COPY ./src/adonisjs . - RUN npm install -CMD [ "npm", "start"] +#RUN chown node:node /app + +#USER node + +#ENTRYPOINT ["tail", "-f", "/dev/null"] +#CMD [ "npm", "start"] + +ENTRYPOINT ["./bootstrap.sh"] diff --git a/README.md b/README.md index b499552..44ddeba 100644 --- a/README.md +++ b/README.md @@ -119,10 +119,8 @@ adonis serve --debug # starting server ### Running as Docker containers - Linux -You can run a containerized instance of this project with its required services (e.g., database) using Docker. -Please refer to this [link](https://docs.docker.com/install/) for installing Docker. Then, try: - -```bash +You can run a containerized instance of this project with its required services (e.g., database) using Docker. Please refer to this link for installing Docker. Then, try: +``` sudo apt-get install docker-compose -y # installing docker-compose git clone https://github.com/datasci4health/harena-manager @@ -136,7 +134,6 @@ docker build . -t manager docker-compose -f docker-compose-dev.yml up ``` - ## Dependencies ### System-wide diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 80f1eee..6f905de 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -3,7 +3,7 @@ version: '3' services: harena-manager: - image: datasci4health/harena-manager:development + image: manager ports: - "10020:10020" environment: @@ -22,8 +22,6 @@ services: - DB_USER=jacinto - DB_PASSWORD=jacinto - HASH_DRIVER=bcrypt - # env_file: - # - web-variables.env depends_on: - harena-manager-database restart: always @@ -31,6 +29,7 @@ services: - harena-manager volumes: - ./src/adonisjs:/app + - /app/node_modules harena-manager-database: image: mysql:5.7 diff --git a/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js b/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js index 008789a..b0cb884 100644 --- a/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js +++ b/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js @@ -46,7 +46,8 @@ class ArtifactController { await file.move(fsPath, {name: artifactFileName, overwrite: false}) const artifact = new Artifact() - artifact.fs_path = fsPath + artifactFileName + artifact.id = artifactID + artifact.fs_path = fsPath + artifactFileName artifact.relative_path = caseRelativePath + artifactFileName artifact.case_id = linkedCase != null ? linkedCase.uuid : linkedCase; await auth.user.artifacts().save(artifact) diff --git a/src/adonisjs/app/Controllers/Http/v1/CaseController.js b/src/adonisjs/app/Controllers/Http/v1/CaseController.js index 38e971a..6ff99ef 100644 --- a/src/adonisjs/app/Controllers/Http/v1/CaseController.js +++ b/src/adonisjs/app/Controllers/Http/v1/CaseController.js @@ -64,8 +64,9 @@ class CaseController { c.user_id = auth.user.id let cv = new CaseVersion() + cv.id = await uuidv4() + cv.source = request.input('source') - await c.versions().save(cv) await c.versions().fetch() @@ -85,7 +86,7 @@ class CaseController { let cv = new CaseVersion() cv.source = request.input('source') - + cv.id = await uuidv4() await c.versions().save(cv) await c.save() return response.json(c) diff --git a/src/adonisjs/app/Models/v1/Artifact.js b/src/adonisjs/app/Models/v1/Artifact.js index 637effa..a34931e 100644 --- a/src/adonisjs/app/Models/v1/Artifact.js +++ b/src/adonisjs/app/Models/v1/Artifact.js @@ -4,6 +4,9 @@ const Model = use('Model') class Artifact extends Model { + static get incrementing () { + return false + } user() { return this.belongsTo('App/Models/v1/User'); diff --git a/src/adonisjs/app/Models/v1/CaseVersion.js b/src/adonisjs/app/Models/v1/CaseVersion.js index 986310c..01ed542 100644 --- a/src/adonisjs/app/Models/v1/CaseVersion.js +++ b/src/adonisjs/app/Models/v1/CaseVersion.js @@ -4,6 +4,10 @@ const Model = use('Model') class CaseVersion extends Model { + static get incrementing () { + return false + } + case() { return this.belongsTo('App/Models/v1/Case'); } diff --git a/src/adonisjs/app/Models/v1/Permission.js b/src/adonisjs/app/Models/v1/Permission.js new file mode 100644 index 0000000..623aa16 --- /dev/null +++ b/src/adonisjs/app/Models/v1/Permission.js @@ -0,0 +1,12 @@ +'use strict' + +/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */ +const Model = use('Model') + +class Permission extends Model { + static get incrementing () { + return false + } +} + +module.exports = Permission diff --git a/src/adonisjs/app/Models/v1/Role.js b/src/adonisjs/app/Models/v1/Role.js new file mode 100644 index 0000000..e7b40da --- /dev/null +++ b/src/adonisjs/app/Models/v1/Role.js @@ -0,0 +1,12 @@ +'use strict' + +/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */ +const Model = use('Model') + +class Role extends Model { + static get incrementing () { + return false + } +} + +module.exports = Role diff --git a/src/adonisjs/app/Models/v1/User.js b/src/adonisjs/app/Models/v1/User.js index a1c49c9..d247e70 100644 --- a/src/adonisjs/app/Models/v1/User.js +++ b/src/adonisjs/app/Models/v1/User.js @@ -8,6 +8,10 @@ const Model = use('Model') const Database = use('Database') class User extends Model { + static get incrementing () { + return false + } + static async getAuthenticatedUser(email){ return await Database.table('users').select('username', 'email').where('email', email) } diff --git a/src/adonisjs/database/factory.js b/src/adonisjs/database/factory.js index bcfc4c9..b841d00 100644 --- a/src/adonisjs/database/factory.js +++ b/src/adonisjs/database/factory.js @@ -19,7 +19,8 @@ Factory.blueprint('App/Models/v1/User', async (faker, i, data) => { return { username: faker.username(), email: faker.email(), - password: await Hash.make(faker.password()) + password: await Hash.make(faker.password()), + id: data.id } }) @@ -32,7 +33,8 @@ Factory.blueprint('App/Models/v1/Case', (faker, i, data) => { Factory.blueprint('App/Models/v1/CaseVersion', async (faker, i, data) => { return { - source: data.source + source: data.source, + id: data.id } }) diff --git a/src/adonisjs/database/migrations/1557446692180_v_2_case_version_schema.js b/src/adonisjs/database/migrations/1557446692180_v_2_case_version_schema.js deleted file mode 100644 index 0a05f48..0000000 --- a/src/adonisjs/database/migrations/1557446692180_v_2_case_version_schema.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') -const Database = use('Database') - -class CaseVersionSchema extends Schema { - async up () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE cases ADD COLUMN uuid CHAR(36) UNIQUE" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions DROP FOREIGN KEY case_id" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions MODIFY case_id CHAR(36)" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions ADD CONSTRAINT case_id FOREIGN KEY (case_id) REFERENCES cases(uuid)" - await trx.raw(sql) - - sql = "ALTER TABLE cases DROP PRIMARY KEY, CHANGE id id int(11);" - await trx.raw(sql) - - sql = "ALTER TABLE cases DROP COLUMN id" - await trx.raw(sql) - - sql = "ALTER TABLE cases ADD CONSTRAINT PRIMARY KEY (uuid)" - await trx.raw(sql) - - trx.commit() - trx.rollback() - - } - - async down () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE cases DROP PRIMARY KEY" - await trx.raw(sql) - - sql = "ALTER TABLE cases ADD COLUMN id INT(10) AUTO_INCREMENT UNIQUE" - await trx.raw(sql) - - sql = "ALTER TABLE cases ADD CONSTRAINT PRIMARY KEY (id)" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions DROP FOREIGN KEY case_id" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions MODIFY case_id INT(10)" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions ADD CONSTRAINT case_id FOREIGN KEY (case_id) REFERENCES cases(id)" - await trx.raw(sql) - - sql = "ALTER TABLE cases DROP COLUMN uuid" - await trx.raw(sql) - - trx.commit() - trx.rollback() - } -} - -module.exports = CaseVersionSchema diff --git a/src/adonisjs/database/migrations/1557446692181_v_1_artifacts_schema.js b/src/adonisjs/database/migrations/1557446692181_v_1_artifacts_schema.js deleted file mode 100644 index 514561e..0000000 --- a/src/adonisjs/database/migrations/1557446692181_v_1_artifacts_schema.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') - -class ArtifactsSchema extends Schema { - - up () { - - this.create('artifacts', (table) => { - table.increments() - table.integer('user_id').unsigned().references('id').inTable('users'); - table.uuid( 'case_id').references('uuid').inTable('cases'); - table.string( 'fs_path', 300).notNullable() - table.string( 'relative_path', 300).notNullable() - table.timestamps() - }) - } - - down () { - - this.drop('artifacts') - } -} - -module.exports = ArtifactsSchema diff --git a/src/adonisjs/database/migrations/1557609096219_v_2_case_schema.js b/src/adonisjs/database/migrations/1557609096219_v_2_case_schema.js deleted file mode 100644 index 726ca17..0000000 --- a/src/adonisjs/database/migrations/1557609096219_v_2_case_schema.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') - -class CaseSchema extends Schema { - up () { - this.table('cases', (table) => { - table.dropUnique('name') - }) - } - - down () { - this.table('cases', (table) => { - table.unique('name') - }) - } -} - -module.exports = CaseSchema diff --git a/src/adonisjs/database/migrations/1561425934159_v_3_case_version_schema.js b/src/adonisjs/database/migrations/1561425934159_v_3_case_version_schema.js deleted file mode 100644 index 09e75c1..0000000 --- a/src/adonisjs/database/migrations/1561425934159_v_3_case_version_schema.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') -const Database = use('Database') - -class CaseVersionSchema extends Schema { - async up () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE case_versions DROP FOREIGN KEY case_id" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions ADD CONSTRAINT case_id FOREIGN KEY (case_id) REFERENCES cases(uuid) ON DELETE CASCADE" - await trx.raw(sql) - - trx.commit() - trx.rollback() - } - - async down () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE case_versions DROP FOREIGN KEY case_id" - await trx.raw(sql) - - sql = "ALTER TABLE case_versions ADD CONSTRAINT case_id FOREIGN KEY (case_id) REFERENCES cases(uuid)" - await trx.raw(sql) - - trx.commit() - trx.rollback() - } -} - -module.exports = CaseVersionSchema diff --git a/src/adonisjs/database/migrations/1561537115761_v_3_artifact_schema.js b/src/adonisjs/database/migrations/1561537115761_v_3_artifact_schema.js deleted file mode 100644 index de1ae53..0000000 --- a/src/adonisjs/database/migrations/1561537115761_v_3_artifact_schema.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') -const Database = use('Database') - -class ArtifactSchema extends Schema { - async up () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE artifacts DROP FOREIGN KEY artifacts_case_id_foreign" - await trx.raw(sql) - - sql = "ALTER TABLE artifacts ADD CONSTRAINT artifacts_case_id_foreign FOREIGN KEY (case_id) REFERENCES cases(uuid) ON DELETE CASCADE" - await trx.raw(sql) - - trx.commit() - trx.rollback() - } - - async down () { - const trx = await Database.beginTransaction() - - let sql = "ALTER TABLE artifacts DROP FOREIGN KEY artifacts_case_id_foreign" - await trx.raw(sql) - - sql = "ALTER TABLE artifacts ADD CONSTRAINT artifacts_case_id_foreign FOREIGN KEY (case_id) REFERENCES cases(uuid)" - await trx.raw(sql) - - trx.commit() - trx.rollback() - } -} - -module.exports = ArtifactSchema diff --git a/src/adonisjs/database/migrations/1574643282411_case_update_column_name_id_schema.js b/src/adonisjs/database/migrations/1574643282411_case_update_column_name_id_schema.js deleted file mode 100644 index 2cd2d6e..0000000 --- a/src/adonisjs/database/migrations/1574643282411_case_update_column_name_id_schema.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' - -/** @type {import('@adonisjs/lucid/src/Schema')} */ -const Schema = use('Schema') - -class CaseUpdateColumnNameIdSchema extends Schema { - up () { - this.table('cases', (table) => { - // alter table - - table.dropPrimary('uuid') - table.renameColumn('uuid', 'id') - table.primary('id') - - }) - } - - down () { - this.table('cases', (table) => { - // reverse alternations - - table.dropPrimary('id') - table.renameColumn('id', 'uuid') - table.primary('uuid') - - - }) - } -} - -module.exports = CaseUpdateColumnNameIdSchema diff --git a/src/adonisjs/database/migrations/1554385461873_v_1_user_schema.js b/src/adonisjs/database/migrations/1584622388831_user_schema.js similarity index 82% rename from src/adonisjs/database/migrations/1554385461873_v_1_user_schema.js rename to src/adonisjs/database/migrations/1584622388831_user_schema.js index 1ade2f5..20e5214 100644 --- a/src/adonisjs/database/migrations/1554385461873_v_1_user_schema.js +++ b/src/adonisjs/database/migrations/1584622388831_user_schema.js @@ -6,10 +6,14 @@ const Schema = use('Schema') class UserSchema extends Schema { up () { this.create('users', (table) => { - table.increments() + table.uuid('id') + table.primary('id') + table.string('username', 80).notNullable().unique() + table.string('login', 80).unique() table.string('email', 254).notNullable().unique() table.string('password', 60).notNullable() + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1554943173614_v_1_case_schema.js b/src/adonisjs/database/migrations/1584622589028_case_schema.js similarity index 60% rename from src/adonisjs/database/migrations/1554943173614_v_1_case_schema.js rename to src/adonisjs/database/migrations/1584622589028_case_schema.js index f967ddd..99be8b4 100644 --- a/src/adonisjs/database/migrations/1554943173614_v_1_case_schema.js +++ b/src/adonisjs/database/migrations/1584622589028_case_schema.js @@ -5,15 +5,17 @@ const Schema = use('Schema') class CaseSchema extends Schema { up () { + this.dropIfExists('cases') this.create('cases', (table) => { - table.increments() - table.string('name').unique() + table.uuid('id') + table.primary('id') + + table.string('name') + + table.uuid('user_id').references('id').inTable('users').index('user_id'); - table.integer('user_id').unsigned() - table.foreign('user_id', 'fk_case_user').references('id').inTable('users'); table.timestamps() }) - } down () { diff --git a/src/adonisjs/database/migrations/1555723461998_v_1_case_version_schema.js b/src/adonisjs/database/migrations/1584624314791_case_version_schema.js similarity index 66% rename from src/adonisjs/database/migrations/1555723461998_v_1_case_version_schema.js rename to src/adonisjs/database/migrations/1584624314791_case_version_schema.js index 7643790..b3e9138 100644 --- a/src/adonisjs/database/migrations/1555723461998_v_1_case_version_schema.js +++ b/src/adonisjs/database/migrations/1584624314791_case_version_schema.js @@ -5,11 +5,16 @@ const Schema = use('Schema') class CaseVersionSchema extends Schema { up () { + this.dropIfExists('case_versions') + this.create('case_versions', (table) => { - table.increments() + table.uuid('id') + table.primary('id') + table.text('source') - table.integer('case_id').unsigned() - table.foreign('case_id', 'case_id').references('id').inTable('cases') + + table.uuid('case_id').references('id').inTable('cases').index('case_id'); + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1584625075313_artifact_schema.js b/src/adonisjs/database/migrations/1584625075313_artifact_schema.js new file mode 100644 index 0000000..6babdef --- /dev/null +++ b/src/adonisjs/database/migrations/1584625075313_artifact_schema.js @@ -0,0 +1,29 @@ +'use strict' + +/** @type {import('@adonisjs/lucid/src/Schema')} */ +const Schema = use('Schema') + +class ArtifactSchema extends Schema { + up () { + this.dropIfExists('artifacts') + + this.create('artifacts', (table) => { + table.uuid('id') + table.primary('id') + + table.string( 'fs_path', 300).notNullable() + table.string( 'relative_path', 300).notNullable() + + table.uuid('user_id').references('id').inTable('users').index('user_id'); + table.uuid('case_id').references('id').inTable('cases').index('case_id'); + + table.timestamps() + }) + } + + down () { + this.drop('artifacts') + } +} + +module.exports = ArtifactSchema diff --git a/src/adonisjs/database/migrations/1574361440169_quest_schema.js b/src/adonisjs/database/migrations/1584625520986_quest_schema.js similarity index 76% rename from src/adonisjs/database/migrations/1574361440169_quest_schema.js rename to src/adonisjs/database/migrations/1584625520986_quest_schema.js index 528b52c..493ba83 100644 --- a/src/adonisjs/database/migrations/1574361440169_quest_schema.js +++ b/src/adonisjs/database/migrations/1584625520986_quest_schema.js @@ -4,20 +4,23 @@ const Schema = use('Schema') class QuestSchema extends Schema { - async up () { + up () { + this.dropIfExists('quests') + this.create('quests', (table) => { table.uuid('id') + table.primary('id') + table.string('name', 255).notNullable().unique() - table.primary('id') + table.uuid('author_id').references('id').inTable('users').index('author_id'); + table.timestamps() }) - - } down () { - this.dropIfExists('quests') + this.drop('quests') } } diff --git a/src/adonisjs/database/migrations/1574605610613_users_quests_schema.js b/src/adonisjs/database/migrations/1584625727360_user_quest_schema.js similarity index 53% rename from src/adonisjs/database/migrations/1574605610613_users_quests_schema.js rename to src/adonisjs/database/migrations/1584625727360_user_quest_schema.js index f52fe2e..14d31fd 100644 --- a/src/adonisjs/database/migrations/1574605610613_users_quests_schema.js +++ b/src/adonisjs/database/migrations/1584625727360_user_quest_schema.js @@ -3,16 +3,13 @@ /** @type {import('@adonisjs/lucid/src/Schema')} */ const Schema = use('Schema') -class UsersQuestsSchema extends Schema { +class UserQuestSchema extends Schema { up () { this.dropIfExists('user_quests') - this.create('users_quests', (table) => { - - table.integer('user_id').unsigned().index('user_id') + this.create('user_quests', (table) => { + table.uuid('user_id').references('id').inTable('users').index('users_id'); table.uuid('quest_id').references('id').inTable('quests').index('quests_id'); - table.foreign('user_id').references('users.id').onDelete('cascade') - table.primary(['user_id', 'quest_id']) table.timestamps() @@ -20,8 +17,8 @@ class UsersQuestsSchema extends Schema { } down () { - this.drop('users_quests') + this.drop('user_quests') } } -module.exports = UsersQuestsSchema +module.exports = UserQuestSchema diff --git a/src/adonisjs/database/migrations/1574643835119_quests_cases_schema.js b/src/adonisjs/database/migrations/1584625986348_quest_case_schema.js similarity index 68% rename from src/adonisjs/database/migrations/1574643835119_quests_cases_schema.js rename to src/adonisjs/database/migrations/1584625986348_quest_case_schema.js index e3fe2c4..fe24442 100644 --- a/src/adonisjs/database/migrations/1574643835119_quests_cases_schema.js +++ b/src/adonisjs/database/migrations/1584625986348_quest_case_schema.js @@ -3,27 +3,27 @@ /** @type {import('@adonisjs/lucid/src/Schema')} */ const Schema = use('Schema') -class QuestsCasesSchema extends Schema { +class QuestCaseSchema extends Schema { up () { - this.dropIfExists('quests_cases') + this.dropIfExists('quest_cases') - this.create('quests_cases', (table) => { + this.create('quest_cases', (table) => { - table.uuid('quest_id').references('id').inTable('quests').index('quest_id'); - table.uuid('case_id').references('id').inTable('cases').index('case_id'); - table.string('argument') + table.uuid('quest_id').references('id').inTable('quests').index('quest_id'); + table.uuid('case_id').references('id').inTable('cases').index('case_id'); table.primary(['case_id', 'quest_id']) + table.string('argument') table.timestamps() }) } down () { - this.drop('quests_cases') + this.drop('quest_cases') } } -module.exports = QuestsCasesSchema +module.exports = QuestCaseSchema diff --git a/src/adonisjs/database/migrations/1574778431311_create_permissions_table.js b/src/adonisjs/database/migrations/1584626247596_create_permissions_table.js similarity index 91% rename from src/adonisjs/database/migrations/1574778431311_create_permissions_table.js rename to src/adonisjs/database/migrations/1584626247596_create_permissions_table.js index 29ef969..b21a8e1 100644 --- a/src/adonisjs/database/migrations/1574778431311_create_permissions_table.js +++ b/src/adonisjs/database/migrations/1584626247596_create_permissions_table.js @@ -4,11 +4,15 @@ const Schema = use('Schema') class PermissionsTableSchema extends Schema { up () { + this.dropIfExists('permissions') + this.create('permissions', table => { table.increments() + table.string('slug').notNullable().unique() table.string('name').notNullable().unique() table.text('description').nullable() + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1574778431329_create_roles_table.js b/src/adonisjs/database/migrations/1584626247603_create_roles_table.js similarity index 92% rename from src/adonisjs/database/migrations/1574778431329_create_roles_table.js rename to src/adonisjs/database/migrations/1584626247603_create_roles_table.js index 174fc27..b53bd8f 100644 --- a/src/adonisjs/database/migrations/1574778431329_create_roles_table.js +++ b/src/adonisjs/database/migrations/1584626247603_create_roles_table.js @@ -4,11 +4,15 @@ const Schema = use('Schema') class RolesTableSchema extends Schema { up () { + this.dropIfExists('roles') + this.create('roles', table => { table.increments() + table.string('slug').notNullable().unique() table.string('name').notNullable().unique() table.text('description').nullable() + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1574778431331_create_permission_role_table.js b/src/adonisjs/database/migrations/1584626247605_create_permission_role_table.js similarity index 66% rename from src/adonisjs/database/migrations/1574778431331_create_permission_role_table.js rename to src/adonisjs/database/migrations/1584626247605_create_permission_role_table.js index 2d04a6a..e765ad7 100644 --- a/src/adonisjs/database/migrations/1574778431331_create_permission_role_table.js +++ b/src/adonisjs/database/migrations/1584626247605_create_permission_role_table.js @@ -4,12 +4,19 @@ const Schema = use('Schema') class PermissionRoleTableSchema extends Schema { up () { + this.dropIfExists('permission_role') + this.create('permission_role', table => { - table.increments() + table.integer('permission_id').unsigned().index() table.foreign('permission_id').references('id').on('permissions').onDelete('cascade') table.integer('role_id').unsigned().index() table.foreign('role_id').references('id').on('roles').onDelete('cascade') + + //table.integer('permission_id').references('id').inTable('permissions').index('permission_id'); + //table.integer('role_id').references('id').inTable('roles').index('role_id'); + //table.primary(['permission_id', 'role_id']) + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1574778431332_create_permission_user_table.js b/src/adonisjs/database/migrations/1584626247609_create_permission_user_table.js similarity index 71% rename from src/adonisjs/database/migrations/1574778431332_create_permission_user_table.js rename to src/adonisjs/database/migrations/1584626247609_create_permission_user_table.js index e3471ad..52d165a 100644 --- a/src/adonisjs/database/migrations/1574778431332_create_permission_user_table.js +++ b/src/adonisjs/database/migrations/1584626247609_create_permission_user_table.js @@ -4,12 +4,14 @@ const Schema = use('Schema') class PermissionUserTableSchema extends Schema { up () { + this.dropIfExists('permission_user') + this.create('permission_user', table => { - table.increments() table.integer('permission_id').unsigned().index() table.foreign('permission_id').references('id').on('permissions').onDelete('cascade') - table.integer('user_id').unsigned().index() - table.foreign('user_id').references('id').on('users').onDelete('cascade') + table.uuid('user_id').references('id').inTable('users').index('user_id'); + table.primary(['permission_id', 'user_id']) + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1574778431334_create_role_user_table.js b/src/adonisjs/database/migrations/1584626247612_create_role_user_table.js similarity index 70% rename from src/adonisjs/database/migrations/1574778431334_create_role_user_table.js rename to src/adonisjs/database/migrations/1584626247612_create_role_user_table.js index e14cd64..0f5ff3d 100644 --- a/src/adonisjs/database/migrations/1574778431334_create_role_user_table.js +++ b/src/adonisjs/database/migrations/1584626247612_create_role_user_table.js @@ -4,12 +4,14 @@ const Schema = use('Schema') class RoleUserTableSchema extends Schema { up () { + this.dropIfExists('role_user') + this.create('role_user', table => { - table.increments() + table.uuid('user_id').references('id').inTable('users').index('user_id'); table.integer('role_id').unsigned().index() table.foreign('role_id').references('id').on('roles').onDelete('cascade') - table.integer('user_id').unsigned().index() - table.foreign('user_id').references('id').on('users').onDelete('cascade') + table.primary(['user_id', 'role_id']) + table.timestamps() }) } diff --git a/src/adonisjs/database/seeds/InitialSeeder.js b/src/adonisjs/database/seeds/InitialSeeder.js index 7f021ee..556ce3c 100644 --- a/src/adonisjs/database/seeds/InitialSeeder.js +++ b/src/adonisjs/database/seeds/InitialSeeder.js @@ -28,17 +28,17 @@ class UserSeeder { user.username = 'jacinto' user.email = 'jacinto@example.com' user.password = 'jacinto' + user.id = await uuidv4() await user.save(trx) const c = await Factory.model('App/Models/v1/Case').make({ name: 'case001-development', id: await uuidv4() }) await user.cases().save(c, trx) - const cv = await Factory.model('App/Models/v1/CaseVersion').make({ source: fs.readFileSync(RESOURCE_DIR + 'case.md', 'utf8') }) - + const cv = await Factory.model('App/Models/v1/CaseVersion').make({ source: fs.readFileSync(RESOURCE_DIR + 'case.md', 'utf8'), id: await uuidv4() }) await c.versions().save(cv, trx) - await Factory.model('App/Models/v1/User').createMany(5) + //await Factory.model('App/Models/v1/User').createMany(5) trx.commit() diff --git a/src/adonisjs/start/routes.js b/src/adonisjs/start/routes.js index 93e7f6f..b797224 100644 --- a/src/adonisjs/start/routes.js +++ b/src/adonisjs/start/routes.js @@ -8,7 +8,7 @@ const Route = use('Route') | index |---------------------------------------------------------------------------------------------- */ -Route.get('/', () => { return 'Hello from the harena-manager'} ) +Route.get('/', () => { return 'Hello from the harena-manager8'} ) /* @@ -103,4 +103,4 @@ Route.group(() => { /* Test route */ Route.get('/api/imagetest', 'TestController.index') -Route.post('/', 'TestController.create').as('profile'); \ No newline at end of file +Route.post('/', 'TestController.create').as('profile');