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: Difference between revisions

From MoodleDocs
Line 25: Line 25:
* Due date: June 24th
* Due date: June 24th


== 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 [http://tracker.moodle.org/browse/MDL-14679 "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|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).


== Meetings ==
== Meetings ==

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.


Objectives

  • Switch to prepared statements - using placeholders and preparing statements protects against sql injection
  • Remove the need for data to be add/strip slashed all over the place in the code.
  • Enable easier and productive unit tests.

Requirements

  • 100% cross-db
  • OOP implementation:
    • Full abstraction: Hide underlying libraries (adodb, pdo...) and drivers to Moodle developers completely.
    • Make it so that the database object can be subclassed - this means for unit tests that want to test database access, the test framework can override necessary methods
    • support ? and :param parameter types (independently of the param types supported by each driver).
    • global $DB
    • profiling, logging and exceptions
  • Easy to use (consistent and similar to current dmllib 1.0)
  • Easy to migrate (provide documentation and utilities to help on that)
  • Complete unit testing (self)
  • Easy unit testing (moodle - real and mockup)
  • Well documented (PHPDocs + use examples)
  • Tasks, bugs and progress tracked in MDL-14679
  • Due date: June 24th


Meetings

Ideas