notion_ruby_mapping 0.1.4 → 0.2.0

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +1 -1
  3. data/README.md +494 -268
  4. data/env.yml.sample +7 -0
  5. data/lib/notion_ruby_mapping/base.rb +37 -30
  6. data/lib/notion_ruby_mapping/checkbox_property.rb +26 -0
  7. data/lib/notion_ruby_mapping/created_by_property.rb +21 -0
  8. data/lib/notion_ruby_mapping/created_time_property.rb +20 -0
  9. data/lib/notion_ruby_mapping/database.rb +8 -8
  10. data/lib/notion_ruby_mapping/date_base_property.rb +40 -38
  11. data/lib/notion_ruby_mapping/date_property.rb +42 -18
  12. data/lib/notion_ruby_mapping/email_property.rb +30 -1
  13. data/lib/notion_ruby_mapping/files_property.rb +40 -0
  14. data/lib/notion_ruby_mapping/formula_property.rb +18 -0
  15. data/lib/notion_ruby_mapping/last_edited_by_property.rb +21 -0
  16. data/lib/notion_ruby_mapping/last_edited_time_property.rb +20 -0
  17. data/lib/notion_ruby_mapping/list.rb +33 -2
  18. data/lib/notion_ruby_mapping/mention_object.rb +49 -0
  19. data/lib/notion_ruby_mapping/multi_select_property.rb +25 -6
  20. data/lib/notion_ruby_mapping/notion_cache.rb +126 -53
  21. data/lib/notion_ruby_mapping/number_property.rb +13 -8
  22. data/lib/notion_ruby_mapping/page.rb +5 -2
  23. data/lib/notion_ruby_mapping/payload.rb +10 -2
  24. data/lib/notion_ruby_mapping/people_property.rb +38 -0
  25. data/lib/notion_ruby_mapping/phone_number_property.rb +30 -1
  26. data/lib/notion_ruby_mapping/property.rb +79 -43
  27. data/lib/notion_ruby_mapping/property_cache.rb +31 -12
  28. data/lib/notion_ruby_mapping/query.rb +5 -2
  29. data/lib/notion_ruby_mapping/relation_property.rb +37 -0
  30. data/lib/notion_ruby_mapping/rich_text_object.rb +74 -0
  31. data/lib/notion_ruby_mapping/rich_text_property.rb +18 -0
  32. data/lib/notion_ruby_mapping/rollup_property.rb +29 -0
  33. data/lib/notion_ruby_mapping/select_property.rb +12 -6
  34. data/lib/notion_ruby_mapping/text_object.rb +89 -0
  35. data/lib/notion_ruby_mapping/text_property.rb +61 -0
  36. data/lib/notion_ruby_mapping/title_property.rb +18 -0
  37. data/lib/notion_ruby_mapping/url_property.rb +30 -1
  38. data/lib/notion_ruby_mapping/user_object.rb +38 -0
  39. data/lib/notion_ruby_mapping/version.rb +2 -1
  40. data/lib/notion_ruby_mapping.rb +3 -3
  41. data/notion_ruby_mapping.gemspec +3 -1
  42. 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
- def initialize(json: nil, id: nil)
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
- throw Notion::Api::Errors::ObjectNotFound
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
- return nil if @id.nil?
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,26 +77,31 @@ module NotionRubyMapping
66
77
  # @param [Hash] json
67
78
  # @return [NotionRubyMapping::Base]
68
79
  def update_json(json)
69
- if @json.nil? || @json["type"] == json["type"]
70
- @json = json
71
- @id = @nc.hex_id(@json["id"])
72
- clear_object
73
- end
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
- # @return [NotionRubyMapping::Base]
78
- def clear_object
79
- @payload = nil
80
- @property_cache = nil
81
- self
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 self.is_a?(Page) || self.is_a?(Database)
104
+ if is_a?(Page) || is_a?(Database)
89
105
  payload.set_icon(emoji: emoji, url: url)
90
106
  update
91
107
  end
@@ -96,9 +112,9 @@ module NotionRubyMapping
96
112
  # @return [NotionRubyMapping::PropertyCache, Hash] obtained Page value or PropertyCache
97
113
  def [](key)
98
114
  unless @json
99
- return nil if @id.nil?
115
+ raise StandardError, "Unknown id" if @id.nil?
100
116
 
101
- update_json reload
117
+ reload
102
118
  end
103
119
  case key
104
120
  when "properties"
@@ -113,29 +129,20 @@ module NotionRubyMapping
113
129
  self["icon"]
114
130
  end
115
131
 
116
- # @param [Property] property Property object for udpate or create
117
- # @return [NotionRubyMapping::Base]
118
- def add_property_for_update(property)
119
- @property_cache ||= PropertyCache.new {}
120
- @property_cache.add_property property, will_update: true
121
- self
122
- end
123
-
124
- # @param [Class] klass
132
+ # @param [Property, Class] klass
125
133
  # @param [String] title
126
134
  # @return [Property] generated property
127
135
  def assign_property(klass, title)
128
136
  @property_cache ||= PropertyCache.new {}
129
137
 
130
- property = klass.new(title)
131
- property.will_update = true
138
+ property = klass.new(title, will_update: true)
132
139
  @property_cache.add_property property
133
140
  property
134
141
  end
135
142
 
136
143
  # @return [Hash] created json
137
- def create_json
138
- payload.create_json @property_cache&.create_json
144
+ def property_values_json
145
+ payload.property_values_json @property_cache&.property_values_json
139
146
  end
140
147
  end
141
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 self.query(id, query = nil)
13
- query ||= Query.new
14
- NotionCache.instance.database_query(id, query)
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
- # @param [String] id database_id (with or without "-")
18
- # @param [Payload] payload
16
+ # @return [NotionRubyMapping::Base]
19
17
  def update
20
- update_json @nc.update_database(@id, create_json)
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.database_json @id
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
- # @param [Date, Time, DateTime, String, nil] obj
11
- # @return [String] iso8601 format string
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 filter_equals(value)
26
- make_filter_query "equals", value_str(value)
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 filter_does_not_equal(value)
30
- make_filter_query "does_not_equal", value_str(value)
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 filter_before(value)
34
- make_filter_query "before", value_str(value)
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 filter_after(value)
38
- make_filter_query "after", value_str(value)
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 filter_on_or_before(value)
42
- make_filter_query "on_or_before", value_str(value)
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 filter_on_or_after(value)
46
- make_filter_query "on_or_after", value_str(value)
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 filter_past_week
50
- make_filter_query "past_week", {}
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 filter_past_month
54
- make_filter_query "past_month", {}
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 filter_past_year
58
- make_filter_query "past_year", {}
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 filter_next_week
62
- make_filter_query "next_week", {}
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 filter_next_month
66
- make_filter_query "next_month", {}
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
- def filter_next_year
70
- make_filter_query "next_year", {}
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 [Array] multi_select
10
- def initialize(name, json: nil, start_date: nil, end_date: nil, time_zone: nil)
11
- super(name, json: json)
12
- @end_date = end_date
13
- @start_date = start_date || end_date
14
- @time_zone = time_zone
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 create_json
19
- if @end_date
20
- {"date" => {"start" => value_str(@start_date || @end_date), "end" => value_str(@end_date)}}
21
- elsif @start_date
22
- {"date" => {"start" => value_str(@start_date)}}
23
- else
24
- {"date" => @json || {}}
25
- end
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 [Hash] multi_select
29
- # @return [Array, nil] settled array
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 [Hash] multi_select
37
- # @return [Array, nil] settled array
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
- class EmailProperty < TextProperty
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