Module: Notion::Api::Endpoints::Databases

Included in:
Notion::Api::Endpoints
Defined in:
lib/notion/api/endpoints/databases.rb

Instance Method Summary collapse

Instance Method Details

#create_database(options = {}) ⇒ Object

Creates a new database in the specified page.

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :parent (Object)

    Parent of the database, which is always going to be a page.

  • :title (Object)

    Title of this database.

  • :properties (Object)

    Property schema of database. The keys are the names of properties as they appear in Notion and the values are property schema objects. Property Schema Object is a metadata that controls how a database property behaves, e.g. {}. Each database must have exactly one database property schema object of type “title”.



36
37
38
39
40
41
# File 'lib/notion/api/endpoints/databases.rb', line 36

def create_database(options = {})
  throw ArgumentError.new('Required arguments :parent.page_id missing') if options.dig(:parent, :page_id).nil?
  throw ArgumentError.new('Required arguments :title missing') if options.dig(:title).nil?
  throw ArgumentError.new('Required arguments :properties missing') if options.dig(:properties).nil?
  post('databases', options)
end

#database(options = {}) ⇒ Object

Retrieves a Database object using the ID specified in the request.

Returns a 404 HTTP response if the database doesn’t exist, or if the bot doesn’t have access to the database. Returns a 429 HTTP response if the request exceeds Notion’s Request limits.

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :id (id)

    Database to get info on.



16
17
18
19
# File 'lib/notion/api/endpoints/databases.rb', line 16

def database(options = {})
  throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
  get("databases/#{options[:id]}")
end

#database_query(options = {}) ⇒ Object

Gets a paginated array of Page object s contained in the requested database, filtered and ordered according to the filter and sort objects provided in the request.

Filters are similar to the filters provided in the Notion UI. Filters operate on database properties and can be combined. If no filter is provided, all the pages in the database will be returned with pagination.

Sorts are similar to the sorts provided in the Notion UI. Sorts operate on database properties and can be combined. The order of the sorts in the request matter, with earlier sorts taking precedence over later ones.

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :id (id)

    Database to query.

  • :filter (Object)

    When supplied, limits which pages are returned based on the provided criteria.

  • :sorts ([Object])

    When supplied, sorts the results based on the provided criteria.

  • :start_cursor (UUID)

    Paginate through collections of data by setting the cursor parameter to a start_cursor attribute returned by a previous request’s next_cursor. Default value fetches the first “page” of the collection. See pagination for more detail.



69
70
71
72
73
74
75
76
77
78
# File 'lib/notion/api/endpoints/databases.rb', line 69

def database_query(options = {})
  throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
  if block_given?
    Pagination::Cursor.new(self, :database_query, options).each do |page|
      yield page
    end
  else
    post("databases/#{options[:id]}/query", options)
  end
end

#databases_list(options = {}) ⇒ Object

Returns a paginated list of Databases objects for the workspace.

Paginate through collections of data by setting the cursor parameter to a start_cursor attribute returned by a previous request’s next_cursor. Default value fetches the first “page” of the collection. See pagination for more detail.

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :start_cursor (UUID)


88
89
90
91
92
93
94
95
96
# File 'lib/notion/api/endpoints/databases.rb', line 88

def databases_list(options = {})
  if block_given?
    Pagination::Cursor.new(self, :databases_list, options).each do |page|
      yield page
    end
  else
    get('databases', options)
  end
end