Framework IATE
1 - Translator.js
Controller
do padrão MVC
. Responsável por receber os dados de request
, decidir o serviço de comunicação com o Interactor
e compilar a resposta para a API.
Similar ao Na prática, o
Translator
serve para manter oserver.js
mais limpo e claro.
export default class Translator {
constructor() {
self.Interactor = require('./Interactor').default
}
post(request, response) {
const interactor = new self.Interactor()
let data = request.body || {}
interactor.createUser(data).then(data => console.log(data))
}
get()
}
2 - Interactor.js
Entity
.
Manipula os dados relevantes do Request Model e decide como os dados devem ser enviados para regra de negócio na export default class Interactor {
constructor() {
self.Entity = require('./Entity').default
}
createUser(data) {
const entity = new self.Entity
return entity.validateMenorData(data)
.then(data => {
entity.createMenor(data)
})
.catch(error => {
console.log(error)
})
}
}
3 - Entity.js
Adapter
.
Camada que contém validação de dados e regras de negócio. Responsável por comunicar com o import Joi from 'joi'
export default class Entity {
constructor {
self.Adapter = require('./Adapter').default
}
validateMenorData(data) {
return new Promise((resolve, reject) => {
const schema = Joi.object().keys({
username: Joi.string().optional(),
email: Joi.string().email()
})
const result = Joi.validate(data, schema);
if (result) {
resolve(data)
} else {
reject('')
}
})
}
createMenor(data) {
const adapter = new self.Adapter
return adapter.save(data)
}
}
4 - Adapter.js
Última camada da aplicação e faz a interface com o banco de dados.
export default class Adapter {
constructor() {
self.mongoose = require('mongoose')
self.MenorModel = mongoose.model('Menor')
}
save(data) {
const menor = new self.MenorModel(data)
return menor.save().then((data) => {
return data
})
}
}