notion_ruby_mapping 0.1.3 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Guardfile +1 -1
 - data/README.md +550 -197
 - data/env.yml.sample +7 -0
 - data/lib/notion_ruby_mapping/base.rb +45 -25
 - data/lib/notion_ruby_mapping/checkbox_property.rb +26 -0
 - data/lib/notion_ruby_mapping/created_by_property.rb +21 -0
 - data/lib/notion_ruby_mapping/created_time_property.rb +20 -0
 - data/lib/notion_ruby_mapping/database.rb +8 -8
 - data/lib/notion_ruby_mapping/date_base_property.rb +40 -38
 - data/lib/notion_ruby_mapping/date_property.rb +42 -18
 - data/lib/notion_ruby_mapping/email_property.rb +30 -1
 - data/lib/notion_ruby_mapping/files_property.rb +40 -0
 - data/lib/notion_ruby_mapping/formula_property.rb +18 -0
 - data/lib/notion_ruby_mapping/last_edited_by_property.rb +21 -0
 - data/lib/notion_ruby_mapping/last_edited_time_property.rb +20 -0
 - data/lib/notion_ruby_mapping/list.rb +41 -2
 - data/lib/notion_ruby_mapping/mention_object.rb +49 -0
 - data/lib/notion_ruby_mapping/multi_select_property.rb +25 -6
 - data/lib/notion_ruby_mapping/notion_cache.rb +126 -53
 - data/lib/notion_ruby_mapping/number_property.rb +13 -8
 - data/lib/notion_ruby_mapping/page.rb +5 -2
 - data/lib/notion_ruby_mapping/payload.rb +10 -2
 - data/lib/notion_ruby_mapping/people_property.rb +38 -0
 - data/lib/notion_ruby_mapping/phone_number_property.rb +30 -1
 - data/lib/notion_ruby_mapping/property.rb +79 -43
 - data/lib/notion_ruby_mapping/property_cache.rb +31 -12
 - data/lib/notion_ruby_mapping/query.rb +5 -2
 - data/lib/notion_ruby_mapping/relation_property.rb +37 -0
 - data/lib/notion_ruby_mapping/rich_text_object.rb +74 -0
 - data/lib/notion_ruby_mapping/rich_text_property.rb +18 -0
 - data/lib/notion_ruby_mapping/rollup_property.rb +29 -0
 - data/lib/notion_ruby_mapping/select_property.rb +12 -6
 - data/lib/notion_ruby_mapping/text_object.rb +89 -0
 - data/lib/notion_ruby_mapping/text_property.rb +61 -0
 - data/lib/notion_ruby_mapping/title_property.rb +18 -0
 - data/lib/notion_ruby_mapping/url_property.rb +30 -1
 - data/lib/notion_ruby_mapping/user_object.rb +38 -0
 - data/lib/notion_ruby_mapping/version.rb +2 -1
 - data/lib/notion_ruby_mapping.rb +3 -3
 - data/notion_ruby_mapping.gemspec +3 -1
 - metadata +40 -7
 
    
        data/env.yml.sample
    CHANGED
    
    | 
         @@ -1,6 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            notion_token: "secret_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
         
     | 
| 
       3 
3 
     | 
    
         
             
            top_page: "c01166c613ae45cbb96818b4ef2f5a77"
         
     | 
| 
      
 4 
     | 
    
         
            +
            unpermitted_page: "4a6eb31244204fecb488da11f3caf871"
         
     | 
| 
       4 
5 
     | 
    
         
             
            database: "c37a2c66e3aa4a0da44773de3b80c253"
         
     | 
| 
      
 6 
     | 
    
         
            +
            unpermitted_database: "668d797c76fa49349b05ad288df2d136"
         
     | 
| 
       5 
7 
     | 
    
         
             
            h1block: "0250fb6d600142eca4c74efb8794fc6b"
         
     | 
| 
      
 8 
     | 
    
         
            +
            unpermitted_block: "0c940186ab704351bb342d16f0635d49"
         
     | 
| 
       6 
9 
     | 
    
         
             
            db_first_page: "dcdc805c85fa4155a55c20fc28771af7"
         
     | 
| 
      
 10 
     | 
    
         
            +
            db_second_page: "6601e719a39a460c908e8909467fcccf"
         
     | 
| 
      
 11 
     | 
    
         
            +
            db_update_page: "206ffaa277744a99baf593e28730240c"
         
     | 
| 
      
 12 
     | 
    
         
            +
            user_hkob: "2200a911-6a96-44bb-bd38-6bfb1e01b9f6"
         
     | 
| 
      
 13 
     | 
    
         
            +
            parent1_page: "860753bb6d1f48de96211fa6e0e31f82"
         
     | 
| 
         @@ -3,12 +3,18 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
       4 
4 
     | 
    
         
             
              # Notion Base object (Parent of Page / Database / List)
         
     | 
| 
       5 
5 
     | 
    
         
             
              class Base
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                # @param [Hash, nil] json
         
     | 
| 
      
 7 
     | 
    
         
            +
                # @param [String, nil] id
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [Array<Property, Class, String>] assign
         
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(json: nil, id: nil, assign: [])
         
     | 
| 
       7 
10 
     | 
    
         
             
                  @nc = NotionCache.instance
         
     | 
| 
       8 
11 
     | 
    
         
             
                  @json = json
         
     | 
| 
       9 
     | 
    
         
            -
                  @id = @nc.hex_id(id || @json["id"])
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @id = @nc.hex_id(id || json && @json["id"])
         
     | 
| 
      
 13 
     | 
    
         
            +
                  raise StandardError, "Unknown id" if !is_a?(List) && @id.nil?
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       10 
15 
     | 
    
         
             
                  @payload = nil
         
     | 
| 
       11 
16 
     | 
    
         
             
                  @property_cache = nil
         
     | 
| 
      
 17 
     | 
    
         
            +
                  assign.each_slice(2) { |(klass, key)| assign_property(klass, key) }
         
     | 
| 
       12 
18 
     | 
    
         
             
                end
         
     | 
| 
       13 
19 
     | 
    
         
             
                attr_reader :json, :id
         
     | 
| 
       14 
20 
     | 
    
         | 
| 
         @@ -25,7 +31,7 @@ module NotionRubyMapping 
     | 
|
| 
       25 
31 
     | 
    
         
             
                  when "block"
         
     | 
| 
       26 
32 
     | 
    
         
             
                    Block.new json: json
         
     | 
| 
       27 
33 
     | 
    
         
             
                  else
         
     | 
| 
       28 
     | 
    
         
            -
                     
     | 
| 
      
 34 
     | 
    
         
            +
                    raise StandardError, json.inspect
         
     | 
| 
       29 
35 
     | 
    
         
             
                  end
         
     | 
| 
       30 
36 
     | 
    
         
             
                end
         
     | 
| 
       31 
37 
     | 
    
         | 
| 
         @@ -38,7 +44,7 @@ module NotionRubyMapping 
     | 
|
| 
       38 
44 
     | 
    
         
             
                def properties
         
     | 
| 
       39 
45 
     | 
    
         
             
                  unless @property_cache
         
     | 
| 
       40 
46 
     | 
    
         
             
                    unless @json
         
     | 
| 
       41 
     | 
    
         
            -
                       
     | 
| 
      
 47 
     | 
    
         
            +
                      raise StandardError, "Unknown id" if @id.nil?
         
     | 
| 
       42 
48 
     | 
    
         | 
| 
       43 
49 
     | 
    
         
             
                      reload
         
     | 
| 
       44 
50 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -47,6 +53,11 @@ module NotionRubyMapping 
     | 
|
| 
       47 
53 
     | 
    
         
             
                  @property_cache
         
     | 
| 
       48 
54 
     | 
    
         
             
                end
         
     | 
| 
       49 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                # @return [String] title
         
     | 
| 
      
 57 
     | 
    
         
            +
                def title
         
     | 
| 
      
 58 
     | 
    
         
            +
                  properties.select { |p| p.is_a? TitleProperty }.map(&:full_text).join ""
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       50 
61 
     | 
    
         
             
                # @return [NotionRubyMapping::Base] reloaded self
         
     | 
| 
       51 
62 
     | 
    
         
             
                def reload
         
     | 
| 
       52 
63 
     | 
    
         
             
                  update_json reload_json
         
     | 
| 
         @@ -66,39 +77,44 @@ module NotionRubyMapping 
     | 
|
| 
       66 
77 
     | 
    
         
             
                # @param [Hash] json
         
     | 
| 
       67 
78 
     | 
    
         
             
                # @return [NotionRubyMapping::Base]
         
     | 
| 
       68 
79 
     | 
    
         
             
                def update_json(json)
         
     | 
| 
       69 
     | 
    
         
            -
                   
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                   
     | 
| 
      
 80 
     | 
    
         
            +
                  raise StandardError, json.inspect unless json["object"] != "error" && @json.nil? || @json["type"] == json["type"]
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                  @json = json
         
     | 
| 
      
 83 
     | 
    
         
            +
                  @id = @nc.hex_id(@json["id"])
         
     | 
| 
      
 84 
     | 
    
         
            +
                  restore_from_json
         
     | 
| 
       74 
85 
     | 
    
         
             
                  self
         
     | 
| 
       75 
86 
     | 
    
         
             
                end
         
     | 
| 
       76 
87 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
                 
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                   
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                   
     | 
| 
      
 88 
     | 
    
         
            +
                def restore_from_json
         
     | 
| 
      
 89 
     | 
    
         
            +
                  payload.clear
         
     | 
| 
      
 90 
     | 
    
         
            +
                  return if (ps = @json["properties"]).nil?
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                  properties.json = json_properties
         
     | 
| 
      
 93 
     | 
    
         
            +
                  return unless is_a? Page
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  ps.each do |key, json|
         
     | 
| 
      
 96 
     | 
    
         
            +
                    properties[key].update_from_json json
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
       82 
98 
     | 
    
         
             
                end
         
     | 
| 
       83 
99 
     | 
    
         | 
| 
       84 
100 
     | 
    
         
             
                # @param [String] emoji
         
     | 
| 
       85 
101 
     | 
    
         
             
                # @param [String] url
         
     | 
| 
       86 
102 
     | 
    
         
             
                # @return [NotionRubyMapping::Base]
         
     | 
| 
       87 
103 
     | 
    
         
             
                def set_icon(emoji: nil, url: nil)
         
     | 
| 
       88 
     | 
    
         
            -
                  if  
     | 
| 
      
 104 
     | 
    
         
            +
                  if is_a?(Page) || is_a?(Database)
         
     | 
| 
       89 
105 
     | 
    
         
             
                    payload.set_icon(emoji: emoji, url: url)
         
     | 
| 
       90 
106 
     | 
    
         
             
                    update
         
     | 
| 
       91 
107 
     | 
    
         
             
                  end
         
     | 
| 
       92 
108 
     | 
    
         
             
                  self
         
     | 
| 
       93 
109 
     | 
    
         
             
                end
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
       95 
111 
     | 
    
         
             
                # @param [String] key
         
     | 
| 
       96 
112 
     | 
    
         
             
                # @return [NotionRubyMapping::PropertyCache, Hash] obtained Page value or PropertyCache
         
     | 
| 
       97 
113 
     | 
    
         
             
                def [](key)
         
     | 
| 
       98 
114 
     | 
    
         
             
                  unless @json
         
     | 
| 
       99 
     | 
    
         
            -
                     
     | 
| 
      
 115 
     | 
    
         
            +
                    raise StandardError, "Unknown id" if @id.nil?
         
     | 
| 
       100 
116 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
                     
     | 
| 
      
 117 
     | 
    
         
            +
                    reload
         
     | 
| 
       102 
118 
     | 
    
         
             
                  end
         
     | 
| 
       103 
119 
     | 
    
         
             
                  case key
         
     | 
| 
       104 
120 
     | 
    
         
             
                  when "properties"
         
     | 
| 
         @@ -113,16 +129,20 @@ module NotionRubyMapping 
     | 
|
| 
       113 
129 
     | 
    
         
             
                  self["icon"]
         
     | 
| 
       114 
130 
     | 
    
         
             
                end
         
     | 
| 
       115 
131 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
                # @param [Property]  
     | 
| 
       117 
     | 
    
         
            -
                # @ 
     | 
| 
       118 
     | 
    
         
            -
                 
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                   
     | 
| 
      
 132 
     | 
    
         
            +
                # @param [Property, Class] klass
         
     | 
| 
      
 133 
     | 
    
         
            +
                # @param [String] title
         
     | 
| 
      
 134 
     | 
    
         
            +
                # @return [Property] generated property
         
     | 
| 
      
 135 
     | 
    
         
            +
                def assign_property(klass, title)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  @property_cache ||= PropertyCache.new {}
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                  property = klass.new(title, will_update: true)
         
     | 
| 
      
 139 
     | 
    
         
            +
                  @property_cache.add_property property
         
     | 
| 
      
 140 
     | 
    
         
            +
                  property
         
     | 
| 
       121 
141 
     | 
    
         
             
                end
         
     | 
| 
       122 
142 
     | 
    
         | 
| 
       123 
143 
     | 
    
         
             
                # @return [Hash] created json
         
     | 
| 
       124 
     | 
    
         
            -
                def  
     | 
| 
       125 
     | 
    
         
            -
                  payload. 
     | 
| 
      
 144 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 145 
     | 
    
         
            +
                  payload.property_values_json @property_cache&.property_values_json
         
     | 
| 
       126 
146 
     | 
    
         
             
                end
         
     | 
| 
       127 
147 
     | 
    
         
             
              end
         
     | 
| 
       128 
148 
     | 
    
         
             
            end
         
     | 
| 
         @@ -5,5 +5,31 @@ module NotionRubyMapping 
     | 
|
| 
       5 
5 
     | 
    
         
             
              class CheckboxProperty < Property
         
     | 
| 
       6 
6 
     | 
    
         
             
                include EqualsDoesNotEqual
         
     | 
| 
       7 
7 
     | 
    
         
             
                TYPE = "checkbox"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [Boolean] checkbox Number value (optional)
         
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(name, will_update: false, checkbox: false)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  super name, will_update: will_update
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @checkbox = checkbox
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                attr_reader :checkbox
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # @param [Boolean] flag
         
     | 
| 
      
 18 
     | 
    
         
            +
                # @return [TrueClass, FalseClass] settled value
         
     | 
| 
      
 19 
     | 
    
         
            +
                def checkbox=(flag)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @will_update = true
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @checkbox = flag
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 25 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @checkbox = json["checkbox"]
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                # @return [Hash]
         
     | 
| 
      
 31 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 32 
     | 
    
         
            +
                  {@name => {"checkbox" => @checkbox, "type" => "checkbox"}}
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
       8 
34 
     | 
    
         
             
              end
         
     | 
| 
       9 
35 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,28 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
      
 4 
     | 
    
         
            +
              # CreatedByProperty
         
     | 
| 
       4 
5 
     | 
    
         
             
              class CreatedByProperty < MultiProperty
         
     | 
| 
       5 
6 
     | 
    
         
             
                TYPE = "created_by"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] user_id user_id (optional)
         
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [Hash] json json (optional)
         
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(name, json: nil, user_id: nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  super name, will_update: false
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @user = UserObject.new user_id: user_id, json: json
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                attr_reader :user
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 18 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @user = UserObject.new json: json["created_by"]
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # @return [Hash] {} created_time cannot be updated
         
     | 
| 
      
 24 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 25 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
       6 
27 
     | 
    
         
             
              end
         
     | 
| 
       7 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
      
 4 
     | 
    
         
            +
              # CreatedTimeProperty
         
     | 
| 
       4 
5 
     | 
    
         
             
              class CreatedTimeProperty < DateBaseProperty
         
     | 
| 
       5 
6 
     | 
    
         
             
                TYPE = "created_time"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] created_time created_time value (optional)
         
     | 
| 
      
 10 
     | 
    
         
            +
                def initialize(name, created_time: nil)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  super name, will_update: false
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @created_time = created_time
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                attr_reader :created_time
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 17 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @created_time = json["created_time"]
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # @return [Hash] {} created_time cannot be updated
         
     | 
| 
      
 23 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 24 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       6 
26 
     | 
    
         
             
              end
         
     | 
| 
       7 
27 
     | 
    
         
             
            end
         
     | 
| 
         @@ -7,22 +7,22 @@ module NotionRubyMapping 
     | 
|
| 
       7 
7 
     | 
    
         
             
                  NotionCache.instance.database id
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                # @param [String] id database_id (with or without "-")
         
     | 
| 
       11 
10 
     | 
    
         
             
                # @param [NotionRubyMapping::Query] query object
         
     | 
| 
       12 
     | 
    
         
            -
                def  
     | 
| 
       13 
     | 
    
         
            -
                   
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
      
 11 
     | 
    
         
            +
                def query_database(query = Query.new)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  response = @nc.database_query @id, query
         
     | 
| 
      
 13 
     | 
    
         
            +
                  List.new json: response, database: self, query: query
         
     | 
| 
       15 
14 
     | 
    
         
             
                end
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                # @ 
     | 
| 
       18 
     | 
    
         
            -
                # @param [Payload] payload
         
     | 
| 
      
 16 
     | 
    
         
            +
                # @return [NotionRubyMapping::Base]
         
     | 
| 
       19 
17 
     | 
    
         
             
                def update
         
     | 
| 
       20 
     | 
    
         
            -
                  update_json @nc. 
     | 
| 
      
 18 
     | 
    
         
            +
                  update_json @nc.update_database_request(@id, property_values_json)
         
     | 
| 
       21 
19 
     | 
    
         
             
                end
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                protected
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       23 
23 
     | 
    
         
             
                # @return [Hash]
         
     | 
| 
       24 
24 
     | 
    
         
             
                def reload_json
         
     | 
| 
       25 
     | 
    
         
            -
                  @nc. 
     | 
| 
      
 25 
     | 
    
         
            +
                  @nc.database_request @id
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         
             
              end
         
     | 
| 
       28 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -3,71 +3,73 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require "date"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
       6 
     | 
    
         
            -
              # Date base property (date, created_time, last_edited_time)
         
     | 
| 
      
 6 
     | 
    
         
            +
              # Date base property (date, created_time, last_edited_time, formula)
         
     | 
| 
       7 
7 
     | 
    
         
             
              class DateBaseProperty < Property
         
     | 
| 
       8 
8 
     | 
    
         
             
                include IsEmptyIsNotEmpty
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                def value_str(obj)
         
     | 
| 
       13 
     | 
    
         
            -
                  case obj
         
     | 
| 
       14 
     | 
    
         
            -
                  when Date
         
     | 
| 
       15 
     | 
    
         
            -
                    obj.iso8601
         
     | 
| 
       16 
     | 
    
         
            -
                  when Time
         
     | 
| 
       17 
     | 
    
         
            -
                    obj.strftime("%Y-%m-%dT%H:%M:%S%:z")
         
     | 
| 
       18 
     | 
    
         
            -
                  when DateTime
         
     | 
| 
       19 
     | 
    
         
            -
                    obj.iso8601
         
     | 
| 
       20 
     | 
    
         
            -
                  else
         
     | 
| 
       21 
     | 
    
         
            -
                    obj
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                def filter_equals(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  make_filter_query "equals", value_str(date), rollup, rollup_type
         
     | 
| 
       23 
12 
     | 
    
         
             
                end
         
     | 
| 
       24 
13 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                def  
     | 
| 
       26 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 14 
     | 
    
         
            +
                def filter_does_not_equal(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  make_filter_query "does_not_equal", value_str(date), rollup, rollup_type
         
     | 
| 
       27 
16 
     | 
    
         
             
                end
         
     | 
| 
       28 
17 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                def  
     | 
| 
       30 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 18 
     | 
    
         
            +
                def filter_before(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  make_filter_query "before", value_str(date), rollup, rollup_type
         
     | 
| 
       31 
20 
     | 
    
         
             
                end
         
     | 
| 
       32 
21 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                def  
     | 
| 
       34 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 22 
     | 
    
         
            +
                def filter_after(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  make_filter_query "after", value_str(date), rollup, rollup_type
         
     | 
| 
       35 
24 
     | 
    
         
             
                end
         
     | 
| 
       36 
25 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                def  
     | 
| 
       38 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 26 
     | 
    
         
            +
                def filter_on_or_before(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  make_filter_query "on_or_before", value_str(date), rollup, rollup_type
         
     | 
| 
       39 
28 
     | 
    
         
             
                end
         
     | 
| 
       40 
29 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                def  
     | 
| 
       42 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 30 
     | 
    
         
            +
                def filter_on_or_after(date, rollup = nil, rollup_type = nil)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  make_filter_query "on_or_after", value_str(date), rollup, rollup_type
         
     | 
| 
       43 
32 
     | 
    
         
             
                end
         
     | 
| 
       44 
33 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                def  
     | 
| 
       46 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 34 
     | 
    
         
            +
                def filter_past_week(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  make_filter_query "past_week", {}, rollup, rollup_type
         
     | 
| 
       47 
36 
     | 
    
         
             
                end
         
     | 
| 
       48 
37 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                def  
     | 
| 
       50 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 38 
     | 
    
         
            +
                def filter_past_month(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  make_filter_query "past_month", {}, rollup, rollup_type
         
     | 
| 
       51 
40 
     | 
    
         
             
                end
         
     | 
| 
       52 
41 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                def  
     | 
| 
       54 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 42 
     | 
    
         
            +
                def filter_past_year(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  make_filter_query "past_year", {}, rollup, rollup_type
         
     | 
| 
       55 
44 
     | 
    
         
             
                end
         
     | 
| 
       56 
45 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                def  
     | 
| 
       58 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 46 
     | 
    
         
            +
                def filter_next_week(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  make_filter_query "next_week", {}, rollup, rollup_type
         
     | 
| 
       59 
48 
     | 
    
         
             
                end
         
     | 
| 
       60 
49 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                def  
     | 
| 
       62 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 50 
     | 
    
         
            +
                def filter_next_month(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  make_filter_query "next_month", {}, rollup, rollup_type
         
     | 
| 
       63 
52 
     | 
    
         
             
                end
         
     | 
| 
       64 
53 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
                def  
     | 
| 
       66 
     | 
    
         
            -
                  make_filter_query " 
     | 
| 
      
 54 
     | 
    
         
            +
                def filter_next_year(rollup = nil, rollup_type = nil)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  make_filter_query "next_year", {}, rollup, rollup_type
         
     | 
| 
       67 
56 
     | 
    
         
             
                end
         
     | 
| 
       68 
57 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                 
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
                protected
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                # @param [Date, Time, DateTime, String, nil] obj
         
     | 
| 
      
 61 
     | 
    
         
            +
                # @return [String] iso8601 format string
         
     | 
| 
      
 62 
     | 
    
         
            +
                def value_str(obj)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  case obj
         
     | 
| 
      
 64 
     | 
    
         
            +
                  when Date
         
     | 
| 
      
 65 
     | 
    
         
            +
                    obj.iso8601
         
     | 
| 
      
 66 
     | 
    
         
            +
                  when Time
         
     | 
| 
      
 67 
     | 
    
         
            +
                    obj.strftime("%Y-%m-%dT%H:%M:%S%:z")
         
     | 
| 
      
 68 
     | 
    
         
            +
                  when DateTime
         
     | 
| 
      
 69 
     | 
    
         
            +
                    obj.iso8601
         
     | 
| 
      
 70 
     | 
    
         
            +
                  else
         
     | 
| 
      
 71 
     | 
    
         
            +
                    obj
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
       71 
73 
     | 
    
         
             
                end
         
     | 
| 
       72 
74 
     | 
    
         
             
              end
         
     | 
| 
       73 
75 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,44 +1,68 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
      
 4 
     | 
    
         
            +
              # DateProperty
         
     | 
| 
       4 
5 
     | 
    
         
             
              class DateProperty < DateBaseProperty
         
     | 
| 
       5 
6 
     | 
    
         
             
                TYPE = "date"
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
                # @param [String] name
         
     | 
| 
       8 
9 
     | 
    
         
             
                # @param [Hash] json
         
     | 
| 
       9 
     | 
    
         
            -
                # @param [ 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                   
     | 
| 
       14 
     | 
    
         
            -
                  @ 
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [Date, Time, DateTime, String, nil] start_date
         
     | 
| 
      
 11 
     | 
    
         
            +
                # @param [Date, Time, DateTime, String, nil] end_date
         
     | 
| 
      
 12 
     | 
    
         
            +
                # @param [String, nil] time_zone
         
     | 
| 
      
 13 
     | 
    
         
            +
                def initialize(name, will_update: false, json: nil, start_date: nil, end_date: nil, time_zone: nil)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  super name, will_update: will_update
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @start_date = start_date || json && json["start"]
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @end_date = end_date || json && json["end"]
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @time_zone = time_zone || json && json["time_zone"]
         
     | 
| 
       15 
18 
     | 
    
         
             
                end
         
     | 
| 
       16 
19 
     | 
    
         | 
| 
       17 
20 
     | 
    
         
             
                # @return [Hash] created json
         
     | 
| 
       18 
     | 
    
         
            -
                def  
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
       20 
     | 
    
         
            -
                     
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 22 
     | 
    
         
            +
                  {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @name => {
         
     | 
| 
      
 24 
     | 
    
         
            +
                      "type" => "date",
         
     | 
| 
      
 25 
     | 
    
         
            +
                      "date" => {
         
     | 
| 
      
 26 
     | 
    
         
            +
                        "start" => value_str(@start_date),
         
     | 
| 
      
 27 
     | 
    
         
            +
                        "end" => value_str(@end_date),
         
     | 
| 
      
 28 
     | 
    
         
            +
                        "time_zone" => @time_zone,
         
     | 
| 
      
 29 
     | 
    
         
            +
                      },
         
     | 
| 
      
 30 
     | 
    
         
            +
                    },
         
     | 
| 
      
 31 
     | 
    
         
            +
                  }
         
     | 
| 
       26 
32 
     | 
    
         
             
                end
         
     | 
| 
       27 
33 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                # @param [ 
     | 
| 
       29 
     | 
    
         
            -
                # @return [ 
     | 
| 
      
 34 
     | 
    
         
            +
                # @param [Date, Time, DateTime, String] start_date
         
     | 
| 
      
 35 
     | 
    
         
            +
                # @return [Date, Time, DateTime, String]
         
     | 
| 
       30 
36 
     | 
    
         
             
                def start_date=(start_date)
         
     | 
| 
       31 
37 
     | 
    
         
             
                  @will_update = true
         
     | 
| 
       32 
38 
     | 
    
         
             
                  @start_date = start_date
         
     | 
| 
       33 
39 
     | 
    
         
             
                  @end_date = nil if @start_date.class != @end_date.class || @start_date > @end_date
         
     | 
| 
      
 40 
     | 
    
         
            +
                  @start_date
         
     | 
| 
       34 
41 
     | 
    
         
             
                end
         
     | 
| 
       35 
42 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                # @param [ 
     | 
| 
       37 
     | 
    
         
            -
                # @return [ 
     | 
| 
      
 43 
     | 
    
         
            +
                # @param [Date, Time, DateTime, String] end_date
         
     | 
| 
      
 44 
     | 
    
         
            +
                # @return [Date, Time, DateTime, String]
         
     | 
| 
       38 
45 
     | 
    
         
             
                def end_date=(end_date)
         
     | 
| 
       39 
46 
     | 
    
         
             
                  @will_update = true
         
     | 
| 
       40 
47 
     | 
    
         
             
                  @end_date = end_date
         
     | 
| 
       41 
48 
     | 
    
         
             
                  @end_date = nil if @start_date.class != @end_date.class || @start_date > @end_date
         
     | 
| 
      
 49 
     | 
    
         
            +
                  @end_date
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                # @param [String] time_zone
         
     | 
| 
      
 53 
     | 
    
         
            +
                # @return [Array, nil] settled array
         
     | 
| 
      
 54 
     | 
    
         
            +
                def time_zone=(time_zone)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  @will_update = true
         
     | 
| 
      
 56 
     | 
    
         
            +
                  @time_zone = time_zone
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 60 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 62 
     | 
    
         
            +
                  jd = json["date"]
         
     | 
| 
      
 63 
     | 
    
         
            +
                  @start_date = jd["start"]
         
     | 
| 
      
 64 
     | 
    
         
            +
                  @end_date = jd["end"]
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @time_zone = jd["time_zone"]
         
     | 
| 
       42 
66 
     | 
    
         
             
                end
         
     | 
| 
       43 
67 
     | 
    
         
             
              end
         
     | 
| 
       44 
68 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,36 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              # EmailProperty
         
     | 
| 
      
 5 
     | 
    
         
            +
              class EmailProperty < Property
         
     | 
| 
      
 6 
     | 
    
         
            +
                include EqualsDoesNotEqual
         
     | 
| 
      
 7 
     | 
    
         
            +
                include ContainsDoesNotContain
         
     | 
| 
      
 8 
     | 
    
         
            +
                include StartsWithEndsWith
         
     | 
| 
      
 9 
     | 
    
         
            +
                include IsEmptyIsNotEmpty
         
     | 
| 
       5 
10 
     | 
    
         
             
                TYPE = "email"
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 13 
     | 
    
         
            +
                # @param [String] email email value (optional)
         
     | 
| 
      
 14 
     | 
    
         
            +
                def initialize(name, will_update: false, email: nil)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  super name, will_update: will_update
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @email = email
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                attr_reader :email
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 21 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @email = json["email"]
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # @return [Hash]
         
     | 
| 
      
 27 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 28 
     | 
    
         
            +
                  {@name => {"email" => @email, "type" => "email"}}
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def email=(email)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @will_update = true
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @email = email
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
       6 
35 
     | 
    
         
             
              end
         
     | 
| 
       7 
36 
     | 
    
         
             
            end
         
     | 
| 
         @@ -5,5 +5,45 @@ module NotionRubyMapping 
     | 
|
| 
       5 
5 
     | 
    
         
             
              class FilesProperty < Property
         
     | 
| 
       6 
6 
     | 
    
         
             
                include IsEmptyIsNotEmpty
         
     | 
| 
       7 
7 
     | 
    
         
             
                TYPE = "files"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [String] files files value (optional)
         
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(name, will_update: false, json: nil, files: [])
         
     | 
| 
      
 12 
     | 
    
         
            +
                  super name, will_update: will_update
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @files = json || Array(files).map { |url| url_to_hash url } || []
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                attr_reader :files
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # @param [String] url
         
     | 
| 
      
 18 
     | 
    
         
            +
                # @return [Hash]
         
     | 
| 
      
 19 
     | 
    
         
            +
                def url_to_hash(url)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    "name" => url,
         
     | 
| 
      
 22 
     | 
    
         
            +
                    "type" => "external",
         
     | 
| 
      
 23 
     | 
    
         
            +
                    "external" => {
         
     | 
| 
      
 24 
     | 
    
         
            +
                      "url" => url,
         
     | 
| 
      
 25 
     | 
    
         
            +
                    },
         
     | 
| 
      
 26 
     | 
    
         
            +
                  }
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 30 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @files = json["files"]
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                # @return [Hash]
         
     | 
| 
      
 36 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 37 
     | 
    
         
            +
                  if @files.map { |f| f["type"] }.include? "file"
         
     | 
| 
      
 38 
     | 
    
         
            +
                    {}
         
     | 
| 
      
 39 
     | 
    
         
            +
                  else
         
     | 
| 
      
 40 
     | 
    
         
            +
                    {@name => {"files" => @files, "type" => "files"}}
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def files=(files = [])
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @will_update = true
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @files = Array(files).map { |url| url_to_hash url } || []
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
       8 
48 
     | 
    
         
             
              end
         
     | 
| 
       9 
49 
     | 
    
         
             
            end
         
     | 
| 
         @@ -7,5 +7,23 @@ module NotionRubyMapping 
     | 
|
| 
       7 
7 
     | 
    
         
             
                include StartsWithEndsWith
         
     | 
| 
       8 
8 
     | 
    
         
             
                include GreaterThanLessThan
         
     | 
| 
       9 
9 
     | 
    
         
             
                TYPE = "formula"
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                # @param [String] name
         
     | 
| 
      
 12 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 13 
     | 
    
         
            +
                def initialize(name, json: nil)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  super name, will_update: false
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @json = json
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 19 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @json = json["formula"]
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                # @return [Hash] {} created_time cannot be updated
         
     | 
| 
      
 25 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 26 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
       10 
28 
     | 
    
         
             
              end
         
     | 
| 
       11 
29 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,28 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
      
 4 
     | 
    
         
            +
              # LastEditedByProperty
         
     | 
| 
       4 
5 
     | 
    
         
             
              class LastEditedByProperty < MultiProperty
         
     | 
| 
       5 
6 
     | 
    
         
             
                TYPE = "last_edited_by"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] user_id user_id (optional)
         
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [Hash] json json (optional)
         
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(name, user_id: nil, json: nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  super name, will_update: false
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @user = UserObject.new user_id: user_id, json: json
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                attr_reader :user
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 18 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @user = UserObject.new json: json["last_edited_by"]
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # @return [Hash] {} created_time cannot be updated
         
     | 
| 
      
 24 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 25 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
       6 
27 
     | 
    
         
             
              end
         
     | 
| 
       7 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NotionRubyMapping
         
     | 
| 
      
 4 
     | 
    
         
            +
              # LastEditedTimeProperty
         
     | 
| 
       4 
5 
     | 
    
         
             
              class LastEditedTimeProperty < DateBaseProperty
         
     | 
| 
       5 
6 
     | 
    
         
             
                TYPE = "last_edited_time"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [String] name Property name
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @param [String] last_edited_time last_edited_time value (optional)
         
     | 
| 
      
 10 
     | 
    
         
            +
                def initialize(name, last_edited_time: nil)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  super name, will_update: false
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @last_edited_time = last_edited_time
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                attr_reader :last_edited_time
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                # @param [Hash] json
         
     | 
| 
      
 17 
     | 
    
         
            +
                def update_from_json(json)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @will_update = false
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @last_edited_time = json["last_edited_time"]
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # @return [Hash] {} created_time cannot be updated
         
     | 
| 
      
 23 
     | 
    
         
            +
                def property_values_json
         
     | 
| 
      
 24 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       6 
26 
     | 
    
         
             
              end
         
     | 
| 
       7 
27 
     | 
    
         
             
            end
         
     |