Extension Framework Game Plan - PowerPoint PPT Presentation

About This Presentation
Title:

Extension Framework Game Plan

Description:

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. – PowerPoint PPT presentation

Number of Views:16
Slides: 17
Provided by: vinsol

less

Transcript and Presenter's Notes

Title: Extension Framework Game Plan


1
Extension Framework Game Plan
  • VINSOL

2
  • Lets validate and list the capabilities needed
    in Extension Framework through an extension which
    provides feature to mark a product as users
    favorite.

3
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

4
  • 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

5
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

6
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

7
Lets break the above requirements into two groups
  • Model layer changes
  • Request layer changes

8
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

9
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

10
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

11
  • 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

12
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

13
  • 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

14
What we need
  • 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

15
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

16
Thank you...
Write a Comment
User Comments (0)
About PowerShow.com