Skip to content

beep-saude/beep-events-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Beep::EventsManager

Installation

gem "beep-events_manager", :github => "beep-saude/beep-events-manager", :tag => "1.0.1"

Criando o database

CREATE DATABASE beep_events;
CREATE TABLE events (id bigserial primary key, object_id integer, date timestamp, event_name varchar(100), event_data jsonb, object_domain varchar(30), object_type varchar(30));
ALTER TABLE events ALTER COLUMN object_domain TYPE varchar(100);
ALTER TABLE events ALTER COLUMN object_type TYPE varchar(100);
CREATE INDEX CONCURRENTLY events_object_id_and_object_type_idx ON events(object_id, object_type);
CREATE INDEX CONCURRENTLY events_date_idx ON events(date);

crie o arquivo de configuração no initializer event_manager_config.rb

config = Beep::EventsManager::Config.instance
config.object_domain = "app-name"
config.configure_with({ dbname: "beep_events", user: "", host: "localhost", sslmode: 'disable'})

Usage

Publicar um evento

  events_service = Beep::EventsManager::EventsService.new
  events_service.publish( event_name: "seu-evento", object_id: 1, object_type: "Call", object_data: { foo: "bar" } )

Listar os eventos de um objeto

  events_service = Beep::EventsManager::EventsService.new
  events_service.list_events( object_id: 1, object_type: "Call", object_domain: "app-name" )

Corrigir problema de tabela de eventos com id sem pk

Remover ids duplicados

DELETE FROM events
  WHERE ctid = ANY(ARRAY(SELECT ctid
                  FROM (SELECT row_number() OVER (PARTITION BY id), ctid
                           FROM events) x
                 WHERE x.row_number > 1));

Alterar a tabela para adicionar primary key

ALTER TABLE events ADD PRIMARY KEY (id);