notion_ruby_mapping 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c557600e1d6f89386696ffeadd7b3169fc0f3bfd19cc9aab29ce4e401d5b8969
4
- data.tar.gz: 3dc90d601a14e96bc6c65b44a75231095cc52a7efc89067b5e37653133e546cf
3
+ metadata.gz: 53bd845c6d0535c221a3485dde1a005f31d86dfe668a3a61e64a9170cad88e77
4
+ data.tar.gz: 4523b7623a9bafaceac4264bdbc5a635cdd190558cf2079747922cf9644aa664
5
5
  SHA512:
6
- metadata.gz: 3177e1c978dfda8968986afc96c4456a3842112d5de4d8b661074be3aaf3eb3a75b87297ac3b5701874091ac3444e8d88782747efa4ffbab02f3299875363d47
7
- data.tar.gz: 3ad09dca8a9f818e35b8f8b1c611f89273efc4c9b34a78daf5fb34232372f5827afe5e307011380fa47263bc2de694461339d4b27793e4b2cb1af0fecdf75f6f
6
+ metadata.gz: a9a372c98e531807eb7a954375ada24adaa3e1fbef57d6058483a7774517fb1bdbbe840bba72a301007750fcba6000d81d0504861513aafbac58b1c445d23518
7
+ data.tar.gz: fb95291c350bfe39d730360d1aa2ad38d1be92736e2f5f393423c3aabf3e6432552f6c4327c4a0f88d4ecd97129f0e78879d5e562f73d0d625c9836c5c52f9ce
data/README.md CHANGED
@@ -58,6 +58,10 @@ Database.query(database_id).each do |page|
58
58
  end
59
59
  ```
60
60
 
61
+ |Before execution|After execution|
62
+ |---|---|
63
+ |![Before execution](images/pre_set_icon.png)|![After execution](images/post_set_icon.png)|
64
+
61
65
  The following code sets serial numbers to the pages whose title is not empty in ascending order of titles.
62
66
  ```Ruby
63
67
  tp = RichTextProperty.new("TextTitle")
@@ -65,12 +69,10 @@ Database.query(database_id, tp.filter_is_not_empty.ascending(tp)).each.with_inde
65
69
  page.properties["NumberTitle"].number = index
66
70
  page.update
67
71
  end
68
-
69
72
  ```
70
-
71
- |Before execution|After execution|
72
- |---|---|
73
- |![Before execution](images/pre_set_icon.png)|![After execution](images/post_set_icon.png)|
73
+ | After execution |
74
+ |-----------------------------------------------|
75
+ | ![After exuecution](images/serial_number.png) |
74
76
 
75
77
  ## Usage
76
78
 
@@ -427,7 +429,7 @@ query12 = Query.new.ascending(tp).descending letp
427
429
  query13 = tp.filter_starts_with("A").ascending(tp)
428
430
 
429
431
  # Result of query13.filter
430
- {"property" => "tp", "title" => {"starts_with" => "start"}},
432
+ {"property" => "tp", "title" => {"starts_with" => "start"}}
431
433
 
432
434
  # Result of query13.sort
433
435
  [{"property" => "tp", "direction" => "ascending"}]
@@ -487,8 +489,65 @@ end
487
489
 
488
490
  Not implemented
489
491
 
492
+ #### NumberProperty class
493
+
494
+ - constructor
495
+ ```Ruby
496
+ np = NumberProperty.new "np", number: 123
497
+ ```
498
+
499
+ - set value
500
+ ```Ruby
501
+ np.number = 456 # number <- 456 and will_update <- true
502
+ ```
503
+
504
+ - create json
505
+ ```Ruby
506
+ np.create_json # {"number" => 456}
507
+ ```
508
+
509
+ #### SelectProperty class
510
+
511
+ - constructor
512
+ ```Ruby
513
+ sp = SelectProperty.new "sp", select: "Select 1"
514
+ ```
515
+
516
+ - set value
517
+ ```Ruby
518
+ sp.select = "Select 2" # select <- "Select 2" and will_update <- true
519
+ ```
520
+
521
+ - create json
522
+ ```Ruby
523
+ sp.create_json # {"select" => {"name" => "Select 2"}}
524
+ ```
525
+
526
+ #### MultiSelectProperty class
527
+
528
+ - constructor
529
+ ```Ruby
530
+ msp1 = MultiSelectProperty.new "msp1", multi_select: "MS1" # Single value
531
+ msp2 = MultiSelectProperty.new "msp2", multi_select: %w[MS1 MS2] # Multi values
532
+ ```
533
+
534
+ - set value
535
+ ```Ruby
536
+ msp1.multi_select = %w[MS2 MS1] # multi_select <- ["MS1", "MS2"] and will_update <- true
537
+ msp2.select = "MS2" # multi_select <- "MS2" and will_update <- true
538
+ ```
539
+
540
+ - create json
541
+ ```Ruby
542
+ msp1.create_json # {"multi_select" => [{"name" => "MS2"}, {"name" => "MS1"}]}
543
+ msp2.create_json # {"multi_select" => [{"name" => "MS2"}]}
544
+ ```
545
+
490
546
  ## ChangeLog
491
547
 
548
+ - 2022/2/20 add support for MultiSelectProperty
549
+ - 2022/2/19 add support for SelectProperty
550
+ - 2022/2/17 added Page#properties, Page#add_property_for_update, Page#update
492
551
  - 2022/2/17 added Page#properties, Page#add_property_for_update, Page#update
493
552
  - 2022/2/16 added PropertyCache and Payload class
494
553
  - 2022/2/14 added Database#set_icon
Binary file
@@ -40,12 +40,18 @@ module NotionRubyMapping
40
40
  unless @json
41
41
  return nil if @id.nil?
42
42
 
43
- update_json reload
43
+ reload
44
44
  end
45
45
  @property_cache = PropertyCache.new json_properties
46
46
  end
47
47
  @property_cache
48
- end
48
+ end
49
+
50
+ # @return [NotionRubyMapping::Base] reloaded self
51
+ def reload
52
+ update_json reload_json
53
+ self
54
+ end
49
55
 
50
56
  # @return [Hash] json properties
51
57
  def json_properties
@@ -17,8 +17,12 @@ module NotionRubyMapping
17
17
  # @param [String] id database_id (with or without "-")
18
18
  # @param [Payload] payload
19
19
  def update
20
- update_json @nc.update_database @id, @payload.create_json
20
+ update_json @nc.update_database(@id, create_json)
21
+ end
22
+
23
+ # @return [Hash]
24
+ def reload_json
25
+ @nc.database_json @id
21
26
  end
22
27
  end
23
28
  end
24
-
@@ -4,5 +4,25 @@ module NotionRubyMapping
4
4
  # MultiSelect property
5
5
  class MultiSelectProperty < MultiProperty
6
6
  TYPE = "multi_select"
7
+
8
+ # @param [String] name
9
+ # @param [Hash] json
10
+ # @param [Array] multi_select
11
+ def initialize(name, json: nil, multi_select: nil)
12
+ super(name, json: json)
13
+ @multi_select = multi_select ? Array(multi_select) : nil
14
+ end
15
+
16
+ # @return [Hash] created json
17
+ def create_json
18
+ {"multi_select" => @multi_select ? (@multi_select.map { |v| {"name" => v} }) : @json} || {}
19
+ end
20
+
21
+ # @param [Hash] multi_select
22
+ # @return [Array, nil] settled array
23
+ def multi_select=(multi_select)
24
+ @will_update = true
25
+ @multi_select = multi_select ? Array(multi_select) : nil
26
+ end
7
27
  end
8
28
  end
@@ -14,7 +14,6 @@ module NotionRubyMapping
14
14
  @wait = 0
15
15
  end
16
16
  attr_reader :object_hash, :client
17
- attr_accessor :use_cache
18
17
 
19
18
  # @param [String] notion_token
20
19
  # @return [NotionRubyMapping::NotionCache] self (NotionCache.instance)
@@ -9,15 +9,17 @@ module NotionRubyMapping
9
9
  TYPE = "number"
10
10
 
11
11
  # @param [String] name Property name
12
- # @param [Number, Fixnum] number Number value (optional)
13
- # @param [String] format Format string (optional, default: "number")
14
- def initialize(name, number: nil)
15
- super(name)
12
+ # @param [Hash] json
13
+ # @param [Float] number Number value (optional)
14
+ def initialize(name, json: nil, number: nil)
15
+ super(name, json: json)
16
16
  @number = number
17
17
  end
18
+ attr_reader :number
18
19
 
20
+ # @return [Hash]
19
21
  def create_json
20
- {"type" => "number", "number" => @number}
22
+ {"number" => @number || @json}
21
23
  end
22
24
 
23
25
  def number=(n)
@@ -3,18 +3,16 @@
3
3
  module NotionRubyMapping
4
4
  # Notion page object
5
5
  class Page < Base
6
- def self.find(key)
7
- NotionCache.instance.page key
6
+ def self.find(id)
7
+ NotionCache.instance.page id
8
8
  end
9
9
 
10
- # @param [String] id page_id (with or without "-")
11
- # @param [Payload] payload
12
10
  def update
13
11
  update_json @nc.update_page(@id, create_json)
14
12
  end
15
-
13
+
16
14
  # @return [Hash]
17
- def reload
15
+ def reload_json
18
16
  @nc.page_json @id
19
17
  end
20
18
  end
@@ -4,10 +4,12 @@ module NotionRubyMapping
4
4
  # abstract class for property
5
5
  class Property
6
6
  # @param [String] name Property name
7
+ # @param [Hash] json
7
8
  # @return [Property] generated Property object
8
- def initialize(name)
9
+ def initialize(name, json: nil)
9
10
  @name = name
10
11
  @will_update = false
12
+ @json = json
11
13
  end
12
14
  attr_reader :name
13
15
  attr_accessor :will_update
@@ -25,12 +27,16 @@ module NotionRubyMapping
25
27
  end
26
28
 
27
29
  # @param [String] key
28
- # @param [Hash] json
29
- # @return [NotionRubyMapping::NumberProperty, nil] generated Property object
30
- def self.create_from_json(key, json)
31
- case json["type"]
32
- when "number"
33
- NumberProperty.new key, number: json["number"]
30
+ # @param [Hash] input_json
31
+ # @return [NotionRubyMapping::Property, nil] generated Property object
32
+ def self.create_from_json(key, input_json)
33
+ keys = input_json.keys
34
+ if keys.include? "number"
35
+ NumberProperty.new key, json: input_json["number"]
36
+ elsif keys.include? "select"
37
+ SelectProperty.new key, json: input_json["select"]
38
+ elsif keys.include? "multi_select"
39
+ MultiSelectProperty.new key, json: input_json["multi_select"]
34
40
  else
35
41
  nil
36
42
  end
@@ -6,5 +6,25 @@ module NotionRubyMapping
6
6
  include EqualsDoesNotEqual
7
7
  include IsEmptyIsNotEmpty
8
8
  TYPE = "select"
9
+
10
+ # @param [String] name Property name
11
+ # @param [Hash] json
12
+ # @param [String] select String value (optional)
13
+ def initialize(name, json: nil, select: nil)
14
+ super(name, json: json)
15
+ @select = select
16
+ end
17
+
18
+ # @return [Hash]
19
+ def create_json
20
+ {"select" => @select ? {"name" => @select} : @json} || {}
21
+ end
22
+
23
+ # @param [String] select
24
+ # @return [String] settled value
25
+ def select=(select)
26
+ @will_update = true
27
+ @select = select
28
+ end
9
29
  end
10
- end
30
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NotionRubyMapping
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notion_ruby_mapping
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroyuki KOBAYASHI
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-17 00:00:00.000000000 Z
11
+ date: 2022-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: notion-ruby-client
@@ -115,6 +115,7 @@ files:
115
115
  - env.yml.sample
116
116
  - images/post_set_icon.png
117
117
  - images/pre_set_icon.png
118
+ - images/serial_number.png
118
119
  - lib/notion_ruby_mapping.rb
119
120
  - lib/notion_ruby_mapping/base.rb
120
121
  - lib/notion_ruby_mapping/block.rb