| 6 | | |
| 7 | | = Database API Cleanup = |
| 8 | | |
| 9 | | The existing database API is inconsistent, buggy, and ill-documented. Before we can continue to build on this base, it needs to be shored up. |
| 10 | | |
| 11 | | * #1037 - refactor builds/build_requests tables |
| 12 | | * #1036, #1035 - bugs in build claiming |
| 13 | | * All synchronous database accesses ({{{db.fooNow}}}) need to be removed |
| 14 | | * Consider using SQLAlchemy or another existing DB abstraction layer to handle schema changes and feature conversion (auto increment, indexes, etc.) |
| 15 | | * Other possibilities (db tickets): [[TicketQuery(keywords=~database&status!=closed&id!=1037&id!=1036&id!=1035, compact)]] |
| 16 | | |
| 17 | | == Encodings == |
| 18 | | |
| 19 | | We need to straighten out how strings are handled in the database, by doing a full-scale encoding audit of the codebase. That means that every string attribute needs to be either a bytestring (and thus decoded as ASCII with replacement for display) or a Unicode string (and thus encoded properly from its source encoding on input). This will need a robust testing framework, as it's easy to forget about encoding when dealing with ASCII strings. Tickets include: [[TicketQuery(keywords=~encoding&status!=closed)]] |