A C++ Implementation of the Active Record Pattern
C C++ Shell Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
examples
include
profiling
src
test
.gitignore
.travis.yml
AUTHORS
COPYING
ChangeLog
DEVELOPMENT.md
Gemfile
INSTALL
INSTALL.md
Makefile.am
Makefile.in
NEWS
README
README.md
Rakefile
VERSION
aclocal.m4
compile
config.h.in
configure
configure.ac
depcomp
install-sh
missing

README.md

Build Status

ActiveRecord - a C++ implementation of the Active Record pattern.

Databases supported:

  • PostgreSQL
  • SQLite

Installation

See the file INSTALL.md.

Quick Start Guide

Here's a Hello World! example, that saves a record to the database, and retrieves it:

#include <active_record/type.h>
#include <active_record/base.h>
#include <active_record/connection.h>
#include <active_record/query.h>
#include <iostream>

using namespace ActiveRecord;

class Greeting: public ActiveRecord::Base< Greeting > {
 public:
  AR_CONSTRUCTORS( Greeting )
  static Table table( Connection * connection ) {
    Table td( connection, "greetings" );
    td.fields() = fields
                  ( "salute",   ActiveRecord::text )
                  ( "thing",    ActiveRecord::text )
                  ( "language", ActiveRecord::text );
    return td;
  }
};

AR_DECLARE( Greeting )

int main( int argc, const char *argv[] ) {
  Connection connection;
  connection.connect( options
                      ( "adapter", "sqlite" )
                      ( "database", "greetings.sqlite3" ) );
  Greeting::setup( &connection );
  connection.update_database();
  Greeting greeting( attributes
                  ( "salute", "Hello" )
                  ( "thing", "World" )
                  ( "language", "English" ) );
  greeting.save();

  Greeting greeting1( 1 );
  cout << "In " << greeting1[ "language" ] << " you say:" << endl;
  cout << "'" << greeting1[ "salute" ] << " " << greeting1[ "thing" ] << "!'" << endl;

  return 0;
}

Development and Tests

See the file DEVELOPMENT.md.

Other information

  • Usage
    • See the examples directory
  • Documentation
    • See the doc directory