Extension framework game plan
Sponsored Links
This presentation is the property of its rightful owner.
1 / 16

Extension Framework Game Plan PowerPoint PPT Presentation


Let’s validate and list the capabilities needed in Extension Framework through an extension which provides feature to mark a product as user’s favorite.

Download Presentation

Extension Framework Game Plan

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Extension Framework Game Plan

VINSOL


Let’s validate and list the capabilities needed in Extension Framework through an extension which provides feature to mark a product as user’s favorite.


Favorite Product Extension Requirements:

Ability to mark and unmark a Product as favorite

  • a View probably showing all products with Ability to mark/unmark product as favorite

  • a controller action preparing the view

  • a route exposing the controller / view through Web

  • a controller action handling mark product as favorite

  • a route exposing the controller / view through Web


  • a controller action removing product from the list of favorites

  • a route exposing the controller / view through Web

  • a model interfacing with database to store product favorited by user

  • a migration to create join table in database

  • a join table storing product_id and user_id


Showing All Products favorited by a User

  • association in User to get favorite products

  • a View showing list of Favorite Products

  • a controller preparing the view

  • a route exposing the controller / view through Web


Showing Users who favorited a particular Product

  • association in Product to get users who favorited

  • a View showing list of Users who favorited

  • a controller preparing the view

  • a Route exposing the controller / view through Web

  • Ability to test the integration of above mentioned requirements


Let’s break the above requirements into two groups

  • Model layer changes

  • Request layer changes


Model Layer Changes

Ability to mark and unmark a Product as favorite

  • a model interfacing with database to store product favorited by user

  • a migration to create join table in database

  • a join table storing product_id and user_id

    Showing All Products favorited by a User

  • association in User to get favorite products

    Showing Users who favorited a particular Product

  • association in Product to get users who favorited


translates to

Ability to mark and unmark a Product as favorite

  • New Ecto Model with user_id and product_id fields

  • Ecto migration to create join table storing product_id and user_id

    Showing All Products favorited by a User

  • extending User schema to have associations as needed

  • support functions in User Model to retrieve all products favorited by a user

    Showing Users who favorited a particular Product

  • extending Product schema to have associations as needed

  • support functions in Product Model too retrieve all users who favorited a product


Request Layer Changes

Ability to mark and unmark a Product as favorite

  • a View probably showing all products with ability to mark/unmark product as favorite

  • a controller action preparing the view

  • a route exposing the controller / view through Web

  • a controller action handling mark product as favorite

  • a route exposing the controller / view through Web

  • a controller action removing product from the list of favorites

  • a route exposing the controllerontroller / view through Web


Showing All Products favorited by a User

  • a View showing list of Products

  • a controller preparing the view

  • already route exposing the controller / view through Web

    Showing Users who favorited a particular Product

  • a View showing list of Users

  • a controller preparing the view

  • a route exposing the controller / view through Web


translates to

Ability to mark and unmark a Product as favorite

  • a View probably showing all products with ability to mark/unmark product as favorite

  • a controller with index / create / delete action

  • a route exposingposing index / create / delete action


Showing All Products favorited by a User

  • a View showing list of Products

  • a controller preparing the viewew

  • a route exposing the controller / view through Web

    Showing Users who favorited a particular Product

  • a View showing list of Users

  • a controller preparing the view

  • a route exposing throughe controller / view through Web


  • way to extend schema definitions for existing models

  • way to add new functions in existing models

  • way to add routes

  • way to add controller / views for newly added routes

  • way to extend views

  • way to reuse layouts

  • way to reuse already available routes

What we need


How we attempt to solve

  • Elixir Metaprogramming

  • Elixir umbrella app dependencies to share and reuse code among Nectar & Extensions using ExtensionManager

  • Extensions as Phoenix project leveraging NectarCommerce


Thank you...


  • Login