/doc/br/reference.md
http://github.com/keplerproject/orbit · Markdown · 182 lines · 117 code · 65 blank · 0 comment · 0 complexity · c977ff83c848e299bf486fa00f6ce867 MD5 · raw file
- ## Manual de ReferЖncia
- Este ж um pequeno manual de refЖncia dos mжtodos do Orbit e sua aplicaушes.
- ## Mзdulo `orbit`
- **orbit.new([*app*])** - cria uma nova aplicaусo Orbit, retornando esta (como um mзdulo).
- Se *app* for uma string este ж o nome da aplicaусo e define o campo\_NAME.
- Se *app* for uma tabela, esta serр usada no lugar de uma tabela vazia.
- Isso quer dizer que vocЖ pode passar `orbit.new` para a funусo `module`
- **orbit.htmlify(*func*[, *func*...])** - modifica o ambiente de *func* para incluir funушes que gerem HTML
- ## Aplicaушes Orbit
- **app.run(*wsapi\_env*)** - ponto de entrada WSAPI para aplicaушes, gerado pelo Orbit
- **app.real\_path** - A raiz da aplicaусo no sistema de arquivos,
- por default ж o path inferido pelo disparador WSAPI (`wsapi.app\_path`), mas pode ser redefinido
- **app.mapper** - mapeador usado pelo `app:model`, por default ж uma instРncia do `orbit.model`,
- mas pode ser invalidado
- **app.not\_found** - tratador padrсo, envia uma respota 404 para o cliente, pode ser redefinido.
- O handler recebe um objeto `web`
- **app.server\_error** - tratador de erro, envia uma resposta 500 com os detalhes de stack para o cliente,
- pode ser redefinido. O tratador recebe um objeto `web`
- **app:dispatch\_get(*func*, *patt*[, *patt*...])** - instala a funусo func* como um tratador de GET
- para os padrшes *patt*. *func* recebe um objeto `web` e capturas
- **app:dispatch\_post(*func*, *patt*[, *patt*...])** - instala *func* como um tratador de POST
- para os padrшes *patt*. *func* recebe um objeto `web` e capturas
- **app:dispatch\_wsapi(*func*, *patt*[, *patt*...])** - instala *func* como um tratador WSAPI
- para os padrшes *patt*. *func* recebe um objeto `web` e capturas
- **app:dispatch\_static(*patt*[, *patt*...])** - instala um tratador de arquivos estрticos
- para os padrшes *patt*. Este tratador assume que PATH\_INFO ж um arquivo relativo a
- `app.real_path` e o envia para o cliente. O tipo MIME ж detectado pela extensсo
- (sendo o padrсo application/octec-stream).
- **app:serve\_static(*web*, *filename*)** - retorna o conteЩdo do arquivo *filename*
- (que pode estar em qualquer lugar do sistema), e define os cabeуalhos apropriados
- de acordo com o tipo MIME do arquivo
- **app:htmlify(*patt*[, *patt*...])** - o mesmo que `orbit.htmlify`,
- mas altera todas funушes do mзdulo da aplicaусo que correspondem aos padrшes *patt*
- **app:model(...)** - chama `app.mapper:new(...)`,
- de forma que o comportamento depende do mapeador que vocЖ estiver usando
- ## Mжtodos `web'
- Os objetos *web* herdam as funушes do mзdulo `wsapi.util` como mжtodos
- **web.status** - status para ser enviado para o servidor (padrсo: "200 Ok")
- **web.headers** - cabeуalhos para serem enviados para o servidor,
- uma tabela Lua (que por padrсo tem Content-Type como text/html)
- **web.response** - corpo a ser enviado para o cliente (a princьpio vazio)
- **web.vars** - ambiente WSAPI original
- **web.prefix** - prefixo da aplicaусo (se determinado no mзdulo da aplicaусo) ou SCRIPT\_NAME
- **web.suffix** - sufixo da aplicaусo (se determinado no mзdulo da aplicaусo)
- **web.real\_path** - localizaусo da aplicaусo no sistema, obtido a partir de wsapi\_env.APP\_PATH,
- ou do real\_path do mзdulo, ou "."
- **web.doc\_root, web.path\_info, web.script\_name, web.path\_translated, web.method** -
- raiz de documentos do servidor, PATH\_INFO, SCRIPT\_NAME, PATH\_TRANSLATED,
- e REQUEST\_METHOD (convertido para minЩsculas)
- **web.GET, web.POST** - variрveis GET and POST
- **web.input** - uniсo de web.GET e web.POST
- **web.cookies** - cookies enviados pelo browser
- **web:set\_cookie(*name*, *value*)** - define um cookie a ser enviado de volta ao browser
- **web:delete\_cookie(*name*)** - apaga um cookie
- **web:redirect(*url*)** - define o status e cabeуalhos e redireciona o cliente para *url*
- **web:link(*part*, [*params*])** - cria um link interno da aplicaусo,
- utilizando web.prefix e web.suffix, e codificando *params* como uma query string
- **web:static\_link(*part*)** - se o ponto de entrada de uma aplicaусo ж um script,
- ao invжs de um path, cria um link para o vpath da aplicaусo
- (por exemplo, se o app.prefix for /foo/app.ws, cria um link para /foo/*part*),
- caso contrрrio equivale a web:link
- **web:empty(*s*)** - retorna true se *s* for nil ou uma string vazia (com zero ou mais espaуos)
- **web:empty\_param(*name*)** - retorna true se os parРmetros de entrada forem vazios (como web:empty)
- **web:page(*name*, [*env*])** - carrega e trata uma pрgina Orbit de nome *name*.
- Se *name* se inicia com / a pрgina ж relativa Я raiz de documentos,
- caso contrрrio ж relativa ao path da aplicaусo. Retorna a pрgina tratada.
- *env* ж um ambiente opcional com variрveis extra
- **web:page_inline(*contents*, [*env*])** - trata uma pрgina Orbit embutida
- ## Mзdulo `orbit.cache`
- **orbit.cache.new(*app*, [*base\_path*])** - cria um cache de pрginas para a aplicaусo *app*,
- em memзria ou no sistema de arquivos como *base\_path* (*nсo* relativo ao path da aplicaусo!),
- retorna o objeto de cache
- **a\_cache(*handler*)** - torna o tratador *handler* cacheado, retornando um novo tratador;
- utiliza o PATH\_INFO como chave do cache
- **a\_cache:get(*key*)** - obtжm o valor armazenado na chave *key*;
- geralmente nсo utilizada, use a funусo anterior
- **a\_cache:set(*key*, *val*)** - armazena um valor no cache;
- use a\_cache(*handler*) para encapsular este comportamento
- **a\_cache:invalidate(*key*)** - invalida um valor do cache
- **a\_cache:nuke()** - esvazia o cache
- ## Mзdulo `orbit.model`
- **orbit.model.new([*table\_prefix*], [*conn*], [*driver*])** - cria um novo mapeamento ORM (objeto relacional).
- *table\_prefix* (padrсo "") ж uma string adicionada ao inьcio dos nomes de modelos para obter nomes de tabelas;
- *conn* ж a conexсo de banco de dados (pode ser definida posteriormente);
- *driver* ж o tipo de banco de dados (atualmente "sqlite3", o padrсo, ou "mysql").
- Retorna uma instРncia do mapeador e todos os parРmetros podem ser definidos
- apзs a criaусo desta instРncia (utilizando a\_mapper.table\_prefix, a\_mapper.conn e a\_mapper.driver)
- **a\_mapper:new(*name*, [*tab*])** - cria um novo objeto de modelo;
- *name* ж usado junto com a\_mapper.table\_prefix para formar o nome da tabela no banco de dados;
- campos e tipos sсo instrospectados a partir da tabela.
- *tab* ж uma tabela opcional que ж usada como base para o objeto modelo, caso exista
- **a\_model.model** - o mapeador para este modelo
- **a\_model.name, a\_model.table\_name** - o nome do modelo e de sua tabela de armazenamento
- **a\_model.driver** - o driver de banco de dados utilizado
- **a\_model.meta** - metainformaусo sobre o modelo, instrospectada a partir da tabela de dados
- **a\_model:find(*id*)** - busca e retorna a instРncia do modelo com o *id* passado
- (indexado atravжs da coluna `id`, numжrica,а da tabela)
- **a\_model:find\_first(*condition*, *args*)** - busca e retorna a primeira instРncia do modelo
- que corresponde Я condiусo *condition*; *args* pode determinar a ordem (args.order) ou injetar
- campos de outras tabelas (args.inject)
- Exemplo: `books:find_first("author = ? and year_pub > ?", { "John Doe", 1995, order = "year_pub asc" })`
- **a\_model:find\_all(*condition*, *args*)** - busca e retorna todas as instРncias do modelo que correspondem
- Я condiусo *condition*; *args* pode determinar a ordem (args.order) ou injetar campos de outras tabelas
- (args.inject)
- **a\_model:new([*tab*])** - cria uma nova instРncia do modelo, opcionalmente usando *tab*
- como os valores iniciais
- **a\_model:find\_by\_xxx(*args*)** - busca e retorna a primeira instРncia do modelo montando
- a condiусo a partir do nome do mжtodo, como no ActiveRecord do Rails
- **a\_model:find\_all\_by\_xxx(*args*)** - busca e retorna todas as instРncias do modelo montando
- a condiусo a partir do nome do mжtodo, como no ActiveRecord do Rails
- Exemplo: `books:find_all_by_author_or_author{ "John Doe", "Jane Doe", order = "year_pub asc" }`
- **an\_instance:save([*force\_insert*])** - grava uma instРncia no banco de dados,
- atualizando as mudanуas ou criando um novo registro caso a instРncia seja nova;
- se *force\_insert* for true sempre faz uma inserусo antes de uma atualizaусo
- Se existir uma coluna chamada `created_at` esta linha ж definida como a data de criaусo do registro;
- se existir uma coluna chamada `updated_at`, esta linha ж definida como a data de Щltima atualizaусo do registro.
- **an\_instance:delete()** - remove uma instРncia do banco de dados