Skip to content

Migrate Database layer from PDO to DBAL

Fridtjof requested to merge db-dbal into master

Closes #900 (closed)

What does this MR do?

It replaces PDO with Doctrine's Database Abstraction Layer (DBAL). This is the default for Symfony projects, the base for Doctrine's ORM (which we don't use, but is a default as well), and is therefore well integrated into the ecosystem:

  • Sentry hooks into it to annotate time spent for DB queries in tracing
  • Symfony's debug toolbar (see !1580 (merged)) will be able to show DB queries involved in rendering a page

Its API is a bit nicer than plain PDO, and it comes with a query builder that replaces FluentPDO.

How confident are you it won't break things if deployed?

Pretty confident. PDO to DBAL is pretty 1:1 except for some things that I've taken care of to adapt properly.

How to test

  • Check if the database connection works in general (should be very obvious if not)
  • Exercise various parts of the website to see if anything is broken due to the slightly different API we're using now
  • The ReportsGateway had quite some changes, but I don't know how to test that - but is it even relevant? From what I can tell, that code is unused in favor of the Meldegruppen system anyway

Checklist

  • added a test, or explain why one is not needed/possible...
  • no unrelated changes
  • asked someone for a code review
  • set a "for:" label to indicate who will be affected by this change
  • added to the next milestone (see https://gitlab.com/foodsharing-dev/foodsharing/-/milestones, unless it has a "for:Dev" label)
  • added an entry to CHANGELOG.md
  • added a short text that can be used in the release notes technical change
  • Once your MR has been merged, you are responsible to create a testing issue in the Beta Testing forum: https://foodsharing.de/?page=bezirk&bid=734&sub=forum. Please change the MRs label to "state:Beta testing".
    • Consider writing a detailed description in German.
    • Describe in a few sentences, what should be tested from a user perspective.
    • Also mention different settings (e.g. different browsers, roles, ...) how this change can be tested.
    • Be aware, that also non technical people should understand.
Edited by Fridtjof

Merge request reports