Class: Parse::LiveQuery::Event

Inherits:
Object
  • Object
show all
Defined in:
lib/parse/live_query/event.rb

Overview

Represents an event received from the LiveQuery server. Events are emitted when objects matching a subscription’s query are created, updated, deleted, or enter/leave the query results.

Examples:

subscription.on(:update) do |event|
  puts "Object updated: #{event.object.id}"
  puts "Original state: #{event.original&.to_h}"
  puts "Event type: #{event.type}"
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type:, class_name:, object_data:, original_data: nil, request_id:, raw: {}) ⇒ Event

Create a new Event from a LiveQuery server message

Parameters:

  • type (Symbol)

    event type

  • class_name (String)

    Parse class name

  • object_data (Hash)

    object data from server

  • original_data (Hash, nil) (defaults to: nil)

    original object data (for update/enter/leave)

  • request_id (Integer)

    subscription request ID

  • raw (Hash) (defaults to: {})

    raw server payload



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/parse/live_query/event.rb', line 46

def initialize(type:, class_name:, object_data:, original_data: nil, request_id:, raw: {})
  @type = type.to_sym
  @class_name = class_name
  @request_id = request_id
  @received_at = Time.now
  @raw = raw

  # Convert object data to Parse::Object instances
  @object = build_object(class_name, object_data) if object_data
  @original = build_object(class_name, original_data) if original_data
end

Instance Attribute Details

#class_nameString (readonly)

Returns the Parse class name.

Returns:

  • (String)

    the Parse class name



31
32
33
# File 'lib/parse/live_query/event.rb', line 31

def class_name
  @class_name
end

#objectParse::Object (readonly)

Returns the object affected by this event (current state).

Returns:

  • (Parse::Object)

    the object affected by this event (current state)



22
23
24
# File 'lib/parse/live_query/event.rb', line 22

def object
  @object
end

#originalParse::Object? (readonly)

Returns the original state of the object (for :update, :enter, :leave).

Returns:

  • (Parse::Object, nil)

    the original state of the object (for :update, :enter, :leave)



25
26
27
# File 'lib/parse/live_query/event.rb', line 25

def original
  @original
end

#rawHash (readonly)

Returns raw payload from the server.

Returns:

  • (Hash)

    raw payload from the server



37
38
39
# File 'lib/parse/live_query/event.rb', line 37

def raw
  @raw
end

#received_atTime (readonly)

Returns when the event was received.

Returns:

  • (Time)

    when the event was received



34
35
36
# File 'lib/parse/live_query/event.rb', line 34

def received_at
  @received_at
end

#request_idInteger (readonly)

Returns the subscription request ID this event belongs to.

Returns:

  • (Integer)

    the subscription request ID this event belongs to



28
29
30
# File 'lib/parse/live_query/event.rb', line 28

def request_id
  @request_id
end

#typeSymbol (readonly)

Returns the type of event (:create, :update, :delete, :enter, :leave).

Returns:

  • (Symbol)

    the type of event (:create, :update, :delete, :enter, :leave)



19
20
21
# File 'lib/parse/live_query/event.rb', line 19

def type
  @type
end

Instance Method Details

#create?Boolean

Returns true if this is a create event.

Returns:

  • (Boolean)

    true if this is a create event



59
60
61
# File 'lib/parse/live_query/event.rb', line 59

def create?
  type == :create
end

#delete?Boolean

Returns true if this is a delete event.

Returns:

  • (Boolean)

    true if this is a delete event



69
70
71
# File 'lib/parse/live_query/event.rb', line 69

def delete?
  type == :delete
end

#enter?Boolean

Returns true if this is an enter event (object now matches query).

Returns:

  • (Boolean)

    true if this is an enter event (object now matches query)



74
75
76
# File 'lib/parse/live_query/event.rb', line 74

def enter?
  type == :enter
end

#leave?Boolean

Returns true if this is a leave event (object no longer matches query).

Returns:

  • (Boolean)

    true if this is a leave event (object no longer matches query)



79
80
81
# File 'lib/parse/live_query/event.rb', line 79

def leave?
  type == :leave
end

#parse_object_idString

Returns the Parse object ID.

Returns:

  • (String)

    the Parse object ID



84
85
86
# File 'lib/parse/live_query/event.rb', line 84

def parse_object_id
  object&.id
end

#to_hHash

Returns event as a hash.

Returns:

  • (Hash)

    event as a hash



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/parse/live_query/event.rb', line 89

def to_h
  {
    type: type,
    class_name: class_name,
    object_id: parse_object_id,
    request_id: request_id,
    received_at: received_at,
    object: object&.as_json,
    original: original&.as_json,
  }
end

#update?Boolean

Returns true if this is an update event.

Returns:

  • (Boolean)

    true if this is an update event



64
65
66
# File 'lib/parse/live_query/event.rb', line 64

def update?
  type == :update
end