Definindo o schema
Os schema são agrupamento de recursos que serão usados para prover comportamentos e estados para as regras de negócio
Criando o Schema
Para criar um schema
para a entidade Category
criaremos dentro da pasta Schema
do domínio um arquivo CategorySchema.js
(src/domains/General/Category/Schema/CategorySchema.js
). Este arquivo deverá estender a classe Schema
. O resultado inicial será um documento como o do trecho a seguir.
import Schema from 'src/app/Agnostic/Schema'
/**
* @class {CategorySchema}
*/
export default class CategorySchema extends Schema {
construct () {
}
}
Importando Recursos
Esta definição é a mais básica que podemos fazer para esta classe porque o método construct
deve ser implementado mesmo nessa primeira versão. Além desse método vamos fazer mais algumas configurações, informando na estrutura da classe as propriedades: domain
, path
e service
.
import Schema from 'src/app/Agnostic/Schema'
import Service from 'src/domains/General/Category/Schema/CategoryService'
import { path, domain } from 'src/domains/General/Category/settings'
/**
* @class {CategorySchema}
*/
export default class CategorySchema extends Schema {
/**
* @type {string}
*/
static domain = domain
/**
* @type {string}
*/
static path = path
/**
* @type {Rest}
*/
service = Service
/**
* Configure schema
*/
construct () {
}
}
As propriedades estáticas domain
e path
são importados do settings.js
que definimos em Configurando o domínio e a propriedade service
é o arquivo CategoryService.js
que criamos em Preparando o acesso à API.
Criando o Campo name
name
Com o nosso schema inciado vamos configurar os campos que serão usados pela entidade. Para isso vamos usar o método addField
que deve ser chamado dentro do construct
.
// ...
/**
* @class {CategorySchema}
*/
export default class CategorySchema extends Schema {
// ...
/**
* Configure schema
*/
construct () {
this.addField('name')
}
}
No trecho de código acima declaramos que o nosso schema
irá trabalhar com o campo name
. Por padrão um campo criado não é exibido na table
e é exibido no form
com uma largura que ocupa 100% da linha num campo de texto. O campo primaryKey
é carregado de forma implícita em todos os filhos de Schema
. Portanto, nossa classe está mapeando dois campos: id
e name
. Mais adiante veremos as configurações dos campos e tudo que podemos fazer com eles, além de outros recursos configuráveis nos nossos schema
.
No próximo passo veremos como adicionar algumas rotas para podermos ver nossa tela sendo renderizada.
Criando as viewsLast updated
Was this helpful?