Permalink
Browse files

Update README

  • Loading branch information...
beberlei committed Jun 1, 2011
1 parent 425d5e3 commit 1cd29784ba15ef5493937e1f441735dadf9a8dad
Showing with 3 additions and 149 deletions.
  1. +3 −149 README.markdown
View
@@ -1,151 +1,5 @@
# CouchDB ODM
-# Current Status:
-
-* basic CRUD is implemented
-* metadata reading implemented
-* many2one and many2many with lazyloading mostly implemented
-* flexible ID generation implemented
-* plenty of TODO's noted through out the source code
-* please use the Doctrine Jira to log tickets: http://www.doctrine-project.org/jira/browse/CODM
-
-# Hackaton Discussions: CouchDB + Doctrine
-
-##Problem 1: Query API
-
-* Views
- * including ability to define limit, sort direction, include docs
-* CouchDB-Lucene hidden transparently in the Background
- * Allows a dynamic query language to be implemented
- * Depending on the search backend (query language translator)
-
-##Problem 2: Lazy Loading
-
-How to implement object-graph traversal transparently?
-
-* two views required, because bi-directional relationships?
-* `emit([doc.type, doc.field, doc._id], 0);` (triple)
-
-We need some matadata to be stored in doctrine couchdb odm documents: "type", "relations"
-
-## Problem 3: Joins
-
-2 possibilities: embedded, with ids
-
-"Foreign Keys":
-
-* one-to-many: save one key-reference in each "many"-document
-* many-to-many: save ids in the owning-side document
-* one-to-one: maybe good use-case for embedded documents
-
-## Problem 4: Embedded Documents Use-Case?
-
-Value objects (Color example)
-
-## Problem 5: Computed Values from View
-
-* By default we dump everything that isnt mapped to a property into a "values" array
-* Optionally provide a way to map these values to a key so that we can provide an associative array
-
-## Problem 6: `@DynamicFields`
-
-Just have mapping type "array".
-
- class Address
- {
- /** @var array
- public $additional = array();
- }
-
-## Problem 7: "Eventual Migration" / Liberal Reads
-
-MongoODM has solution for that
-http://www.doctrine-project.org/projects/mongodb_odm/1.0/docs/reference/migrating-schemas/en#migrating-schemas
-
-## Problem 8: Write/Flushing changes
-
-* Conflict Management throws an Exception into the users face :)
-
-## Problem 9: Attachments
-
-Easily lazyloaded by resource handle or "transparent" proxy
-
-## Problem 10: HTTP Client
-
-* Should be interfaced
-* Different implementations: Socket, Stream Wrapper, pecl/http
-
-## Problem 11: Objects without "Doctrine Metadata"
-
-* Eventual migration possibilities for this case should be possible
-
-## Problem 12: ID Generation
-
-* Assigned IDs (Username for the User)
-* Unique Constraints
-* UUID (Generate IDs upfront possible)
-
-# Requirements
-
-1. type of the document in each couchdb "doc"
-2. Expose revision to the user!!!
-3. metadata field in each "doctrine handled" document
-
-## Struct
-
- {
- "_id": "asbaklsjdfksjddf",
- "__doctrine": {
- "type": "foo",
- "relations" : {
- "bar": [ "id1", "id2" ], // M:N
- }
- },
- "fieldA": "foobar"
- "embeddedA": [{...}, {...}]
- }
-
-## Views for relation retrieval
-
-Related objects (works for 1:1, 1:n, n:1 and n:m)
-
- function (doc)
- {
- if (doc.doctrine_metadata &&
- doc.doctrine_metadata.relations)
- {
- var relations = doc.doctrine_metadata.relations;
- for ( type in relations )
- {
- for ( var i = 0; i < relations[type].length; ++i )
- {
- emit([doc._id, type, relations[type][i]], {"_id": relations[type][i]} );
- }
- }
- }
- }
-
-Reverse relations objects (works for 1:1, 1:n, n:1 and n:m)
-
- function (doc)
- {
- if (doc.doctrine_metadata &&
- doc.doctrine_metadata.relations)
- {
- var relations = doc.doctrine_metadata.relations;
- for ( type in relations )
- {
- for ( var i = 0; i < relations[type].length; ++i )
- {
- emit([relations[type][i], type, doc._id], {"_id": relations[type][i]} );
- }
- }
- }
- }
-
-## Also Natural Key Support
- class User
- {
- /** @Id @Field */
- public $username;
- }
+Doctrine CouchDB is a mapper between PHP and CouchDB documents. It uses a metadata mapping
+pattern to map the documents to plain old php objects, no ActiveRecord pattern or base class
+of any kind is necessary.

0 comments on commit 1cd2978

Please sign in to comment.