All Projects → joeyates → cpp-active-record

joeyates / cpp-active-record

Licence: GPL-3.0 license
A C++ Implementation of the Active Record Pattern

Programming Languages

C++
36643 projects - #6 most used programming language
Makefile
30231 projects
c
50402 projects - #5 most used programming language
shell
77523 projects
ruby
36898 projects - #4 most used programming language
M4
1887 projects

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>

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

AR_DECLARE(Greeting)

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

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

  return 0;
}

Development and Tests

See the file DEVELOPMENT.md.

Other information

  • Usage
    • See the examples directory
  • Documentation
    • See the doc directory
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].