Socket
Book a DemoInstallSign in
Socket

functionator

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

functionator

0.1.1
bundlerRubygems
Version published
Maintainers
1
Created
Source

Functionator

Uma gem Ruby multi-funcional que fornece diversas funcionalidades organizadas em módulos, incluindo um cliente MongoDB com padrão Singleton e operações comuns de banco de dados.

Instalação

Adicione esta linha ao seu Gemfile:

gem 'functionator'

E execute:

$ bundle install

Ou instale diretamente:

$ gem install functionator

Configuração

Configure as variáveis de ambiente para conexão com MongoDB:

# Opção 1: Variáveis padrão
export USER=seu_usuario_mongodb
export PASSWORD=sua_senha_mongodb
export HOST=seu_host_mongodb
export DATABASE=seu_database_mongodb

# Opção 2: Variáveis específicas do MongoDB
export MONGODB_USER=seu_usuario_mongodb
export MONGODB_PASSWORD=sua_senha_mongodb
export MONGODB_HOST=seu_host_mongodb
export MONGODB_DATABASE=seu_database_mongodb

Uso

Básico

require 'functionator'

# Usando o módulo MongoDB com padrão Singleton
client = Functionator.mongodb

# Ou acessando diretamente
client = Functionator::MongoDB::Client.instance

# Ou criando uma nova instância com string de conexão customizada
client = Functionator::MongoDB::Client.new("mongodb://localhost:27017/meu_database")

Operações CRUD

# Inserir múltiplos documentos
data = [
  { name: "João", age: 30 },
  { name: "Maria", age: 25 }
]
client.insert_many("users", data)

# Buscar documentos
users = client.find("users", { age: { "$gte" => 25 } })

# Buscar com ordenação e limite
recent_users = client.find_sort("users", {}, { created_at: -1 }, 10)

# Atualizar documento
client.update("users", { name: "João" }, { "$set" => { age: 31 } })

Operações Especializadas

# Contar status de requests (método específico do domínio)
status_counts = client.count_status_requests("requests")

# Upsert de logs
document = { ms: 1234567890, message: "Log entry", created_at: Time.now }
client.upsert_log_to_mongo("logs", document)

# Buscar grupos de log
log_groups = client.fetch_log_groups_from_mongo

# Obter última execução
last_run = client.get_last_run_from_mongo("executions", 1234567890)

Métodos Disponíveis

  • insert_many(collection_name, data) - Insere múltiplos documentos
  • find(collection_name, query) - Busca documentos
  • find_sort(collection_name, query, sort, limit) - Busca com ordenação e limite
  • update(collection_name, query, update_query) - Atualiza documento
  • update_log_group(collection_name, query, update_query, upsert: false) - Atualiza com opção de upsert
  • count_status_requests(collection_name) - Conta status de requests por domínio
  • upsert_log_to_mongo(collection_name, document) - Upsert de logs
  • upsert_log_to_mongo_log_group(collection_name, document) - Upsert de grupos de log
  • fetch_log_groups_from_mongo - Busca grupos de log
  • get_last_run_from_mongo(collection_name, ms) - Obtém última execução

Desenvolvimento

Após clonar o repositório:

$ bundle install
$ rake spec  # Para executar os testes

Contribuição

  • Faça um Fork do projeto
  • Crie uma branch para sua feature (git checkout -b my-new-feature)
  • Commit suas mudanças (git commit -am 'Add some feature')
  • Push para a branch (git push origin my-new-feature)
  • Crie um Pull Request

Licença

Esta gem está disponível como código aberto sob os termos da Licença MIT.

FAQs

Package last updated on 21 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.