Skip to content

class rename details #40

Open
Open
@catmando

Description

@catmando

Current direction:

  Hyperstack::Component::Mixin # include this to create a component class
  class MyComponent 
    include Hyperstack::Component::Mixin
  end

  # typically we expect the application to create a master HyperComponent  base class
  # using the mixin similar to ApplicationController or ApplicationRecord

  Hyperstack::Component::ReactAPI # public module giving low level access to React methods
  
   Hyperstack::Component::Internal::RenderingContext  # a private internal module 

   # Above applies to store as well, i.e. Hyperstack::Store::Mixin

   # Models are slightly different because we already have an ApplicationRecord structure:
   class ApplicationRecord < ActiveRecord::Base
      # makes ApplicationRecord and children isomorphic
      include Hyperstack::Model::ActiveRecordAdapter  
      ...
   end
  
   # in future we will have adapters for other ORMs and dbs as well.

   # Hyperstack::Operation is also different, in that it is not sensible to use it as a mixin.  Instead
   # Hyperstack::Operation is the base class of all operations.

As I am converting current code to this format I am thinking that this name structure is slightly redundant and that we would do well to drop the Mixin, thus we would have:

  Hyperstack::Component # include this to create a component class
  class MyComponent 
    include Hyperstack::Component
  end
  # typically we expect the application to create a master HyperComponent  base class
  # using the mixin similar to ApplicationController or ApplicationRecord

  Hyperstack::Component::ReactAPI  # same as currently proposed but...
  # because ReactAPI is now a direct descendent of the mixin inside of the application components
  # you can directly say ReactAPI.  
  
   Hyperstack::Internal::Component::RenderingContext  # swap Internal and Component to 
   # avoid polluting application components name space

   # Above applies to store as well, i.e. Hyperstack::Store is the mixin

   # Models don't change from current proposal
  
   # Hyperstack::Operation could stay the same but because its a class (not a module) we could
   # change it to Hyperstack::Operation::Base, and have its predefined subclasses be:
   # Hyperstack::Operation::ServerOp and Hyperstack::Operation::ControllerOp

Its just an idea...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions