Class: NotionRubyMapping::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/notion_ruby_mapping/query.rb

Overview

Query object

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filter: {}, sort: [], page_size: 100, start_cursor: nil) ⇒ Query



6
7
8
9
10
11
# File 'lib/notion_ruby_mapping/query.rb', line 6

def initialize(filter: {}, sort: [], page_size: 100, start_cursor: nil)
  @filter = filter
  @sort = sort
  @page_size = page_size
  @start_cursor = start_cursor
end

Instance Attribute Details

#filterObject (readonly)

Returns the value of attribute filter.



12
13
14
# File 'lib/notion_ruby_mapping/query.rb', line 12

def filter
  @filter
end

#page_sizeObject (readonly)

Returns the value of attribute page_size.



12
13
14
# File 'lib/notion_ruby_mapping/query.rb', line 12

def page_size
  @page_size
end

#sortObject (readonly)

Returns the value of attribute sort.



12
13
14
# File 'lib/notion_ruby_mapping/query.rb', line 12

def sort
  @sort
end

#start_cursorObject

Returns the value of attribute start_cursor.



13
14
15
# File 'lib/notion_ruby_mapping/query.rb', line 13

def start_cursor
  @start_cursor
end

Instance Method Details

#and(other_query) ⇒ NotionRubyMapping::Query



17
18
19
20
21
22
23
24
# File 'lib/notion_ruby_mapping/query.rb', line 17

def and(other_query)
  if @filter.key? "and"
    @filter["and"] << other_query.filter
  else
    @filter = {"and" => [@filter, other_query.filter]}
  end
  self
end

#ascending(property) ⇒ NotionRubyMapping::Query



39
40
41
42
43
# File 'lib/notion_ruby_mapping/query.rb', line 39

def ascending(property)
  key = property.is_a?(LastEditedTimeProperty) || property.is_a?(CreatedTimeProperty) ? "timestamp" : "property"
  @sort << {key => property.name, "direction" => "ascending"}
  self
end

#descending(property) ⇒ NotionRubyMapping::Query



47
48
49
50
51
# File 'lib/notion_ruby_mapping/query.rb', line 47

def descending(property)
  key = property.is_a?(LastEditedTimeProperty) || property.is_a?(CreatedTimeProperty) ? "timestamp" : "property"
  @sort << {key => property.name, "direction" => "descending"}
  self
end

#or(other_query) ⇒ NotionRubyMapping::Query



28
29
30
31
32
33
34
35
# File 'lib/notion_ruby_mapping/query.rb', line 28

def or(other_query)
  if @filter.key? "or"
    @filter["or"] << other_query.filter
  else
    @filter = {"or" => [@filter, other_query.filter]}
  end
  self
end

#query_jsonHash



54
55
56
57
58
59
60
61
# File 'lib/notion_ruby_mapping/query.rb', line 54

def query_json
  parameters = {}
  parameters[:filter] = filter unless filter.empty?
  parameters[:sorts] = sort unless sort.empty?
  parameters[:start_cursor] = start_cursor if start_cursor
  parameters[:page_size] = page_size if page_size
  parameters
end