Class: NotionRubyMapping::Database
- Inherits:
-
Base
- Object
- Base
- NotionRubyMapping::Database
show all
- Defined in:
- lib/notion_ruby_mapping/blocks/database.rb
Overview
Instance Attribute Summary
Attributes inherited from Base
#archived, #has_children, #id, #json
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#append_block_children, #assert_parent_children_pair, #assign_property, #block?, block_id, #children, #comments, #cover, create_from_json, #created_time, #database?, database_id, dry_run_script, #get, #icon, #initialize, #inspect, #json_properties, #last_edited_time, #new_record?, #page?, page_id, #parent, #parent_id, #properties, #reload, #restore_from_json, #save, #set_cover, #set_icon, #synced_block_original?, #update_json
Class Method Details
12
13
14
15
16
17
18
19
20
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 12
def self.find(id, dry_run: false)
nc = NotionCache.instance
database_id = Base.database_id id
if dry_run
dry_run_script :get, nc.database_path(database_id)
else
nc.database database_id
end
end
|
Instance Method Details
Returns obtained Page value or PropertyCache.
24
25
26
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 24
def [](key)
get key
end
|
32
33
34
35
36
37
38
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 32
def add_property(klass, title)
prop = assign_property klass, title
yield prop if block_given?
@payload.merge_property prop.property_schema_json
prop.clear_will_update
prop
end
|
#build_child_page(*assign) {|page, pp| ... } ⇒ NotionRubyMapping::Base
43
44
45
46
47
48
49
50
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 43
def build_child_page(*assign)
assign = properties.map { |p| [p.class, p.name] }.flatten if assign.empty?
page = Page.new assign: assign, parent: {"database_id" => @id}
pp = page.properties
pp.clear_will_update
yield page, pp if block_given?
page
end
|
#create_child_page(*assign, dry_run: false) {|page, pp| ... } ⇒ NotionRubyMapping::Base
56
57
58
59
60
61
62
63
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 56
def create_child_page(*assign, dry_run: false)
assign = properties.map { |p| [p.class, p.name] }.flatten if assign.empty?
page = Page.new assign: assign, parent: {"database_id" => @id}
pp = page.properties
pp.clear_will_update
yield page, pp if block_given?
page.save dry_run: dry_run
end
|
67
68
69
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 67
def database_title
@database_title ||= RichTextArray.new "title", json: (self["title"]), will_update: new_record?
end
|
72
73
74
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 72
def description
RichTextArray.new "description", json: self["description"]
end
|
#description=(text_info) ⇒ Object
77
78
79
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 77
def description=(text_info)
@payload.description = text_info
end
|
#is_inline ⇒ Boolean
82
83
84
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 82
def is_inline
self["is_inline"]
end
|
#is_inline=(flag) ⇒ Object
87
88
89
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 87
def is_inline=(flag)
@payload.is_inline = flag
end
|
#property_schema_json ⇒ Hash
Returns created json for property schemas (for create database).
92
93
94
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 92
def property_schema_json
@payload.property_schema_json @property_cache, database_title
end
|
#property_values_json ⇒ Hash
Returns created json for property values.
97
98
99
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 97
def property_values_json
@payload.property_values_json @property_cache, database_title
end
|
#query_database(query = Query.new, dry_run: false) ⇒ NotionRubyMapping::List, String
105
106
107
108
109
110
111
112
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 105
def query_database(query = Query.new, dry_run: false)
if dry_run
Base.dry_run_script :post, @nc.query_database_path(@id), query.query_json
else
response = @nc.database_query_request @id, query
List.new json: response, type: "database", value: self, query: query
end
end
|
117
118
119
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 117
def remove_properties(*property_names)
property_names.map { |n| properties[n] }.each(&:remove)
end
|
#rename_property(old_property_name, new_property_name) ⇒ NotionRubyMapping::Database
124
125
126
127
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 124
def rename_property(old_property_name, new_property_name)
properties[old_property_name].new_name = new_property_name
self
end
|
#update_property_schema_json ⇒ Hash
Returns created json for property schemas (for update database).
130
131
132
|
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 130
def update_property_schema_json
@payload.update_property_schema_json @property_cache, database_title
end
|