|
# Tutorial de como construir o framework do projeto
|
|
# Framework IATE
|
|
|
|
|
|
|
|
## 1 - Translator.js
|
|
|
|
##### Similar ao `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.
|
|
|
|
|
|
|
|
> Na prática, o `Translator` serve para manter o `server.js` mais limpo e claro.
|
|
|
|
|
|
## Adapter.js
|
|
|
|
--
|
|
|
|
```javascript
|
|
```javascript
|
|
export default class Adapter {
|
|
export default class Translator {
|
|
constructor() {
|
|
constructor() {
|
|
self.mongoose = require('mongoose')
|
|
self.Interactor = require('./Interactor').default
|
|
self.MenorModel = mongoose.model('Menor')
|
|
}
|
|
}
|
|
|
|
|
|
|
|
save(data) {
|
|
post(request, response) {
|
|
const menor = new self.MenorModel(data)
|
|
const interactor = new self.Interactor()
|
|
|
|
let data = request.body || {}
|
|
|
|
|
|
return menor.save().then((data) => {
|
|
interactor.createUser(data).then(data => console.log(data))
|
|
return data
|
|
}
|
|
})
|
|
|
|
}
|
|
get()
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## 2 - Interactor.js
|
|
|
|
|
|
|
|
##### Manipula os dados relevantes do Request Model e decide como os dados devem ser enviados para regra de negócio na `Entity`.
|
|
|
|
```
|
|
|
|
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)
|
|
|
|
})
|
|
|
|
}
|
|
}
|
|
}
|
|
```
|
|
```
|
|
## Entity.js
|
|
|
|
|
|
|
|
##### Classe que contém os dados e as regras de negócio.
|
|
## 3 - Entity.js
|
|
|
|
##### Camada que contém validação de dados e regras de negócio. Responsável por comunicar com o `Adapter`.
|
|
|
|
|
|
```
|
|
```
|
|
import Joi from 'joi'
|
|
import Joi from 'joi'
|
|
|
|
|
... | @@ -53,43 +80,23 @@ export default class Entity { |
... | @@ -53,43 +80,23 @@ export default class Entity { |
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
```
|
|
## Interactor.js
|
|
|
|
|
|
|
|
##### Contém as regras de negócio específicas. Manipula os dados relevantes do Request Model e interage com as Entities.
|
|
## 4 - Adapter.js
|
|
```
|
|
##### Última camada da aplicação e faz a interface com o banco de dados.
|
|
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)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
## Translator.js
|
|
|
|
--
|
|
|
|
```javascript
|
|
```javascript
|
|
export default class Translator {
|
|
export default class Adapter {
|
|
constructor() {
|
|
constructor() {
|
|
self.Interactor = require('./Interactor').default
|
|
self.mongoose = require('mongoose')
|
|
}
|
|
self.MenorModel = mongoose.model('Menor')
|
|
|
|
}
|
|
post(request, response) {
|
|
|
|
const interactor = new self.Interactor()
|
|
|
|
let data = request.body || {}
|
|
|
|
|
|
|
|
interactor.createUser(data).then(data => console.log(data))
|
|
save(data) {
|
|
}
|
|
const menor = new self.MenorModel(data)
|
|
|
|
|
|
get()
|
|
return menor.save().then((data) => {
|
|
|
|
return data
|
|
|
|
})
|
|
|
|
}
|
|
}
|
|
}
|
|
``` |
|
``` |
|
|
|
\ No newline at end of file |