Git Product home page Git Product logo

fvi-dynamoose-repository's Introduction

WARN

Diretório app/utils foi migrado para a biblioteca fvi-dynamoose-utils.

fvi-dynamoose-repository

  • npm run compile: Executa a limpeza dos arquivos e diretorios.
  • npm run debug-test: Executa os testes unitários com o DEBUG ativo.
  • npm run test: Executa os testes unitários.
  • npm run debug-dev: Executa os testes unitários e espera por alterações com o DEBUG ativo.
  • npm run dev: Executa os testes unitários e espera por alterçãoes.
  • npm run prod: Executa o código com NODE_ENV=production.
  • npm run coverage: Executa os testes unitários e retorna o nyc
  • npm run release: Inicia uma nova release de versão incrementando o patch, git flow release start.
  • npm run release:minor: Inicia uma nova release de versão incrementando o minor, git flow release start.
  • npm run release:major: Inicia uma nova release de versão incrementando o major, git flow release start.
  • npm run release:finish: Finaliza a release, ou seja, realiza o git flow release finish.

FVI - Dynamoose Repository

Biblioteca que implementa funções utilitárias utilizando a biblioteca dynamoose.js.

Configuração

Se invocarmos a função principal sem passar a configuração será usado o diretório ./config para buscar os arquivos de configuração, development.json, test.json, etc.

Esta biblioteca utiliza uma instância da biblioteca node-convict.js, ou qualquer outra biblioteca de configurações que respeitar o contrato abaixo:

config.get('prop1.prop2.prop3'): Object
config.has('prop1.prop2.prop3'): Boolean

Exemplo de outra biblioteca que pode ser utilizada é node-config.js

Existe um contrato para as propriedades em um arquivo de configuração para o funcionamento correto deste módulo, devemos configurar as informações como o exemplo, convict, abaixo:

{
    "dynamoose": {
        "accessKeyId": {
            "doc": "AWS Access Key ID",
            "format": String,
            "default": "fake-access-key",
            "env": "AWS_ACCESS_KEY_ID",
            "arg": "aws-access-key-id"
        },
        "secretAccessKey": {
            "doc": "AWS Secret Access Key",
            "format": String,
            "default": "fake-secret-key",
            "env": "AWS_SECRET_ACCESS_KEY",
            "arg": "aws-secret-access-key"
        },
        "region": {
            "doc": "AWS DynamoDB Region",
            "format": String,
            "default": "us-east-1",
            "env": "AWS_REGION",
            "arg": "aws-region"
        },
        "prefix": {
            "doc": "DynamoDB table prefix name.",
            "format": String,
            "default": "",
            "env": "DYNAMO_TABLE_PREFIX",
            "arg": "dynamo-table-prefix"
        },
        "suffix": {
            "doc": "DynamoDB table suffix name.",
            "format": String,
            "default": "",
            "env": "DYNAMO_TABLE_SUFFIX",
            "arg": "dynamo-table-suffix"
        },
        "dynalite": {
            "doc": "DynamoDB local with Dynalite!.",
            "format": Boolean,
            "default": false,
            "env": "DYNAMO_LOCAL_WITH_DYNALITE",
            "arg": "dynamo-local-with-dynalite"
        },
        "options": {
            "doc": "The dynamoose options.",
            "format": Object,
            "default": {}
        }
    }
}

Mode de Usar

const app = require('fvi-dynamoose-repository')

const repository = app(config)

const model = repository.map('Model Test 1', modelSchema, schemaOpts).get('Model Test 1')

model.save({ id: 1, nome: 'Test 1', documento: '123123123' })

Repository Object

Executando a função principal exportada por este módulo recebemos um Object para mapearmos modelos, ou tabelas, no dynamodb. Além de conseguir recuperar o modelo pelo nome utilizado no mapeamento. É utilizado o formato String.slugify, ex. Model 1 2 tes t -> model-1-2-tes-t no nome do modelo para evitarmos problemas de inconsistência no nome do modelo escolhido.

const repository = app(config)

const repository = repository
    .map('model-1', model1schema, model1schemaOpts)
    .map('model-2', model2schema, model2schemaOpts)

const model1 = repository.get('model-1')
// const model1 = repository.get('Model 1')

const model2 = repository.get('model-2')
// const model2 = repository.get('mOdeL_2')

Model Object

Quando criamos uma inst

  • model.name: Retorna a string representando o nome do modelo sendo trabalhado.
  • model.create({}): Cria um novo registro na base de dados para este modelo, ou tabela.
  • model.update({}, {}): Atualiza um registro na base de dados para este modelo à partir da chave, ver chaves no DynamoDB.
  • model.delete({}): Deleta um registro na base de dados para este modelo à partir da chave, ver chaves no DynamoDB.
  • model.get({}): Recupera um registro da base de dados para este modelo através da chave, ver chaves no DynamoDB.
  • model.query.equals({}): Recupera os registros que respeitam os filtros passados como parâmetro para esta função no Object.
  • model.scan.all(): Retorna uma paginação da listagem completa de registros na base de dados para este modelo, ou tabela.
  • model.query.from: Retorna o Object Model.query do dynamoose.
  • model.scan.from: Retorna o Object Model.scan do dynamoose.

Model Schema Object

Model Schema Options Object

Dynamosse Options

fvi-dynamoose-repository's People

Contributors

salespaulo avatar

Stargazers

Roman avatar  avatar

Watchers

 avatar James Cloos avatar

Forkers

wooodhead

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.