Class: ActivePostgrest::Client
- Inherits:
-
Object
- Object
- ActivePostgrest::Client
- Defined in:
- lib/active_postgrest/client.rb
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
Instance Method Summary collapse
- #anonymous ⇒ Object
- #explain(resource, params = {}, schema: nil) ⇒ Object
- #get(resource, params = {}, count: :exact, schema: nil) ⇒ Object
-
#initialize(base_url = ENV.fetch('POSTGREST_URL'), jwt_token = nil) ⇒ Client
constructor
A new instance of Client.
- #openapi ⇒ Object
- #table_schema(table) ⇒ Object
- #tables ⇒ Object
- #with_token(jwt) ⇒ Object
Constructor Details
#initialize(base_url = ENV.fetch('POSTGREST_URL'), jwt_token = nil) ⇒ Client
Returns a new instance of Client.
8 9 10 11 12 13 14 15 |
# File 'lib/active_postgrest/client.rb', line 8 def initialize(base_url = ENV.fetch('POSTGREST_URL'), jwt_token = nil) @base_url = base_url @auth_header = "Bearer #{jwt_token}" if jwt_token @conn = Faraday.new(base_url, request: { params_encoder: Faraday::FlatParamsEncoder }) do |f| f.request :json f.response :json end end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
6 7 8 |
# File 'lib/active_postgrest/client.rb', line 6 def base_url @base_url end |
Instance Method Details
#anonymous ⇒ Object
47 48 49 |
# File 'lib/active_postgrest/client.rb', line 47 def anonymous self.class.new(@base_url) end |
#explain(resource, params = {}, schema: nil) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/active_postgrest/client.rb', line 29 def explain(resource, params = {}, schema: nil) @conn.get(resource, params) do |req| auth_headers(req) req.headers['Accept'] = 'application/vnd.pgrst.plan+text; for="application/json"; options=verbose' req.headers['Accept-Profile'] = schema if schema end.body end |
#get(resource, params = {}, count: :exact, schema: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/active_postgrest/client.rb', line 37 def get(resource, params = {}, count: :exact, schema: nil) response = @conn.get(resource, params) do |req| auth_headers(req) req.headers['Prefer'] = "count=#{count}" req.headers['Accept-Profile'] = schema if schema end raise_on_error!(response) response end |
#openapi ⇒ Object
17 18 19 |
# File 'lib/active_postgrest/client.rb', line 17 def openapi @openapi ||= @conn.get('/').body end |
#table_schema(table) ⇒ Object
25 26 27 |
# File 'lib/active_postgrest/client.rb', line 25 def table_schema(table) openapi.dig('definitions', table) || {} end |
#tables ⇒ Object
21 22 23 |
# File 'lib/active_postgrest/client.rb', line 21 def tables openapi['paths']&.keys&.filter_map { |p| p.delete_prefix('/').then { |s| s.empty? ? nil : s } } || [] end |
#with_token(jwt) ⇒ Object
51 52 53 |
# File 'lib/active_postgrest/client.rb', line 51 def with_token(jwt) self.class.new(@base_url, jwt) end |