tasks/thor/templates/generator/example_app/app/v1/resources/user.rb in praxis-2.0.pre.33 vs tasks/thor/templates/generator/example_app/app/v1/resources/user.rb in praxis-2.0.pre.34

- old
+ new

@@ -3,15 +3,39 @@ module V1 module Resources class User < Base model ::User + # Define the name mapping from API filter params, to model attribute/associations + # when they aren't 1:1 the same + # filters_mapping( + # 'label': 'association.label_name' + # ) + + # Add dependencies for resource attributes to other attributes and/or model associations # To compute the full_name (method below) we need to load first and last names from the DB property :full_name, dependencies: %i[first_name last_name] # Computed attribute that combines first and last def full_name [first_name, last_name].join(' ') + end + + + def self.create(payload) + # Assuming the API field names directly map the the model attributes. Massage if appropriate. + self.new(model.create(**payload.to_h)) + end + + def update(payload:) + # Assuming the API field names directly map the the model attributes. Massage if appropriate. + record.update(**payload.to_h) + self + end + + def delete + record.destroy + self end end end end