Patch by Strum. Ticket #451 - Convert all mongokit style .find, .find_one, .one calls...
[mediagoblin.git] / mediagoblin / db / __init__.py
index c129cbf867f69dae978186056728b4a8c123a7df..27ca4b06547fb0fd8cdca37e63b4eb38e49bda62 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
 #
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+"""
+Database Abstraction/Wrapper Layer
+==================================
+
+This submodule is for most of the db specific stuff.
+
+There are two main ideas here:
+
+1. Open up a small possibility to replace mongo by another
+   db.  This means, that all direct mongo accesses should
+   happen in the db submodule.  While all the rest uses an
+   API defined by this submodule.
+
+   Currently this API happens to be basicly mongo.
+   Which means, that the abstraction/wrapper layer is
+   extremely thin.
+
+2. Give the rest of the app a simple and easy way to get most of
+   their db needs. Which often means some simple import
+   from db.util.
+
+What does that mean?
+
+* Never import mongo directly outside of this submodule.
+
+* Inside this submodule you can do whatever is needed. The
+  API border is exactly at the submodule layer. Nowhere
+  else.
+
+* helper functions can be moved in here. They become part
+  of the db.* API
+
+"""