Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

DB layer 2.0 implementation plan: Difference between revisions

From MoodleDocs
No edit summary
No edit summary
Line 2: Line 2:
{{Template:Development:dmllib 2.0}}
{{Template:Development:dmllib 2.0}}


DRAFT-DRAFT-DRAFT
== Milestones ==


done:
=== M1: initial commit (due date: May 15th) - HEAD ===
# import latest adodb for PHP5
What is done:
:1. API should be stable, tested during conversion of several parts or moodle
:2. $db-> references are gone
:3. direct adodb function calls should be all gone (except auth and enrol)
:4. some functions from dmllib are deprecated/removed
:5. old ddllib function are not used at all now
:6. XMLDB editor should fully work now
:7. BC compatible 100$


in patch MDL-14679:
=== M2: 4 DBs passing all tests (due date: May 27th) - HEAD ===
# DML - implement basic API as abstract moodle_database class and moodle_recordset interface
# tweak lib/setup.php and related files - place all $DB setup code into one function setup_DB()
# keep old global $db until everything is converted to new global $DB
# all dmllib functions that do not accept $sql or $select can be rewritten to use new $DB - move those classes to lib/dmllib_deprecated.php for now - this allows us to run moodle in hybrid mode for testing purposes
# move all unused dmllib functions to lib/dmllib_removed.php and remove body - this could be useful during the migration phase of contrib (make them to act as wrappers over new dmllib and emit debugging messages!)
# implement basic mysql and postgresql classes
# DDL - refactor data manipulation functions


todo:
:1. mssql and ora related work
# test, refactor, rewrite, improve, etc. the new dmllib classes
:2. use of adodb in enrol and auth plugins
# implement classes for all supported backends - oracle, mssql
:3. functional unit tests (own-db and multi-db)
# majority of code can be converted to new classes while keeping magic quotes on (we are dealing with numbers mostly), the formslib can already return unslashed data and we can add new parameter to data_submitted() too
:4. logging/profiling/exceptions
# kill the magic quotes and convert the rest
:5. xmldb public API refactoring
:6. install
:7. BC compatible 100$
:8. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M2" in the Bug Tracker].


We could also prepare an experimental mysql pdo driver in parallel - this could help to uncover potential problems in API design or implementation.
=== M3: core stuff, pre magic_quotes off tasks (due date: June 24th) - HEAD ===
 
:1. Needs to be detailed in [[dmllib 2.0 migration docs|dmllib 2.0 migration docs]].
:2. Tasks between May28th and June 11th
:3. API should be available in the [http://phpdocs.moodle.org phpdocs site]
:4. BC compatible 100$
:5. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M3" in the Bug Tracker].
 
=== M4: big hacking, post magic_quotes off tasks (due date: June 24th) - In parallel with M3 - (HEAD, BRANCH, PATCH??) ===
 
:1. BREAKAGE with old code.
:2. Documentation finished (Docs (examples, architecture, migration guide...), PHP Docs).
:3. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M4" in the Bug Tracker].
 
=== M5: Moodle tests using real & mockup dmllib (starting on May 27th...) - In parallel and after M3 and M4 - HEAD ===
 
:1. Needs good documentation for developers
:2. Will be huge but useful
:3. Always try to be able to run tests from cli script (apart from UI) to be able to execute them daily and report status in some URL (html output).

Revision as of 23:05, 22 May 2008

Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.


Milestones

M1: initial commit (due date: May 15th) - HEAD

What is done:

1. API should be stable, tested during conversion of several parts or moodle
2. $db-> references are gone
3. direct adodb function calls should be all gone (except auth and enrol)
4. some functions from dmllib are deprecated/removed
5. old ddllib function are not used at all now
6. XMLDB editor should fully work now
7. BC compatible 100$

M2: 4 DBs passing all tests (due date: May 27th) - HEAD

1. mssql and ora related work
2. use of adodb in enrol and auth plugins
3. functional unit tests (own-db and multi-db)
4. logging/profiling/exceptions
5. xmldb public API refactoring
6. install
7. BC compatible 100$
8. In general everything titled as "M2" in the Bug Tracker.

M3: core stuff, pre magic_quotes off tasks (due date: June 24th) - HEAD

1. Needs to be detailed in dmllib 2.0 migration docs.
2. Tasks between May28th and June 11th
3. API should be available in the phpdocs site
4. BC compatible 100$
5. In general everything titled as "M3" in the Bug Tracker.

M4: big hacking, post magic_quotes off tasks (due date: June 24th) - In parallel with M3 - (HEAD, BRANCH, PATCH??)

1. BREAKAGE with old code.
2. Documentation finished (Docs (examples, architecture, migration guide...), PHP Docs).
3. In general everything titled as "M4" in the Bug Tracker.

M5: Moodle tests using real & mockup dmllib (starting on May 27th...) - In parallel and after M3 and M4 - HEAD

1. Needs good documentation for developers
2. Will be huge but useful
3. Always try to be able to run tests from cli script (apart from UI) to be able to execute them daily and report status in some URL (html output).