|
|
- //This is documentation, not code - the main page in doxygen output ..
-
- /*! \mainpage WORM - ORM framework
- *
- * \section intro_sec Introduction
- *
- * WORM is a Data Abstraction Layer for access to database servers and an
- * Object Relational Mapping system. It consists of libraries providing a
- * generic API for database access and database metadata mapping of schema
- * structure. On top of this there is a tool to generate C++ class files for a
- * given arbitrary database schema called "wormgen". wormgen accepts a few
- * arguments setting the database to use and optionally username, password,
- * output directory, etc. - "wormgen -h" shows usage. See below for more information.
- *
- * At this writing the framework only supports SQlite3 and MySQL databases.
- * and the default output supports Wt's (Web Toolkit http://webtoolkit.eu) Dbo
- * library. It generates header files that (with a little adjustment sometimes)
- * will work with Wt::Dbo for existing database schemata.
- *
- * The output is configurable using the WORM template system which uses
- * google's ctemplate for output templating.
- *
- * Additionally the libraries provide a general API for basic database access
- * including query execution with structured result sets and runtime metadata
- * including column information such as name, data type, defaults, extras, etc.
- *
- * NOTE: This API is not fully stable! I expect there to be some changes and
- * do not yet recommend building off the API for anything serious. wormgen
- * is functional (if simple) and changes there should not cause problems but
- * the libraries are under heavy development. There may be modifications
- * and these should be expected until this message is removed.
- * You have been warned :).
- *
- * \section install_sec Installation
- *
- * \subsection step1 Step 1: Requirements
- * NOTE: THIS IS UNTESTED ON WINDOWS or MAC AND NOT LIKELY TO WORK CURRENTLY..
- * linux or Unices should be ok.
- *
- * \li cmake, make, gcc, libstdc++, stl
- * \li Boost - basic, header only (algorithm/string, lexical_cast)
- * \li SQlite3 libraries - you may comment out the sqlite driver in src/CMakeLists.txt
- * if you don't want SQlite3 support
- * \li libmysqlclient - same applies, you may comment this out
- * \li ctemplate 1.0; libctemplate (currently the no threads version - this can be changed in the cmake files)
- *
- * \subsection step2 Step 2: Obtaining the sources
- * Using git(1) clone the repository thus:
- *\code
- * git clone https://github.com/erikwinn/worm.git worm
- * \endcode
- * This will create a sources directory called "worm" - alternately you can
- * download a tarball and unpack it.
- *
- * \subsection step3 Step 3: Building
- * \code
- * cd worm/build
- * cmake ../
- * make
- * \endcode
- * This will build the libraries and wormgen in ./build/src. By default the static
- * library is built - uncomment the shared library in src/CMakeLists.txt and
- * comment out the static library to change this (todo: add a configure script ..)
- *
- * libraries: libworm.so libworm.a
- * binary: wormgen
- *
- * Installation(optional):
- * \code
- * make install
- * ldconfig
- * \endcode
- *
- * This will install the libraries to /usr/local/lib/libworm.* and the
- * binary to /usr/local/bin/wormgen. Code generation templates will
- * be installed to /usr/local/share/worm/
- *
- \note You can also use wormgen without installing by doing something like this if
- it was built with the shared libraries:
- (use a full path to work outside this directory):
- * \code
- export LD_LIBRARY_PATH=./build/src
- ./build/src/wormgen -h
- * \endcode
- *
- * Uninstall:
- * \code
- * rm /usr/local/bin/wormgen
- * rm /usr/local/lib/libworm*
- * rm -rf /usr/local/share/worm
- * \endcode
- * Alternately you can do:
- * \code
- * cat install_manifest.txt | xargs rm
- * \endcode
- *
- * \note You can also use wormgen \em without installing by doing something like this if
- * it was built with the shared libraries:
- * (use a full path to work outside this directory):
- * \code
- * export LD_LIBRARY_PATH=./build/src
- * ./build/src/wormgen
- * \endcode
- *
- * \section usage Using WORM
- * \subsection codegen Generating code:
- * wormgen Usage:
- * \code
- * wormgen -h
- * \endcode
- * gives a description of the available options.
- *
- * The database (-d) argument is the only required argument - you must have
- * a database already set up and access to it. By default it assumes the username
- * is root with no password - for an SQlite3 database pass the filename as the
- * argument for -d database; for example, from within the source directory you can
- * generate files from the sample Sqlite3 database thus:
- *
- * \code
- * wormgen -D sqlite -d ./examples/blog.db
- * \endcode
- *
- * This will generate files in the current directory - to specify a different output
- * directory use -o /path/to/output, for example:
- *
- * \code
- * wormgen -D sqlite -d ./examples/blog.db -o /tmp
- * \endcode
- *
- * will place the generated files under /tmp
- *
- * Other commandline arguments include:
- * -D driver ([default]mysql or sqlite)
- * -t template directory (default /usr/local/share/worm/ or ./src/orm/templates)
- * -u username
- * -p password
- * -h help - use this to see all the arguments ..
- *
- * \subsection customizing Customizing the output
- * The output can be configured by editing or creating new template files
- * in the template directory - any files in this directory named with the extension
- * ".tpl" are assumed to be templates to use. Note that there is a naming convention
- * for each type of template - see the list of supported template types below.
- *
- * The default template directory is /usr/local/share/worm - the option [-t DIRECTORY]
- * will tell wormgen to look in DIRECTORY for templates, eg:
- * \code
- * wormgen -D sqlite -d ./examples/blog.db -o /tmp -t $HOME/my_worm_templates/
- * \endcode
- * This means that you can copy the default template to my_worm_templates/ and
- * experiment with it or create other templates. Each template must have a filename
- * like the one of the ones listed below - the filename will tell wormgen what kind of
- * template it is and how to name the output files for that template.
- *
- * These are the currently supported template types:
- *
- * \li base class header - generates FooBase.h:<br>
- * ClassDeclarationBase, //class_declaration_base.tpl
- * \li base class source - generates FooBase.cpp:<br>
- * ClassDefinitionBase, //class_definition_base.tpl
- * \li class header - generates Foo.h:<br>
- * ClassDeclaration, //class_declaration.tpl
- * \li class source - generates Foo.cpp:<br>
- * ClassDefinition, //class_definition.tpl
- *
- * Database and class naming conventions:
- * A table in the database should be named in lowercase with underscores
- * for best results (Note: this is optional but will avoid naming conflicts - wormgen
- * will still generate files for camel case naming schema). Ex: some_persons will
- * be transformed to a class SomePerson. Columns like first_name will transform
- * to firstName. Underscores for private variables, accessors, etc can be established
- * in the templates. Table names should be plural and will be transformed to singular.
- *
- * Templates:
- * The templates use ctemplate and currently support only the tags in the default
- * template (which generates Wt::Dbo object headers). A decent introduction to
- * ctemplate syntax is available at the ctemplate website. The supported tags are
- * quite simple and self-explanatory - see the default template for more.
- *
- * \section library Using the library
- *
- * Note that the library API is still unstable and may change.
- *
- * wormgen.cpp itself is quite simple and provides a quick example of using the
- * library - additionally, WormClassGenerator shows usage of the metadata
- * aspects of the library. libworm can also be used for basic database access, queries
- * and generic result sets - but it is currently intended primarily for the ORM
- * generator. The library does not support transactions, and all results are cached
- * locally in one call.
- *
- * There are also some small example programs under examples/ - I recommend
- * starting with these. Also, the library code is heavily commented -and there is
- * HTML documentation under doc/html. Until the API is stablized and "real"
- * documentation written the best course is experimentation and "reading the
- * source, Luke!" - the DAL functions available are documented in comments but
- * not yet stable so your mileage may vary.
- *
- */
|