Class: NotionRubyMapping::Database

Inherits:
Base
  • Object
show all
Defined in:
lib/notion_ruby_mapping/blocks/database.rb

Overview

Notion database

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

Constructor Details

This class inherits a constructor from NotionRubyMapping::Base

Class Method Details

.find(id, dry_run: false) ⇒ NotionRubyMapping::Database, String

Parameters:

  • id (String)
  • dry_run (Boolean) (defaults to: false)

    true if dry_run

Returns:

See Also:



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

#[](key) ⇒ NotionRubyMapping::PropertyCache, Hash

Returns obtained Page value or PropertyCache.

Parameters:

  • key (String)

Returns:



24
25
26
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 24

def [](key)
  get key
end

#add_property(klass, title) {|prop| ... } ⇒ NotionRubyMapping::Property



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

Parameters:

  • assign (Array<Property, Class, String>)
  • dry_run (Boolean) (defaults to: false)

    true if dry_run

Yields:

  • (page, pp)

Returns:

See Also:



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

#database_titleNotionRubyMapping::RichTextArray



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

#descriptionNotionRubyMapping::RichTextArray



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

Parameters:



77
78
79
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 77

def description=(text_info)
  @payload.description = text_info
end

#is_inlineBoolean

Returns:

  • (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

Parameters:

  • flag (Boolean)


87
88
89
# File 'lib/notion_ruby_mapping/blocks/database.rb', line 87

def is_inline=(flag)
  @payload.is_inline = flag
end

#property_schema_jsonHash

Returns created json for property schemas (for create database).

Returns:

  • (Hash)

    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_jsonHash

Returns created json for property values.

Returns:

  • (Hash)

    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

Parameters:

  • query (NotionRubyMapping::Query) (defaults to: Query.new)

    object

  • dry_run (Boolean) (defaults to: false)

    true if dry_run

Returns:

See Also:



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

#remove_properties(*property_names) ⇒ Array<NotionRubyMapping::Property>



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

Parameters:

  • old_property_name (String)
  • new_property_name (String)

Returns:



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_jsonHash

Returns created json for property schemas (for update database).

Returns:

  • (Hash)

    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