-
Notifications
You must be signed in to change notification settings - Fork 47
Home
Welcome and thanks for considering helping out our ATK Data project. The entirety of this project have been contributed under MIT License and is distributed free of charge. Behind the project is a small team who works on various consultancy projects. If you like ATK Data you are welcome to join us.
As per MIT License terms, ATK Data comes with no warranty. It's wise if you set aside 10h of your project estimate in case you would run into any complication with the library. Should that be the case - contact support@agiletoolkit.org and to reach out for help from the developer team of ATK Data.
Money received through sponsorship is allocated towards priority bug-fixes and improvement
Have you got some spare time and energy in the evening? We are a friendly team, who believe in the potential of ATK Data ideology and work to refine developer experience. Join us by contributing your time and help out by solving simple issues. The rest of the team are professionals with 20+ years of web app development experience and if we notice your potential, we will invite you to participate in commercial projects, start-up projects or even pay for some of your work.
The following topics are currently in focus. We always try to discuss features and produce white-papers before following up with the implementation.
[Copy model object into different data-set while traversing into relations and mapping links](Deep Copy)
Assuming you have the following models:
$invoice->hasMany('Lines', new InvoiceLine());
$payment->hasMany('Allocations', new Allocation());
// Allocation hasOne('invoice_id', Invoice());
you may want to copy to copy your structure either into a different data-set (e.g. Archived Invoices) or perhaps into different persistence, there are number of things to consider:
- field structure may be different
- data type mapping may be different
- conditions may be different
- relation structure may be different
- ID will be different
- internal references within our structure must be preserved (Allocation is many-to-many relationship)
The [Deep copy proposal would implement the entire process taking care of all items above and would allow developer to narrow down the launch the process with the code:
$associations = $invoice->deepCopy($archived_invoices, ['Lines']);
$associations = $payment->deepCopy($archived_payments, ['Allocations'], $associations);
// every time you deepCopy, more records will be added to associations.
Ultimately your code may look like this:
$src_db = Persistence::connect();
$dst_db = Persistence::connect(..);
$dest_db->atomic(function() use($src_db, $dst_db) {
// transaction. Copy invoices first.
$invoices = new Invoice($src_db);
$allocations = $invoices->deepCopy(new Invoice($dst_db), ['Lines'], ['id'=>'original_id']);
$payments = $invoices->ref('Allocations')->ref('payment_id'); // will need all payment data
});
If you are using ATK Data in the commercial project, put extra 10h into your estimate.
If you looking to help with development of Agile Data (and subsequently Agile Toolkit), this page will be kept up-to-date with our current development status as well as link to useful resources.
**If you spot any outdated info on this page, please edit it right away!**
## Request for Comments
- [RFC1 Mutations](RFC1 Mutations)
## Development Status
- Agile Data ^1.0 is safe to use in your project.
- Progress on ^1.1 is here: https://github.com/atk4/data/milestone/7
- Refactor `$m->join()` logic
- Add support for typecasting (datetime, money, etc)
- Add support for custom validators (and docs!)
- Add support for flags (readonly, visible, editable)
- Start using transactions for CRUD operations
- Other improvements
- We brainstorm ideas for ^1.2 in Gitter.im.
Additional resources
- Put some work in [data-primer](/atk4/data-primer) - a sample app demonstrating features
- Create some publicity in Google+, Facebook and Twitter
- Create blog post on features from 1.1
- Create screencast video update for 1.1
Research
- Create Full Agile Data feature Matrix
- Crowdsource feature comparison with generic ORMs (cake, eloquent, fuel, etc)
- Update migration guides: [Yii](Agile-Data-for-Yii2-developers), [Doctrine 2](Agile-Data-for-Doctrine-users), Eloquent, CakePHP3
Draft Documentation
Here are some documents that we are still changing and at some point they must be moved into [General Documentation](http://agile-data.readthedocs.io/en/develop/).
- [SQL Action Matrix](SQL Action Matrix) - how queries are constructed for different actions()
- [Hooks](Hooks) - which hooks are needed and what are the parameters
- [Use of branches](Use-of-branches) - On release policy, branches and to help you decide which version to use.
## Obsolete Info
Needs to make sure it's fully moved into Docs and delete. Those documents may be inaccurate.
- [Business Models](https://github.com/atk4/dataset/wiki/Business-Models) - Implement a clean business logic [DM].
- [Active Record](https://github.com/atk4/dataset/wiki/Active-Record) - Use this when you need individual record access [DM].
- [Explicit Loading and Saving](https://github.com/atk4/dataset/wiki/Explicit-Loading-and-Saving) - Don't rely on framework to do loading magic for you. Load data yourself. [PM]
- [Relation Mapping](https://github.com/atk4/dataset/wiki/Relation-Mapping) - Traverse between business data [DM].
- [Persistence](https://github.com/atk4/dataset/wiki/Persistence) - Design and tweak how your Business Models are mapped into tables [DM->PM].
- [Derived Queries](https://github.com/atk4/dataset/wiki/Derived-Queries) - Express your Business Models as SQL queries [PM].
- [Expressions](https://github.com/atk4/dataset/wiki/Expressions) - Use Derived queries to add fields in your Business Models that are calculated in SQL [PM].
- [Query Building](https://github.com/atk4/dataset/wiki/Query-Building) - Build an execute complex multi-row queries mapped from your Business Models [PM].
- [Unit-testing](https://github.com/atk4/dataset/wiki/Unit-Testing) - Business Models can be decoupled from persistence layer for efficient Unit Testing [DM].
- [Aggregation and Reports](https://github.com/atk4/dataset/wiki/Aggregaation-and-Reports) - Support report generation techniques, aggregation and unions for your Business models [DM].
## Stray Articles
If you find a page on a Wiki that does not belong to any category, link it below:
- here..
## Posts and Articles
We're looking for more 3rd party blogs, tweets and mentions about Agile Data
- [Agile Data Tutorial (simple)](https://www.youtube.com/watch?v=WA4dVin9Hi8&list=PLUUKFD-IBZWYIaG22eAZo2KWpaNGZHkP8&index=1)
- [Reinventing the faulty ORM concept. (+sub-queries, joins, data-sets, events, active record and n+1 problem)](https://www.reddit.com/r/PHP/comments/4f2epw/reinventing_the_faulty_orm_concept_subqueries/)
- [Agile Data, my second open-source project - efficient alternative to ORMs](https://www.reddit.com/r/PHP/comments/4xjus9/agile_data_my_second_opensource_project_efficient/)
- [Love and Hate between ORM and Query Builders. (Draft for my Tech Talk on Agile Data). Please post your feedback!](https://www.reddit.com/r/PHP/comments/4zbza6/love_and_hate_between_orm_and_query_builders/)
## Links
- [Agile Data Github homepage: git.io/ad](http://git.io/ad)
- [Agile Data Site http://agiletoolkit.org/data](http://agiletoolkit.org/data)
- [Googele+ Community: https://plus.google.com/+AgileToolkitOrgCommunity](https://plus.google.com/+AgileToolkitOrgCommunity)
- [Facebook Page: https://www.facebook.com/agiletoolkit](https://www.facebook.com/agiletoolkit)
Agile Data, Documentation and Wiki content is licensed under MIT and (c) by Agile Toolkit Limited UK