| Module | Waves::Layers::ORM::Sequel |
| In: |
lib/layers/orm/providers/sequel.rb
|
On inclusion, this module:
The controller helper methdods are:
# 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