Here is what I propose:

First, we create a plugins portion of the repository:
http://ruby-sequel.googlecode.com/svn/plugins/

Then, for each logical extension we wish to create a plgin for:

http://ruby-sequel.googlecode.com/svn/plugins/orderable
- provide move_up, move_down, move_to_top, move_to_bottom,move_to that
updated a position field in the table

http://ruby-sequel.googlecode.com/svn/plugins/tree
- provide parent, children, ancestors, siblings

http://ruby-sequel.googlecode.com/svn/plugins/timestamped
- handle updated_at and created_at timestamps automatically

http://ruby-sequel.googlecode.com/svn/plugins/searchable
- provide full text search of certain fields via ferret/solr/lucene/sphinx

http://ruby-sequel.googlecode.com/svn/plugins/taggable
- provide methods to add and remove tags for an entry

http://ruby-sequel.googlecode.com/svn/plugins/list
- first, previous, next, last

http://ruby-sequel.googlecode.com/svn/plugins/versioned
- provides: version, stores old versions on save and provide access to them

We can implement each plugin as modules:

module Sequel
  module List
  end
end

And provide cannonical Model methods is_a(), and is() for including the
module:

class Item < Sequel::Model(:item)
  is_a :list
  is :orderable
end

Note: is_a is an alias for is so as to provide easier readability of the
model.

And yes this means I am willing to contribute.

  ~Wayne

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to