diff --git a/src/adonisjs/database/seeds/InitialSeeder.js b/src/adonisjs/database/seeds/InitialSeeder.js index 4dfe1f2..6d8b8d3 100644 --- a/src/adonisjs/database/seeds/InitialSeeder.js +++ b/src/adonisjs/database/seeds/InitialSeeder.js @@ -13,38 +13,37 @@ /** @type {import('@adonisjs/lucid/src/Factory')} */ const Factory = use('Factory') -const Property = use('App/Models/Property'); -const CaseArtifacts = use('App/Models/CaseArtifact'); -const CaseVersion = use('App/Models/v1/CaseVersion'); -const Case = use('App/Models/v1/Case'); -const User = use('App/Models/v1/User'); -const Quest = use('App/Models/v1/Quest'); -const Artifact = use('App/Models/v1/Artifact'); -const Role = use('App/Models/v1/Role'); - -const fs = require('fs'); -const uuidv4 = require('uuid/v4'); +const Property = use('App/Models/Property') +const CaseArtifacts = use('App/Models/CaseArtifact') +const CaseVersion = use('App/Models/v1/CaseVersion') +const Case = use('App/Models/v1/Case') +const User = use('App/Models/v1/User') +const Quest = use('App/Models/v1/Quest') +const Artifact = use('App/Models/v1/Artifact') +const Role = use('App/Models/v1/Role') + +const fs = require('fs') +const uuidv4 = require('uuid/v4') const Hash = use('Hash') -const Drive = use('Drive'); +const Drive = use('Drive') const Database = use('Database') -const Helpers = use('Helpers') +const Helpers = use('Helpers') -const ARTIFACTS_DIR = "/resources/artifacts/" +const ARTIFACTS_DIR = '/resources/artifacts/' class UserSeeder { - async run() { + async run () { let trx = await Database.beginTransaction() - try{ - let jacinto = await User.findBy('username', 'jacinto') + try { + const jacinto = await User.findBy('username', 'jacinto') - if (jacinto == null){ + if (jacinto == null) { + const user = await this.seed_default_users(trx) - let user = await this.seed_default_users(trx) + const c = await this.seed_default_case(trx) - let c = await this.seed_default_case(trx) - - let artifact = await this.seed_artifact(c, trx) + const artifact = await this.seed_artifact(c, trx) await user.artifacts().save(artifact, trx) await user.save(trx) @@ -54,33 +53,96 @@ class UserSeeder { row.role = AUTHOR }, trx) - let roles = await this.seed_roles(trx) + const roles = await this.seed_roles(trx) - let quest = new Quest() - quest.id = await uuidv4() + const quest = new Quest() + quest.id = 'default-quest' quest.title = 'default-quest' quest.color = '#505050' - //let artifactQuestId = await uuidv4() - let artifactDefaultId = 'default-quest-image-00000-0000-00000' + // let artifactQuestId = await uuidv4() + const artifactDefaultId = 'default-quest-image' - let fileName = artifactDefaultId + ".png" - let questRelativePath = ARTIFACTS_DIR + const fileName = artifactDefaultId + '.png' + const questRelativePath = ARTIFACTS_DIR - let artifactDefault = new Artifact() - artifactDefault.id = artifactDefaultId + const artifactDefault = new Artifact() + artifactDefault.id = artifactDefaultId artifactDefault.relative_path = questRelativePath + fileName - let fsPath = Helpers.publicPath('/resources/artifacts/') + const fsPath = Helpers.publicPath('/resources/artifacts/') - await Drive.copy(Helpers.resourcesPath('imgs/default-quest.png'), fsPath + fileName ) + await Drive.copy(Helpers.resourcesPath('imgs/default-quest.png'), fsPath + fileName) await quest.artifact().associate(artifactDefault, trx) - await user.artifacts().save(artifactDefault, trx) + await user.artifacts().save(artifactDefault, trx) await quest.save(trx) + // Adding default quests information + const quests = [ + { + id: 'quiz-da-emergencia', + title: 'Quiz da Emergência', + color: '#e64e31', + artifactId: 'quiz-da-emergencia', + url: 'imgs/quiz-emergencia.png' + + }, + { + id: 'desafio-de-eletrocardiograma', + title: 'Desafio de Eletrocardiograma', + color: '#ae9e00', + artifactId: 'desafio-de-eletrocardiograma', + url: 'imgs/desafio-eletro.png' + }, + { + id: 'desafio-radiologico', + title: 'Desafio Radiológico', + color: '#348f00', + artifactId: 'desafio-radiologico', + url: 'imgs/desafio-radio.png' + }, + { + id: 'visita-virtual', + title: 'Visita Virtual', + color: '#245797', + artifactId: 'visita-virtual', + url: 'imgs/visita-virtual.png' + }, + { + id: 'decisoes-extremas', + title: 'Decisões Extremas', + color: '#a34fa3', + artifactId: 'decisoes-extremas', + url: 'imgs/decisoes-extremas.png' + } + ] + + // Adding default quests in DB + + for (var q in quests) { + const _quest = new Quest() + _quest.id = quests[q].id + _quest.title = quests[q].title + _quest.color = quests[q].color + const _artifactDefault = new Artifact() + let _artifactDefaultId = quests[q].artifactId + + _artifactDefaultId = quests[q].id + const _fileName = _artifactDefaultId + '.png' + _artifactDefault.id = _artifactDefaultId + _artifactDefault.relative_path = questRelativePath + _fileName + + await Drive.copy(Helpers.resourcesPath(quests[q].url), fsPath + _fileName) + await _quest.artifact().associate(_artifactDefault, trx) + await user.artifacts().save(_artifactDefault, trx) + await _quest.save(trx) + await user.quests().attach([_quest.id], (row) => { + row.role = 0 + }, trx) + } await trx.commit() trx = await Database.beginTransaction() @@ -91,20 +153,20 @@ class UserSeeder { row.order_position = 0 }, trx) - await user.quests().attach([quest.id], (row) => { - row.role = 0 }, trx) + await user.quests().attach(['default-quest'], (row) => { + row.role = 0 + }, trx) // await user.quests().attach([quest.id], (row) => { // row.role = 2 - // }, trx) + // }, trx) await trx.commit() } else { console.log('Database is already populated') trx.commit() } - - } catch(e){ + } catch (e) { console.log('Error on seed process. Transactions rolled back. Log:') console.log(e) @@ -112,26 +174,33 @@ class UserSeeder { } } - async seed_default_users(trx){ - try{ - let user = new User() - user.username = 'jacinto' - user.login = 'jacinto' - user.email = 'jacinto@email.com' - user.password = 'jacinto' + async seed_default_quests (trx) { + try { - user.id = await uuidv4() + } catch (e) { - return user - } catch (e){ - console.log(e) } } - async seed_default_case(trx){ - try{ + async seed_default_users (trx) { + try { + const user = new User() + user.username = 'jacinto' + user.login = 'jacinto' + user.email = 'jacinto@email.com' + user.password = 'jacinto' - let c = new Case() + user.id = await uuidv4() + + return user + } catch (e) { + console.log(e) + } + } + + async seed_default_case (trx) { + try { + const c = new Case() c.title = 'default-case' c.description = 'Case for tests' c.language = 'pt-br' @@ -140,35 +209,34 @@ class UserSeeder { c.keywords = 'keyword1; keyword2' c.id = await uuidv4() - let cv = new CaseVersion() + const cv = new CaseVersion() cv.source = fs.readFileSync(Helpers.resourcesPath('case.md'), 'utf8') cv.id = await uuidv4() await c.versions().save(cv, trx) return c - } catch (e){ + } catch (e) { console.log(e) } } - async seed_artifact(c, trx){ - try{ - - const artifact_id = await uuidv4() - let fileName = artifact_id + ".png" + async seed_artifact (c, trx) { + try { + const artifact_id = await uuidv4() + const fileName = artifact_id + '.png' - let fs_path = Helpers.publicPath('/resources/artifacts/cases/') + c.id + '/' + const fs_path = Helpers.publicPath('/resources/artifacts/cases/') + c.id + '/' - let case_relative_path = ARTIFACTS_DIR + 'cases/' + c.id + '/' + const case_relative_path = ARTIFACTS_DIR + 'cases/' + c.id + '/' - let artifact = new Artifact() - artifact.id = await uuidv4() + const artifact = new Artifact() + artifact.id = await uuidv4() artifact.relative_path = case_relative_path + fileName - await Drive.copy(Helpers.resourcesPath('imgs/default-image.png'), fs_path + fileName ) + await Drive.copy(Helpers.resourcesPath('imgs/default-image.png'), fs_path + fileName) - let ca = new CaseArtifacts() + const ca = new CaseArtifacts() ca.case_id = c.id await ca.artifact().associate(artifact, trx) @@ -183,28 +251,25 @@ class UserSeeder { // row.value = 'square' // }, trx) - return artifact - } catch (e){ + } catch (e) { console.log(e) } } - async seed_roles(trx){ - let admin = {name: 'Administrator', slug: 'admin', description: 'system admin', id: await uuidv4()} - let author = {name: 'Case Author', slug: 'author', description: 'user who write cases', id: await uuidv4()} - let player = {name: 'Player', slug: 'player', description: 'user who read cases', id: await uuidv4()} + async seed_roles (trx) { + const admin = { name: 'Administrator', slug: 'admin', description: 'system admin', id: await uuidv4() } + const author = { name: 'Case Author', slug: 'author', description: 'user who write cases', id: await uuidv4() } + const player = { name: 'Player', slug: 'player', description: 'user who read cases', id: await uuidv4() } - let roles = await Factory.model('App/Models/v1/Role').makeMany(3, [admin, author, player]) + const roles = await Factory.model('App/Models/v1/Role').makeMany(3, [admin, author, player]) await roles[0].save(trx) await roles[1].save(trx) await roles[2].save(trx) return roles - } - } module.exports = UserSeeder diff --git a/src/adonisjs/resources/imgs/decisoes-extremas.png b/src/adonisjs/resources/imgs/decisoes-extremas.png new file mode 100644 index 0000000..e3e3ad9 Binary files /dev/null and b/src/adonisjs/resources/imgs/decisoes-extremas.png differ diff --git a/src/adonisjs/resources/imgs/desafio-eletro.png b/src/adonisjs/resources/imgs/desafio-eletro.png new file mode 100644 index 0000000..3dfe212 Binary files /dev/null and b/src/adonisjs/resources/imgs/desafio-eletro.png differ diff --git a/src/adonisjs/resources/imgs/desafio-radio.png b/src/adonisjs/resources/imgs/desafio-radio.png new file mode 100644 index 0000000..ecd14a3 Binary files /dev/null and b/src/adonisjs/resources/imgs/desafio-radio.png differ diff --git a/src/adonisjs/resources/imgs/quiz-emergencia.png b/src/adonisjs/resources/imgs/quiz-emergencia.png new file mode 100644 index 0000000..70ab8e9 Binary files /dev/null and b/src/adonisjs/resources/imgs/quiz-emergencia.png differ diff --git a/src/adonisjs/resources/imgs/visita-virtual.png b/src/adonisjs/resources/imgs/visita-virtual.png new file mode 100644 index 0000000..28c0a3a Binary files /dev/null and b/src/adonisjs/resources/imgs/visita-virtual.png differ