Module Waves::Layers::ORM::Sequel
In: lib/layers/orm/providers/sequel.rb

The Sequel ORM layer sets up the Sequel connection and configures AutoCode on Models, so that constants in that namespace get loaded from file or created as subclasses of Models::Default. The dataset for models is set to the snakecased version of the model‘s class name.

Methods

included  

Included Modules

AutoCode Waves::Layers::ORM::Sequel::ControllerMethods

Classes and Modules

Module Waves::Layers::ORM::Sequel::ControllerMethods

Public Class methods

On inclusion, this module:

  • creates on the application module a database method that establishes the Sequel connection
  • arranges for autoloading/autocreation of missing constants in the Models namespace
  • defines Sequel-specific helper methods on Waves::Controllers::Base

The controller helper methdods are:

  • all
  • find(name)
  • create
  • delete(name)
  • update(name)

[Source]

    # File lib/layers/orm/providers/sequel.rb, line 23
23:         def self.included(app)
24:           
25:           gem 'sequel', '>= 2.0.0'
26:           require 'sequel'
27:           require "#{File.dirname(__FILE__)}/sequel/tasks/schema" if defined?(Rake)
28:           require "#{File.dirname(__FILE__)}/sequel/tasks/generate" if defined?(Rake)
29:           
30:           def app.database ; @sequel ||= ::Sequel.open( Waves.config.database ) ; end
31:                       
32:           app.auto_create_module( :Models ) do
33:             include AutoCode
34:             auto_create_class :Default, ::Sequel::Model
35:             auto_load :Default, :directories => [ :models ]
36:           end
37:           
38:           app.auto_eval :Models do
39:             auto_create_class true, app::Models::Default
40:             auto_load true, :directories => [ :models ]
41:             # set the Sequel dataset based on the model class name
42:             # note that this is not done for app::Models::Default, as it isn't 
43:             # supposed to represent a table
44:             auto_eval true do
45:               default = superclass.basename.snake_case.pluralize.intern
46:               if @dataset && @dataset.opts[:from] != [ default ]
47:                 # don't clobber dataset from autoloaded file
48:               else
49:                 if respond_to? :set_dataset
50:                   set_dataset Waves.main.database[ basename.snake_case.pluralize.intern ]
51:                 end
52:               end
53:             end
54:           end
55:             
56:           Waves::Controllers::Base.instance_eval do
57:             include Waves::Layers::ORM::Sequel::ControllerMethods
58:           end
59:             
60:         end

[Validate]