Skip to content
This repository has been archived by the owner on Apr 17, 2018. It is now read-only.

Roadmap

dkubb edited this page Aug 14, 2010 · 60 revisions

Purpose of this page

DataMapper development is community driven, and priority is based on contributor need. This page lists the things the contributors are interested in seeing in DataMapper prior to 1.0

Contributors Needed

Please review some of the features below, and if you are interested in helping with them, please contact dkubb (Dan Kubb) in irc within #datamapper.

More information is coming; each feature name will be hyperlinked to a document containing more information and any open questions.

0.10.x series

The 0.10.0 series will likely be the last before the 1.0 release (on or before RailsConf 2010).

Here are the planned features:

Finalize the Model, Collection and Resource APIs to be more consistent.

Update the Identity Map API.

Remove RDBMS specific items from dm-core, and to a more appropriate location.

Property

  • Move Paranoid types out into dm-types
  • Unify Property and Type
    • Create one DM::Property subclass for each primitive: Gist
    • Move type specific code from DM::Property into subclasses
    • Move type specific options to subclasses
    • Throw exceptions when wrong option used, like :size in a String object.
    • Update dm-types to inherit from DM::Property

Validations

  • Update dm-validations to add validations when has 1..3 used to ensure the minimal/maximal number of children is present.
    • Should also work for has 1, has 1..n, etc
    • Should consider updating dm-constraints to add a CHECK constraint to make sure the cardinality is enforced at the DB level if possible.

Embedded Value

  • Add EmbeddedValue (EV) with the same API as DM::Model
  • Update dm-validations to work with an EV.
  • This concept comes from PoEAA, and is called the Embedded Value Pattern

Example Code:



class Address
  include DataMapper::EmbeddedValue

  property :street,      String
  property :location,    String
  property :subdivision, String
  property :postal_code, String

  belongs_to :country
end

class User
  include DataMapper::Resource

  property :id,   Serial
  property :name, String

  has 1, :address, Address
end

class Country
  include DataMapper::Resource

  property :id,   Integer, :key => true
  property :name, String
end

General Cleanup

  • Remove dependency from Extlib, and use ActiveSupport, assuming libs can be cherry-picked
  • Change before/after hooks to use explicitly named callbacks, like AR.
  • Update datamapper.org docs, and model Django’s documentation guidelines.
    • Focus on short, quick tutorials, and longer topical guides for each area of DM (querying, models, validations, etc).
Clone this wiki locally