diff --git a/README.md b/README.md index 71ae998..3bcbac5 100644 --- a/README.md +++ b/README.md @@ -152,3 +152,46 @@ pub struct Book { To read more about these features, you can refer to the [online documentation](https://docs.rs/georm/). + +## Roadmap / TODO + +The following features are being considered for future development: + +### High Priority +- **Transaction Support**: Add comprehensive transaction support with + transaction-aware CRUD methods and relationship handling for atomic + operations across multiple entities +- **Race Condition Fix**: Replace the current `create_or_update` + implementation with database-specific UPSERT operations (PostgreSQL + `ON CONFLICT`, MySQL `ON DUPLICATE KEY UPDATE`, SQLite `ON + CONFLICT`) to prevent race conditions + +### Medium Priority +- **Multi-Database Support**: Extend Georm to support MySQL and SQLite + in addition to PostgreSQL, with database-specific optimizations and + dialect handling +- **Relationship Optimization**: Implement eager loading and N+1 query + prevention with circular dependency protection to dramatically + improve performance when working with related entities +- **Composite Primary Keys**: Add support for entities with multiple + primary key fields using auto-generated ID structs and type-safe + composite key handling +- **Soft Delete**: Implement optional soft delete functionality with + `deleted_at` timestamps, allowing entities to be marked as deleted + without physical removal + +### Lower Priority +- **Migration Support**: Add optional migration utilities that + leverage SQLx's existing infrastructure for schema generation, + verification, and evolution +- **Enhanced Error Handling**: Consider implementing custom error + types with better categorization and operation context while + maintaining compatibility with SQLx errors +- **Many-to-Many Relationship Improvements**: Add direct methods to + add or remove items from many-to-many relationships without manually + handling the join table + +### Recently Completed +- ✅ **Defaultable Fields**: Support for fields with database defaults + or auto-generated values, creating companion structs with optional + fields for easier entity creation