Create a DatabaseManager for interacting with BridgeDB's database backends
We need a DatabaseManager
which will handle receiving BridgeRequest
s from BridgeDB's distributors, and will queue these requests as transactions with the backend databases.
The distributors are going to use a common method (just call it getBridgesFromDBManager()
for now) to request Bridge
s from the DatabaseManager
, and they will expect to receive some relatively well-supported, simple, serialised format (probably JSON) in return.
-
The Easy Way The easier way to do this would be to not really actually truly make a for-reals ORM, and simply expect to be interacting with a NOSQLly CouchDB backend as described in proposal #226. CouchDB documents are JSON anyway, so this is super easy. If we go this route, we'll need some code to convert the old SQLly stuff to the new NOSQLly format.
-
The Masochistic Way The harder, but possibly better in the long run (should we ever decide to stop using NOSQL/OODBMSs), way to do this would be to write a true ORM/RDBMS which can work with either system.
This databases which this system will interact with will be used for storing complex/referential/self-referential/recursive datatypes, such as bridgedb.Bridges.Bridge
s and structures for storing data about blocking events for bridges (including timestamps, discovery method, and country code of the block, etc.) as defined in Section 1.b. of proposal #226.