/doc/br/reference.md

http://github.com/keplerproject/orbit · Markdown · 182 lines · 117 code · 65 blank · 0 comment · 0 complexity · c977ff83c848e299bf486fa00f6ce867 MD5 · raw file

  1. ## Manual de ReferЖncia
  2. Este ж um pequeno manual de refЖncia dos mжtodos do Orbit e sua aplicaушes.
  3. ## Mзdulo `orbit`
  4. **orbit.new([*app*])** - cria uma nova aplicaусo Orbit, retornando esta (como um mзdulo).
  5. Se *app* for uma string este ж o nome da aplicaусo e define o campo\_NAME.
  6. Se *app* for uma tabela, esta serр usada no lugar de uma tabela vazia.
  7. Isso quer dizer que vocЖ pode passar `orbit.new` para a funусo `module`
  8. **orbit.htmlify(*func*[, *func*...])** - modifica o ambiente de *func* para incluir funушes que gerem HTML
  9. ## Aplicaушes Orbit
  10. **app.run(*wsapi\_env*)** - ponto de entrada WSAPI para aplicaушes, gerado pelo Orbit
  11. **app.real\_path** - A raiz da aplicaусo no sistema de arquivos,
  12. por default ж o path inferido pelo disparador WSAPI (`wsapi.app\_path`), mas pode ser redefinido
  13. **app.mapper** - mapeador usado pelo `app:model`, por default ж uma instРncia do `orbit.model`,
  14. mas pode ser invalidado
  15. **app.not\_found** - tratador padrсo, envia uma respota 404 para o cliente, pode ser redefinido.
  16. O handler recebe um objeto `web`
  17. **app.server\_error** - tratador de erro, envia uma resposta 500 com os detalhes de stack para o cliente,
  18. pode ser redefinido. O tratador recebe um objeto `web`
  19. **app:dispatch\_get(*func*, *patt*[, *patt*...])** - instala a funусo func* como um tratador de GET
  20. para os padrшes *patt*. *func* recebe um objeto `web` e capturas
  21. **app:dispatch\_post(*func*, *patt*[, *patt*...])** - instala *func* como um tratador de POST
  22. para os padrшes *patt*. *func* recebe um objeto `web` e capturas
  23. **app:dispatch\_wsapi(*func*, *patt*[, *patt*...])** - instala *func* como um tratador WSAPI
  24. para os padrшes *patt*. *func* recebe um objeto `web` e capturas
  25. **app:dispatch\_static(*patt*[, *patt*...])** - instala um tratador de arquivos estрticos
  26. para os padrшes *patt*. Este tratador assume que PATH\_INFO ж um arquivo relativo a
  27. `app.real_path` e o envia para o cliente. O tipo MIME ж detectado pela extensсo
  28. (sendo o padrсo application/octec-stream).
  29. **app:serve\_static(*web*, *filename*)** - retorna o conteЩdo do arquivo *filename*
  30. (que pode estar em qualquer lugar do sistema), e define os cabeуalhos apropriados
  31. de acordo com o tipo MIME do arquivo
  32. **app:htmlify(*patt*[, *patt*...])** - o mesmo que `orbit.htmlify`,
  33. mas altera todas funушes do mзdulo da aplicaусo que correspondem aos padrшes *patt*
  34. **app:model(...)** - chama `app.mapper:new(...)`,
  35. de forma que o comportamento depende do mapeador que vocЖ estiver usando
  36. ## Mжtodos `web'
  37. Os objetos *web* herdam as funушes do mзdulo `wsapi.util` como mжtodos
  38. **web.status** - status para ser enviado para o servidor (padrсo: "200 Ok")
  39. **web.headers** - cabeуalhos para serem enviados para o servidor,
  40. uma tabela Lua (que por padrсo tem Content-Type como text/html)
  41. **web.response** - corpo a ser enviado para o cliente (a princьpio vazio)
  42. **web.vars** - ambiente WSAPI original
  43. **web.prefix** - prefixo da aplicaусo (se determinado no mзdulo da aplicaусo) ou SCRIPT\_NAME
  44. **web.suffix** - sufixo da aplicaусo (se determinado no mзdulo da aplicaусo)
  45. **web.real\_path** - localizaусo da aplicaусo no sistema, obtido a partir de wsapi\_env.APP\_PATH,
  46. ou do real\_path do mзdulo, ou "."
  47. **web.doc\_root, web.path\_info, web.script\_name, web.path\_translated, web.method** -
  48. raiz de documentos do servidor, PATH\_INFO, SCRIPT\_NAME, PATH\_TRANSLATED,
  49. e REQUEST\_METHOD (convertido para minЩsculas)
  50. **web.GET, web.POST** - variрveis GET and POST
  51. **web.input** - uniсo de web.GET e web.POST
  52. **web.cookies** - cookies enviados pelo browser
  53. **web:set\_cookie(*name*, *value*)** - define um cookie a ser enviado de volta ao browser
  54. **web:delete\_cookie(*name*)** - apaga um cookie
  55. **web:redirect(*url*)** - define o status e cabeуalhos e redireciona o cliente para *url*
  56. **web:link(*part*, [*params*])** - cria um link interno da aplicaусo,
  57. utilizando web.prefix e web.suffix, e codificando *params* como uma query string
  58. **web:static\_link(*part*)** - se o ponto de entrada de uma aplicaусo ж um script,
  59. ao invжs de um path, cria um link para o vpath da aplicaусo
  60. (por exemplo, se o app.prefix for /foo/app.ws, cria um link para /foo/*part*),
  61. caso contrрrio equivale a web:link
  62. **web:empty(*s*)** - retorna true se *s* for nil ou uma string vazia (com zero ou mais espaуos)
  63. **web:empty\_param(*name*)** - retorna true se os parРmetros de entrada forem vazios (como web:empty)
  64. **web:page(*name*, [*env*])** - carrega e trata uma pрgina Orbit de nome *name*.
  65. Se *name* se inicia com / a pрgina ж relativa Я raiz de documentos,
  66. caso contrрrio ж relativa ao path da aplicaусo. Retorna a pрgina tratada.
  67. *env* ж um ambiente opcional com variрveis extra
  68. **web:page_inline(*contents*, [*env*])** - trata uma pрgina Orbit embutida
  69. ## Mзdulo `orbit.cache`
  70. **orbit.cache.new(*app*, [*base\_path*])** - cria um cache de pрginas para a aplicaусo *app*,
  71. em memзria ou no sistema de arquivos como *base\_path* (*nсo* relativo ao path da aplicaусo!),
  72. retorna o objeto de cache
  73. **a\_cache(*handler*)** - torna o tratador *handler* cacheado, retornando um novo tratador;
  74. utiliza o PATH\_INFO como chave do cache
  75. **a\_cache:get(*key*)** - obtжm o valor armazenado na chave *key*;
  76. geralmente nсo utilizada, use a funусo anterior
  77. **a\_cache:set(*key*, *val*)** - armazena um valor no cache;
  78. use a\_cache(*handler*) para encapsular este comportamento
  79. **a\_cache:invalidate(*key*)** - invalida um valor do cache
  80. **a\_cache:nuke()** - esvazia o cache
  81. ## Mзdulo `orbit.model`
  82. **orbit.model.new([*table\_prefix*], [*conn*], [*driver*])** - cria um novo mapeamento ORM (objeto relacional).
  83. *table\_prefix* (padrсo "") ж uma string adicionada ao inьcio dos nomes de modelos para obter nomes de tabelas;
  84. *conn* ж a conexсo de banco de dados (pode ser definida posteriormente);
  85. *driver* ж o tipo de banco de dados (atualmente "sqlite3", o padrсo, ou "mysql").
  86. Retorna uma instРncia do mapeador e todos os parРmetros podem ser definidos
  87. apзs a criaусo desta instРncia (utilizando a\_mapper.table\_prefix, a\_mapper.conn e a\_mapper.driver)
  88. **a\_mapper:new(*name*, [*tab*])** - cria um novo objeto de modelo;
  89. *name* ж usado junto com a\_mapper.table\_prefix para formar o nome da tabela no banco de dados;
  90. campos e tipos sсo instrospectados a partir da tabela.
  91. *tab* ж uma tabela opcional que ж usada como base para o objeto modelo, caso exista
  92. **a\_model.model** - o mapeador para este modelo
  93. **a\_model.name, a\_model.table\_name** - o nome do modelo e de sua tabela de armazenamento
  94. **a\_model.driver** - o driver de banco de dados utilizado
  95. **a\_model.meta** - metainformaусo sobre o modelo, instrospectada a partir da tabela de dados
  96. **a\_model:find(*id*)** - busca e retorna a instРncia do modelo com o *id* passado
  97. (indexado atravжs da coluna `id`, numжrica,а da tabela)
  98. **a\_model:find\_first(*condition*, *args*)** - busca e retorna a primeira instРncia do modelo
  99. que corresponde Я condiусo *condition*; *args* pode determinar a ordem (args.order) ou injetar
  100. campos de outras tabelas (args.inject)
  101. Exemplo: `books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" })`
  102. **a\_model:find\_all(*condition*, *args*)** - busca e retorna todas as instРncias do modelo que correspondem
  103. Я condiусo *condition*; *args* pode determinar a ordem (args.order) ou injetar campos de outras tabelas
  104. (args.inject)
  105. **a\_model:new([*tab*])** - cria uma nova instРncia do modelo, opcionalmente usando *tab*
  106. como os valores iniciais
  107. **a\_model:find\_by\_xxx(*args*)** - busca e retorna a primeira instРncia do modelo montando
  108. a condiусo a partir do nome do mжtodo, como no ActiveRecord do Rails
  109. **a\_model:find\_all\_by\_xxx(*args*)** - busca e retorna todas as instРncias do modelo montando
  110. a condiусo a partir do nome do mжtodo, como no ActiveRecord do Rails
  111. Exemplo: `books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" }`
  112. **an\_instance:save([*force\_insert*])** - grava uma instРncia no banco de dados,
  113. atualizando as mudanуas ou criando um novo registro caso a instРncia seja nova;
  114. se *force\_insert* for true sempre faz uma inserусo antes de uma atualizaусo
  115. Se existir uma coluna chamada `created_at` esta linha ж definida como a data de criaусo do registro;
  116. se existir uma coluna chamada `updated_at`, esta linha ж definida como a data de Щltima atualizaусo do registro.
  117. **an\_instance:delete()** - remove uma instРncia do banco de dados