Skip to content

Commit

Permalink
refactor (InitialSeeder): new default quests
Browse files Browse the repository at this point in the history
  • Loading branch information
HeitorMatt committed Sep 9, 2020
1 parent a242f72 commit 4faf67b
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 75 deletions.
215 changes: 140 additions & 75 deletions src/adonisjs/database/seeds/InitialSeeder.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
Expand All @@ -91,47 +153,54 @@ 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)

trx.rollback()
}
}

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'
Expand All @@ -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)
Expand All @@ -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
Binary file added src/adonisjs/resources/imgs/decisoes-extremas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/adonisjs/resources/imgs/desafio-eletro.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/adonisjs/resources/imgs/desafio-radio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/adonisjs/resources/imgs/visita-virtual.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 4faf67b

Please sign in to comment.