Skip to content

Commit

Permalink
Merge pull request #95 from datasci4health/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
HeitorMatt authored Sep 17, 2020
2 parents 2cd5e2a + 6bc036e commit 09b5b02
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 24 deletions.
30 changes: 23 additions & 7 deletions src/adonisjs/app/Controllers/Http/v1/CaseController.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const Database = use('Database')
const User = use('App/Models/v1/User')
const Case = use('App/Models/v1/Case')
const CaseVersion = use('App/Models/v1/CaseVersion')
const Institution = use('App/Models/v1/Institution')

const uuidv4 = require('uuid/v4')

Expand Down Expand Up @@ -45,6 +46,10 @@ class CaseController {

c.source = versions.last().source
c.versions = versions

const institution = await Institution.find(c.institution_id)
c.institution = institution.acronym

return response.json(c)
} else return response.status(500).json('case not found')
} catch (e) {
Expand All @@ -67,6 +72,11 @@ class CaseController {
c.specialty = request.input('specialty')
c.keywords = request.input('keywords')
c.original_date = request.input('original_date')
c.complexity = request.input('complexity')

const institutionAcronym = request.input('institution')
let institution = await Institution.findBy('acronym', institutionAcronym)
await c.institution().associate(institution)

const cv = new CaseVersion()
cv.id = await uuidv4()
Expand All @@ -93,18 +103,24 @@ class CaseController {
const c = await Case.find(params.id)

if (c != null) {
c.title = request.input('title')
c.description = request.input('description')
c.language = request.input('language')
c.domain = request.input('domain')
c.specialty = request.input('specialty')
c.keywords = request.input('keywords')
c.original_date = request.input('originalDate')
c.title = request.input('title') || null
c.description = request.input('description')|| null
c.language = request.input('language')|| null
c.domain = request.input('domain')|| null
c.specialty = request.input('specialty')|| null
c.keywords = request.input('keywords')|| null
c.original_date = request.input('originalDate')|| null
c.complexity = request.input('complexity')|| null

const institutionAcronym = request.input('institution')
let institution = await Institution.findBy('acronym', institutionAcronym)
await c.institution().associate(institution)

const cv = new CaseVersion()
cv.source = request.input('source')
cv.id = await uuidv4()
await c.versions().save(cv)

await c.save()
return response.json(c)
} else return response.status(500).json('case not found')
Expand Down
4 changes: 4 additions & 0 deletions src/adonisjs/app/Models/v1/Case.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ class Case extends Model {
.withPivot(['order_position'])
.withTimestamps()
}

institution () {
return this.belongsTo('App/Models/v1/Institution')
}
}

module.exports = Case
2 changes: 2 additions & 0 deletions src/adonisjs/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

echo "Migration process started"

adonis migration:run
adonis seed --files InitialSeeder.js

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class CaseUpdateAddComplexityAttributeSchema extends Schema {
up () {
this.table('cases', (table) => {
table.string('complexity')
})
}

down () {
this.table('cases', (table) => {
table.dropColumn('complexity')
})
}
}

module.exports = CaseUpdateAddComplexityAttributeSchema
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class CaseUpdateAddInstitutionRelationshipSchema extends Schema {
up () {
this.table('cases', (table) => {
table.uuid('institution_id').references('id').inTable('institutions').index('institution_id')
})
}

down () {
this.table('cases', (table) => {
table.dropForeign('institution_id')
table.dropColumn('institution_id')
})
}
}

module.exports = CaseUpdateAddInstitutionRelationshipSchema
31 changes: 29 additions & 2 deletions src/adonisjs/database/seeds/InitialSeeder.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
/** @type {import('@adonisjs/lucid/src/Factory')} */
const Factory = use('Factory')

const Institution = use('App/Models/v1/Institution')
const Property = use('App/Models/Property')
const CaseArtifacts = use('App/Models/CaseArtifact')
const CaseVersion = use('App/Models/v1/CaseVersion')
Expand All @@ -39,12 +40,14 @@ class UserSeeder {
const jacinto = await User.findBy('username', 'jacinto')

if (jacinto == null) {

const institution = await this.seed_institution(trx)
const user = await this.seed_default_users(trx)

const c = await this.seed_default_case(trx)

const artifact = await this.seed_artifact(c, trx)
await user.artifacts().save(artifact, trx)
await user.institution().associate(institution, trx)

await user.save(trx)

Expand Down Expand Up @@ -174,9 +177,32 @@ class UserSeeder {
}
}

async seed_default_quests (trx) {
async seed_institution(trx) {
try {

const institution = new Institution()
institution.id = await uuidv4()
institution.acronym = 'uni'
institution.title = 'Universidade'
institution.country = 'UN'

const institution2 = new Institution()
institution2.id = await uuidv4()
institution2.acronym = 'unicamp'
institution2.title = 'Universidade Estadual de Campinas'
institution2.country = 'BR'

const institution3 = new Institution()
institution3.id = await uuidv4()
institution3.acronym = 'minho'
institution3.title = 'Universidade do Minho'
institution3.country = 'PT'

institution.save(trx)
institution2.save(trx)
institution3.save(trx)

return institution
} catch (e) {

}
Expand Down Expand Up @@ -207,6 +233,7 @@ class UserSeeder {
c.domain = 'domain-test'
c.specialty = 'specialty-test'
c.keywords = 'keyword1; keyword2'
c.complexity = 'undergraduate'
c.id = await uuidv4()

const cv = new CaseVersion()
Expand Down
31 changes: 16 additions & 15 deletions src/adonisjs/start/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ Route.get('/', () => { return 'Hello from Harena Manager'} )
|----------------------------------------------------------------------------------------------
*/
Route.group(() => {
Route.post( '', 'v1/UserController.store')
Route.post( '', 'v1/UserController.store')

Route.get('cases', 'v1/UserController.list_cases').middleware(['auth'])
Route.get( 'quests', 'v1/UserController.list_quests').middleware(['auth'])
Route.get( 'cases_by_quest', 'v1/UserController.list_cases_by_quests').middleware(['auth'])
Route.get( 'cases', 'v1/UserController.list_cases').middleware(['auth'])
Route.get( 'quests', 'v1/UserController.list_quests').middleware(['auth'])
Route.get( 'cases_by_quest', 'v1/UserController.list_cases_by_quests').middleware(['auth'])

Route.get( ':id', 'v1/UserController.show').middleware(['auth'])
Route.put( ':id', 'v1/UserController.update').middleware(['auth'])
Route.delete(':id', 'v1/UserController.destroy').middleware(['auth'])
Route.get( ':id', 'v1/UserController.show').middleware(['auth'])
Route.put( ':id', 'v1/UserController.update').middleware(['auth'])
Route.delete(':id', 'v1/UserController.destroy').middleware(['auth'])
}).prefix('/api/v1/user')


Expand Down Expand Up @@ -63,9 +63,8 @@ Route.group(() => {
|----------------------------------------------------------------------------------------------
*/
Route.group(() => {
Route.get( '', 'v1/CaseController.index')
Route.get( ':id', 'v1/CaseController.show')
Route.post( '', 'v1/CaseController.store')
Route.post( '', 'v1/CaseController.store')
Route.put( ':id', 'v1/CaseController.update').middleware(['check_permission:contributor'])
Route.post( 'share', 'v1/CaseController.share').middleware(['check_permission:author'])
Route.delete(':id', 'v1/CaseController.destroy').middleware(['check_permission:author'])
Expand Down Expand Up @@ -130,18 +129,20 @@ Route.group(() => {
|----------------------------------------------------------------------------------------------
*/
Route.group(() => {
Route.get( 'users', 'v1/UserController.index')
Route.get( 'users', 'v1/UserController.index')

Route.get( 'roles', 'v1/AdminController.list_roles')
Route.post( 'role', 'v1/AdminController.create_role')
Route.post( 'role', 'v1/AdminController.create_role')
Route.post( 'role/link/permission', 'v1/AdminController.link_role_permission')

Route.get( 'user/:id/roles', 'v1/AdminController.list_roles_by_user')
Route.post( 'user/link/role', 'v1/AdminController.linkRoleUser')
Route.post( 'user/link/role', 'v1/AdminController.linkRoleUser')

Route.get( 'quests', 'v1/QuestController.index')
Route.post( 'quest/link/user', 'v1/QuestController.linkUser')
Route.delete('quest/:id', 'v1/QuestController.destroy')
Route.get( 'cases', 'v1/CaseController.index')

Route.get( 'quests', 'v1/QuestController.index')
Route.post( 'quest/link/user', 'v1/QuestController.linkUser')
Route.delete('quest/:id', 'v1/QuestController.destroy')

Route.post( 'institution', 'v1/InstitutionController.store')

Expand Down

0 comments on commit 09b5b02

Please sign in to comment.