Class: CmisServer::AtomPub::QueryController
- Inherits:
-
BaseController
- Object
- ActionController::Base
- CmisServer::ApplicationController
- BaseController
- CmisServer::AtomPub::QueryController
- Includes:
- RepositoryScopable
- Defined in:
- app/controllers/cmis_server/atom_pub/query_controller.rb
Instance Method Summary collapse
-
#query ⇒ Object
POST /query.
-
#queryable_types ⇒ Object
GET /query/types.
-
#validate_query ⇒ Object
POST /query/validate.
Methods included from RepositoryScopable
Methods inherited from BaseController
#raw_post_body, #render_standard_error, #request_entry_parser
Methods inherited from CmisServer::ApplicationController
Instance Method Details
#query ⇒ Object
POST /query
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/cmis_server/atom_pub/query_controller.rb', line 11 def query query_data = parse_query_request begin discovery_service = CmisServer::DiscoveryService.new(@repository, current_context) results = discovery_service.query( query_data[:statement], search_all_versions: query_data[:search_all_versions], include_allowable_actions: query_data[:include_allowable_actions], include_relationships: query_data[:include_relationships], rendition_filter: query_data[:rendition_filter], max_items: query_data[:max_items], skip_count: query_data[:skip_count] ) respond_to do |format| format.atom_feed { render "cmis_server/atom_pub/query_results_feed", locals: { results: results } } format.json { render json: format_query_results_for_json(results) } end rescue => e Rails.logger.error "QueryController#query: Error occurred: #{e.class} - #{e.}" Rails.logger.error "QueryController#query: Backtrace:\n#{e.backtrace.join("\n")}" # Add detailed error message to response respond_to do |format| format.atom_feed do render xml: { error: { type: e.class.name, message: e., backtrace: e.backtrace[0..5] } }.to_xml(root: 'error'), status: 500 end format.json do render json: { error: { type: e.class.name, message: e., backtrace: e.backtrace[0..5] } }, status: 500 end end end end |
#queryable_types ⇒ Object
GET /query/types
49 50 51 52 53 54 55 56 57 |
# File 'app/controllers/cmis_server/atom_pub/query_controller.rb', line 49 def queryable_types repository = repository_from_request queryable_types = CmisServer::TypeRegistry.types.select { |_, type| type.queryable } respond_to do |format| format.atom_feed { render "cmis_server/atom_pub/queryable_types_feed", locals: { types: queryable_types } } format.json { render json: format_queryable_types_for_json(queryable_types) } end end |
#validate_query ⇒ Object
POST /query/validate
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/cmis_server/atom_pub/query_controller.rb', line 60 def validate_query query_data = parse_query_request begin discovery_service = CmisServer::DiscoveryService.new(@repository, current_context) validation_result = discovery_service.validate_query(query_data[:statement]) respond_to do |format| format.json { render json: { valid: validation_result[:valid], errors: validation_result[:errors] } } end rescue => e render_error(e) end end |