Design document

This project did not start by sitting back and design things first. I Can't tell if Pawel did, it was a good and obvious setup when I took over. But later when things went complex using concurrency it was necessary to make some drawings to show how things are connected. The user however can get by by digesting the most simple diagrams because this is how it feels to the user.

Me, on the other hand, and later people who take over the project, need some diagrams to see how the objects interact with each other and to remember later how and why things were done that way.

Users view of the package

First a class diagram where the obvious classes are noted.

User::ProgramClientDatabaseCollectionCursor

The user can use the classes mostly in one of the two following ways;

"Using run-command to insert, update etc"User::ProgramUser::ProgramClientClientDatabaseDatabaseMongoDB::Client.new(:$uri)$client$client.database($name)$database$database.run-command($command)$document

"Searching for information in database"User::ProgramUser::ProgramClientClientDatabaseDatabaseCollectionCollectionCursorCursorMongoDB::Client.new(:$uri)$client$client.database($name)$database$database.collection($name)$collection$collection.find($criteria,$projection)$cursor$cursor.fetch$document

ABCDEFGH0102030405060708090100