Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
Hotfix release available: 2018-04-22b "Greebo". upgrade now! [50.2] (what's this?)
course_certifications_live_events_refactoring

Currently we are storing the products in 3 different table namely courses, certification and live_events. Pulling information from these tables to the catalogue page is difficult and it involves scanning of three separate tables. More over, implementing pagination would be difficult. To overcome this problem, we can add a new table named products which would store all the common fields of course, certification and live_events (the fields which are generic to identify the item as a product)

This is how the DB design and the corresponding model design should be:

products

  • id
  • title
  • description
  • owner_id
  • display_in_catalog
  • display_in_catalog_start_date
  • display_in_catalog_end_date
  • free
  • price
  • associate_id
  • associate_type
  • created_at
  • updated_at

Impact on current code

No major code change. The CRUD operations of the Course, Certification and LiveEvents will happen as it is now. When ever a Course, Certification or a LiveEvent gets updated, the common attributes are updated in the product table so that the solr index gets updated.

The catalog search display will be based on the data stored in the product table.

Catalog Search

As mentioned earlier, the main purpose of introducing the product table was to improve the performance of the search functionality. When a product gets created/udpated the solr index for the same record is updated. The index update happens in an Asynchronous manner using the Workling-Starling setup. Since it is Asynchronous, the immediate data updation might not get reflected in the search results. The results would only get updated after a period of time (once the index gets updated)

course_certifications_live_events_refactoring.txt · Last modified: 2018/08/31 16:16 (external edit)