Class: ForestAdminAgent::Routes::Resources::Store
- Inherits:
-
AbstractAuthenticatedRoute
- Object
- AbstractRoute
- AbstractAuthenticatedRoute
- ForestAdminAgent::Routes::Resources::Store
- Includes:
- Builder, ForestAdminDatasourceToolkit::Components::Query
- Defined in:
- lib/forest_admin_agent/routes/resources/store.rb
Instance Method Summary collapse
Methods inherited from AbstractAuthenticatedRoute
#build, #format_attributes, #redacted_full_projection, #redacted_projection_with_pks
Methods inherited from AbstractRoute
#add_route, #build, #initialize, #routes
Constructor Details
This class inherits a constructor from ForestAdminAgent::Routes::AbstractRoute
Instance Method Details
#handle_request(args = {}) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/forest_admin_agent/routes/resources/store.rb', line 17 def handle_request(args = {}) context = build(args) context..can?(:add, context.collection) relations = (args, context) data = format_attributes(args, context.collection) record = context.collection.create(context.caller, data) link_one_to_one_relations(relations, record, context) id = ForestAdminDatasourceToolkit::Utils::Record.primary_keys(context.collection, record) filter = ForestAdminDatasourceToolkit::Components::Query::Filter.new( condition_tree: ConditionTree::ConditionTreeFactory.match_ids(context.collection, [id]) ) projection = redacted_full_projection(context) records = context.collection.list(context.caller, filter, projection) { name: args[:params]['collection_name'], content: JSONAPI::Serializer.serialize( records[0], is_collection: false, class_name: context.collection.name, serializer: Serializer::ForestSerializer ) } end |
#setup_routes ⇒ Object
11 12 13 14 15 |
# File 'lib/forest_admin_agent/routes/resources/store.rb', line 11 def setup_routes add_route('forest_store', 'post', '/:collection_name', ->(args) { handle_request(args) }) self end |