2

CRUD com o RestfulX: Parte 2/2 – Create, Update e Delete

No último artigo que eu escrevi sobre CRUD com o RestfulX eu falei apenas sobre como obter os dados do servidor (retrieve). Neste artigo vou mostrar como funcionam as outras “letras” do acrônimo: criar,  Mother of the Bride Dresses  atualizar e apagar um registro (Create, Update e Delete).

Vou continuar usando o mesmo exemplo e aproveitar os conceitos explicados anteriormente. Por isso, se você não leu o artigo anterior, sugiro humildemente que faça isso antes de prosseguir … 😉

Create

Quando criamos Stwd Wedding Dresses uma nova instância de um model definido através do RestfulX, essa instância é criada apenas do lado do Flex, sem inserir o registro no banco de dados. Para que a nova instância seja armazenada n o banco de dados, é necessário que você invoque o método create, assim:

// Instancia um novo participante e define suas propriedades
var p1:Participante = new Participante();
p1.nome = "Antônio da Silva";
p1.email = "antonio@exemplo.com";
p1.data_registro = new Date;

// Cria o registro no banco de dados
p1.create( onCreateSuccess, onCreateFailure );

Na linha 2 nós criamos uma nova instância de Participante. Nas linhas 3, 4 e 5 definimos valores fictícios para o participante que será cadastrado. E finalmente na linha 8 invocamos o método create, que será o responsável por enviar os dados para o servidor para que o registro seja cadastrado.

O primeiro parâmetro do método create funciona da mesma forma que o segundo parâmetro da função index que vimos no artigo anterior: pode receber um Array com as opções ou então a função que será invocada quando a operação solicitada (create) for completada com sucesso. O segundo parâmetro é a função que será invocada caso haja algum erro ao tentar criar o registro no banco de dados. O método create não tem nenhum parâmetro obrigatório.

A função invocada quando a operação for concluída com sucesso recebe um único parâmetro, do mesmo tipo do objeto que está sendo armazenado no banco de dados. A função invocada caso ocorra algum erro recebe também um único parâmetro, do tipo FaultEvent. Dessa forma, as duas funções passadas como parâmetro na linha 8 do código anterior poderiam ser definidas assim:

private function onCreateSuccess( participante:Participante ):void
{
	// Código que será executado quando o registro for criado com sucesso
}

private function onCreateFailure( event:FaultEvent ):void
{
	// Código que será executado quando ocorrer um erro ao criar o registro
}

Essas poucas linhas de código são suficientes para criarmos um registro no banco de dados (lembrando que a definição destas funções de callback são opcionais).

Update

Atualizar um registro com o RestfulX é tão simples quanto criá-lo: basta alterar as propriedades do objeto e invocar o método update, passando os mesmos parâmetros que usamos na função create: primeiro a função que será executada quando o objeto for salvo com sucesso e depois a função que será invocada quando ocorrer um erro ou nenhum parâmetro. Essas funções de callback recebem os mesmos parâmetros que as funções de callback especificadas no método create.

Olha só que fácil:

// Obtém o participante com id 1 (vamos assumir que existe um registro com o id 1)
var p1:Participante = Rx.cached(Participante).withId(1);
// Modifica o e-mail do participante
p1.email = "novoemail@exemplo.com";
// Salva as alterações no banco de dados
p1.update( onUpdateSuccess, onUpdateFailure );

// Definição das funções de callback
private function onUpdateSuccess( participante:Participante ):void
{
	// Código que será executado quando o registro for atualizado com sucesso
}

private function onUpdateFailure( event:FaultEvent ):void
{
	// Código que será executado quando ocorrer um erro ao atualizar o registro
}

Acredito que qualquer explicação adicional seria redundante, não?!

Delete

Tão fácil quanto criar um registro é destruí-lo: usamos o método destroy do objeto, usando parâmetros idênticos aos usados até aqui: funções de callback que serão executadas quando o objeto for destruído com sucesso do banco de dados ou quando ocorrer um erro. Novamente, esses parâmetros são opcionais.

Vamos apagar o registro que atualizamos no exemplo anterior:

// Obtém o participante com id 1
var p1:Participante = Rx.cached(Participante).withId(1);
// Apaga o registro do banco de dados
p1.destroy( onDestroySuccess, onDestroyFailure );

// Definição das funções de callback
private function onDestroySuccess( participante:Participante ):void
{
	// Código que será executado quando o registro for apagado com sucesso
	Alert.show("O participante " + participante.nome + " foi excluído com sucesso.");
}

private function onDestroyFailure( event:FaultEvent ):void
{
	// Código que será executado quando ocorrer um erro ao apagar o registro
}

Veja que a função onDestroySuccess recebe um parâmetro do tipo Participante. Isso não parece estranho? Se estamos excluindo um registro, qual registro será retornado neste parâmetro? O objeto retornado é exatamente o registro excluído. Isso permite que você dê um “último adeus” ao registro excluído, assim como eu fiz na linha 10 do exemplo anterior, incluindo o nome do participante excluído na mensagem exibida ao usuário.

Conclusão

O que mais é possível concluir a partir desses exemplos? Com o RestfulX as tarefas repetitivas de CRUD (que compõem 90% de qualquer sistema – num “chute” pessoal) são feitas pelo computador, enquanto deixa você com mais tempo para se dedicar à inteligência e à interface do sistema. O que eu mostrei até aqui foi só o que chamamos carinhosamente de “CRUD-zinho básico”. Se fosse só isso, o RestfulX seria um “engessador” do sistema, mas ele também tem recursos para lidar com outras situações, inclusive aquelas que não se enquadram na filosofia REST do framework.

Se você quiser ver a documentação de todas as funções que mostrei nestes dois artigos (além de outras mais, claro), visite a documentação da API do RestfulX. A documentação dos métodos responsáveis pelas operações de CRUD estão disponíveis nesta página da documentação.

Em breve eu vou publicar a aplicação resultante desses exemplos. Siga-me! @elvisfernandes.

Comments 2

  1. Pingback: CRUD com o RestfulX: Parte 1/2 – Retrieve | Elvis Fernandes

  2. Pingback: CRUD com o RestfulX – aplicação funcionando | Elvis Fernandes

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *