npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

positiva-api-loader-plugin

v1.0.3

Published

Carrega os recursos de um aplicaçao da Positiva de forma semi-automatica

Downloads

3

Readme

positiva-api-loader-plugin

Carrega recursos de forma semi-automática. Esse plugin assume que alguns padrões estão sendo seguidos para funcionar.

Tabela de conteúdo

  1. Motivação
  2. O que é um recurso
  3. Padrões
  4. Limitações atuais
  5. Dependências
  6. Como importar
  7. Parâmetros
  8. Como usar
  9. Autor
  10. Licença

Motivação

A razão desse plugin existir é acelerar o desenvolvimento de aplicações da @Positiva, com a desvantagem de adicionar algumas restrições.

O que é um recurso

É uma tabela que possui os seguintes campos id, content, createdAt. O id é a chave primária da tabela, o createdAt é a timestamp em que o item foi inserido. O content é onde toda a informação útil de um item da tabela está.

Como exemplo de recurso, uma tabela chamada Produto. Essa tabela possui dois campos, o nome do produto e sua densidade. Um exemplo de item seria

{
    "id": "d8e331c4-7846-4031-bb23-9eca6be4e3b9",
    "content": {
      "name": "Água",
      "densidade": 997
    },
    "createAt": 1557404993
}

Tanto o id quanto o createdAt são gerados automaticamente na criação de um item.

Padrões

Ele funcionará com APIs e tabelas criados pela motherbox. Para mais informações consulte https://dev.positiva.app/docs/motherbox.

Limitações atuais

  • Só funciona com Vue;
  • Só funciona com a AWS;
  • Faz a comunicação através de uma API uma que usa o API Gateway como middleware para acessar e modificar dados do banco de dados;
  • Caso uma tabela dependa de outra, esse tratamento deverá ser feito na aplicação;
    • Por exemplo, um sistema de monitoramento de nível, que possui uma tabela chamada Tanquee tem possui um campo produto. Esse produto possui várias características, por isso ele possui sua própria tabela chamada Produto. Um item da tabela tanque terá um campo que contém uma referência para um item da tabela produto. Para acessar os detalhes daquele produto, terá que carregar os dados de ambas as tabelas e na aplicação descobrir essa informação.
  • Todos os dados da tabela são carregados, sempre que o positiva-api-loader é iniciado
    • Nesse sentido, o seu uso é so recomendado em tabelas que possuem e vão até centenas de items ou que são acessados de forma infrequente, o que em encaixa em alguns cenários de soluções oferecidas pela @Positiva.

Dependências

npm i aws-amplify

Como Importar

import PositivaAPILoader from 'positiva-api-loader-plugin';

Vue.use(PositivaAPILoader, {
  apiEndpointName: 'api',
  resourcesNames: ['locais', 'tanques', 'produtos']
});

Parâmetros

apiEndpointName

Nome do alias de um endpoint configurado no AWS Amplify em que a API está, como mostra o código abaixo.

import Amplify from 'aws-amplify';

Amplify.configure({
  API: {
    endpoints: [
      {
        name: 'api',
        endpoint: API_GATEWAY_URL,
        region: REGION
      }
    ]
  }
});

O parâmetro name acima é o valor de apiEndpointName. Para mais informações sobre como configurar o AWS Amplify e do porque consulte https://dev.positiva.app/docs/integracao-aws.

resourcesNames

Uma lista com os nomes dos recursos que serão carregados. Um recursos tem o mesmo nome que uma tabel, porém em lowercase.

Como Usar

Para iniciar o positiva-api-loader chame o seguinte método

// Carrega na aplicação todos os recursos
await this.$loader.init();

Após o método acima ter sido executado, para acessar dados de um recurso use a seguinte estrutura

this.$loader.<nome-do-recurso>.<atributo>

Atributos

add

/*
Adiciona um novo item na tabela

@body -> um objeto que possui um único campo chamado content, que possui os dados referente ao novo item
@return -> null
*/
async function add(body)

// por exemplo
await this.$loader.produtos.add({
    content: {
        name: 'Água',
        density: 977
    }
});

remove

/*
Remove um item da tabela

@id -> identificador do item a ser removido
@return -> null
*/
async function remove(id)

// por exemplo
await this.$loader.produtos.remove("d8e331c4-7846-4031-bb23-9eca6be4e3b9");

update

/*
Atualiza um item da tabela

@id -> identificador do item a ser atualizado
@content -> o novo contéudo que o item armazena. É importante passar todos os campos que deseja manter, mesmo que seu valor não foi atualizado
@return -> null
*/
async function update(id, content)

// por exemplo
await this.$loader.produtos.update("d8e331c4-7846-4031-bb23-9eca6be4e3b9", {
    name: "H20",
    density: "997"
});

data

Através desse atributos que é acessado os dados da tabela

console.log(this.$loader.produtos.data);

/*
[
    { name: "Água", density: 997 }, 
    { name: "Poliol 3030", density: 1012.5" },
    ...
]
*/

O plugin também oferece alguns métodos para acessar dados gerados por sensores, da seguinte forma

this.$measures.<atributo>

Atributos

/*
Acessa os dados produzidos por um sensor em um determinado intervalo de tempo.

@data -> nome do dado que um sensor está lendo. Por exemplo, temperatura
@id -> identificador do objeto que um sensor está lendo. Por exemplo, esse @objeto pode ser um Tanque
@begin -> timestamp do inicio do intervalo
@end -> timestamp do fim do intervalo
@return -> array com os dados
*/
async function getInterval(data, id, begin, end)

// por exemplo
const leituras = await this.$measures.getInterval(
    "nível", 
    "2675a4d2-0301-4320-ba04-990fc121a1e2",
    1557108803,
    1557408803
);

Autor

Renan Tashiro ([email protected])

Licença

AGPL-3.0