-*- markdown -*-

# Changes and TODO

## TODO (Please contribute feedback, ideas, code, documentation, donation...)

- [TODO] Add support for composite keys (primary key, foreign key)
- [TODO] Optimistic locks using lock-counter field (optional column in meta)
- [TODO] Enable column names with dash/underscore (Use Clj-SQL instead?)
- [TODO] Easy/transparent API for JDBC connection pooling (maybe Clj-DBCP?)
- [TODO] Discriminator based relation (idea from Hibernate Polymorphism)
- [TODO] Function to retrieve rows from an entire relation graph
- [TODO] Entity type that spans multiple relations
- [TODO] Implement *show-sql* flag for non-SELECT queries too
- [TODO] Provide 'insert' and 'update' functions and related clause DSL
- [TODO] Declarative transactions
- [TODO] Integration with Lucene for full-text search (idea from Squeryl 0.9.5)
- [TODO] Sharding support

## 0.2 / 2010-Sep-?? (GMT + 5:30)

[TODO] Unit tests for entity functions (large result sets)
[TODO] Unit tests for new clause functions (complex queries)
[TODO] Documentation/tutorial

- DSL for SQL clauses, Sub-query support
- Support for :groupby and :other attributes in entity/find-xxx functions
- Support large sized query result-sets (with-query-results style)
- Minor backward-incompatible change in entity API
- *assert-args* flag for development mode (can be turned off in production)

## 0.1 / 2010-Aug-31 (GMT + 5:30)

- Entity definitions, meta data, relations (1-to-many, many-to-1)
- CRUD (Create, Retrieve, Update, Delete) functions for entities
- Small-to-medium sized query result-sets (eager-fetching is the only option)
- Query by COUNT(*) function
- User can specify columns, WHERE clause in retrieve functions
- CRUD (Create, Retrieve, Update, Delete) functions for entity-relations
- Avoid N+1 Selects