Class: DatabasusRuby::Workspaces

Inherits:
Object
  • Object
show all
Includes:
Endpoint
Defined in:
lib/databasus_ruby/objects/workspaces.rb,
sig/databasus_ruby.rbs

Overview

Workspaces, their members and their audit trail.

workspace = client.workspaces.create(name: "production")
client.workspaces.add_member(workspace.id, email: "ops@example.com",
                           role: "WORKSPACE_ADMIN")

Note that the membership endpoints live under /workspaces/memberships/id, where id is still the workspace id.

Constant Summary collapse

MEMBER_ROLES =

Returns:

  • (Array[String])
%w[WORKSPACE_OWNER WORKSPACE_ADMIN WORKSPACE_MEMBER WORKSPACE_VIEWER].freeze

Instance Attribute Summary

Attributes included from Endpoint

#client

Instance Method Summary collapse

Methods included from Endpoint

#acknowledged, #build, #collection, #compact, #escape, #http_delete, #http_get, #http_post, #http_put, #initialize, #inspect, #object, #single_value, #with_default_workspace

Methods inherited from Object

#==, #[], #hash, #initialize, #inspect, #key?, #keys, #method_missing, #respond_to_missing?, #to_h

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class DatabasusRuby::Object

Instance Method Details

#add_member(id, email:, role:) ⇒ Object

POST /workspaces/memberships/id/members — adds an existing user or invites a new one; the response status says which happened (ADDED or INVITED). role is one of MEMBER_ROLES.

Parameters:

  • id (String)
  • email: (String)
  • role: (String)

Returns:



60
61
62
# File 'lib/databasus_ruby/objects/workspaces.rb', line 60

def add_member(id, email:, role:)
  object(http_post("workspaces/memberships/#{escape(id)}/members", { email: email, role: role }))
end

#audit_logs(id, limit: nil, offset: nil, before_date: nil) ⇒ Collection

GET /workspaces/id/audit-logs

Parameters:

  • id (String)
  • limit: (Integer, nil) (defaults to: nil)
  • offset: (Integer, nil) (defaults to: nil)
  • before_date: (String, nil) (defaults to: nil)

Returns:



46
47
48
49
50
# File 'lib/databasus_ruby/objects/workspaces.rb', line 46

def audit_logs(id, limit: nil, offset: nil, before_date: nil)
  response = http_get("workspaces/#{escape(id)}/audit-logs",
                      { limit: limit, offset: offset, beforeDate: before_date })
  collection(response, key: "auditLogs")
end

#change_member_role(id, user_id, role:) ⇒ Boolean

PUT /workspaces/memberships/id/members/userId/role

Parameters:

  • id (String)
  • user_id (String)
  • role: (String)

Returns:

  • (Boolean)


70
71
72
73
# File 'lib/databasus_ruby/objects/workspaces.rb', line 70

def change_member_role(id, user_id, role:)
  acknowledged(http_put("workspaces/memberships/#{escape(id)}/members/#{escape(user_id)}/role",
                        { role: role }))
end

#create(name:) ⇒ Object

POST /workspaces

Parameters:

  • name: (String)

Returns:



25
26
27
# File 'lib/databasus_ruby/objects/workspaces.rb', line 25

def create(name:)
  object(http_post("workspaces", { name: name }))
end

#delete(id) ⇒ Boolean

DELETE /workspaces/id

Parameters:

  • id (String)

Returns:

  • (Boolean)


41
42
43
# File 'lib/databasus_ruby/objects/workspaces.rb', line 41

def delete(id)
  acknowledged(http_delete("workspaces/#{escape(id)}"))
end

#get(id) ⇒ Object Also known as: find

GET /workspaces/id

Parameters:

  • id (String)

Returns:



30
31
32
# File 'lib/databasus_ruby/objects/workspaces.rb', line 30

def get(id)
  object(http_get("workspaces/#{escape(id)}"))
end

#listCollection Also known as: all

GET /workspaces — the workspaces the current user belongs to.

Returns:



18
19
20
# File 'lib/databasus_ruby/objects/workspaces.rb', line 18

def list
  collection(http_get("workspaces"), key: "workspaces")
end

#members(id) ⇒ Collection

GET /workspaces/memberships/id/members

Parameters:

  • id (String)

Returns:



53
54
55
# File 'lib/databasus_ruby/objects/workspaces.rb', line 53

def members(id)
  collection(http_get("workspaces/memberships/#{escape(id)}/members"), key: "members")
end

#remove_member(id, user_id) ⇒ Boolean

DELETE /workspaces/memberships/id/members/userId

Parameters:

  • id (String)
  • user_id (String)

Returns:

  • (Boolean)


65
66
67
# File 'lib/databasus_ruby/objects/workspaces.rb', line 65

def remove_member(id, user_id)
  acknowledged(http_delete("workspaces/memberships/#{escape(id)}/members/#{escape(user_id)}"))
end

#transfer_ownership(id, new_owner_email:) ⇒ Boolean

POST /workspaces/memberships/id/transfer-ownership

Parameters:

  • id (String)
  • new_owner_email: (String)

Returns:

  • (Boolean)


76
77
78
79
# File 'lib/databasus_ruby/objects/workspaces.rb', line 76

def transfer_ownership(id, new_owner_email:)
  acknowledged(http_post("workspaces/memberships/#{escape(id)}/transfer-ownership",
                         { newOwnerEmail: new_owner_email }))
end

#update(id, **attributes) ⇒ Object

PUT /workspaces/id

Parameters:

Returns:



36
37
38
# File 'lib/databasus_ruby/objects/workspaces.rb', line 36

def update(id, **attributes)
  object(http_put("workspaces/#{escape(id)}", attributes))
end