Home

Awesome

Ada Database Objects

Alire Alire Alire Alire Build Status Test Status Coverage Documentation Status Download License GitLab Commits

Ada Database Objects is an Ada05 library that provides object relational mapping to access a database in Ada05. The library supports Postgresql, MySQL/MariaDB, SQLite as databases. Most of the concepts developped for ADO come from the Java Hibernate ORM.

The ORM uses an YAML, XML mapping file or an UML model, a code generator and a runtime library for the implementation. It provides a database driver for Postgresql, MySQL/MariaDB and SQLite. The ORM helps your application by providing a mapping of your database tables directly in the target programming language: Ada05 in our case. The development process is the following:

ADO Development model

You need at least one of these databases (or all of then). The configure script will now fail if no supported database was found. Check the Database Drivers section to install them and run the configure again after the installation.

Version 2.4.1 - Sep 2024

List all versions

Using with Alire

If you are using Alire in your project, run the following command within your Alire project to use the library:

alr with ado

Depending on your project, you may need one or some of the following other components to get the support for SQLite, MySQL/MariaDB or PostgreSQL. Use ado_mysql for MariaDB.

alr with ado_sqlite
alr with ado_mysql
alr with ado_postgresql

Using without Alire

If you don't have Alire or want to build and install the library on a specific place, run a setup command to configure the build as well as installation directory. For a detailed description on how you can configure, build and install the library refer to the Installation guide. Otherwise, you can easily configure and build the library with the steps described below.

The support for SQLite, MySQL/MariaDB and PostgreSQL are enabled only when a HAVE_XXX=yes configuration variable is defined. Run the setup command that records in the Makefile.conf the configuration you want to build.

The HAVE_ALIRE configuration allows you to build with Alire or not.

The example below enables the SQLite and PostgreSQL components but disables the MySQL/MariaDB support and disables the use of Alire to build the library.

make setup BUILD=debug PREFIX=/build/install \
  HAVE_SQLITE=yes HAVE_POSTGRESQL=yes \
  HAVE_MYSQL=no HAVE_ALIRE=no

Then build, run the unit tests and install by using:

make
make test
make install

To use the installed libraries, make sure your ADA_PROJECT_PATH contains the directory where you installed the libraries (configured by the PREFIX=<path> option in the setup phase). The installed GNAT projects are the same as those used when using Alire.

Samples

The samples can be built using:

make samples

or

cd samples
alr build

Before launching the samples, the database must have been created. For SQLite, use:

make samples.db

Documentation

The Ada Database Objects sources as well as a wiki documentation is provided on:

Presentations

Database Drivers

The Postgresql, MySQL/MariaDB and SQLite development headers and runtime are necessary for building the ADO driver. The configure script will use them to enable the ADO drivers.

Postgresql Development installation

sudo apt-get install postgresql-client libpq-dev

MySQL/MariaDB Development installation

sudo apt-get install mariadb-client libmariadb-dev

SQLite Development installation

sudo apt-get install sqlite3 libsqlite3-dev

For Windows, check win32/README to install the libraries.

Database Creation

Create the tests database by using the Dynamo command. (Dynamo is available at: https://gitlab.com/stcarrez/dynamo) Note: change 'root' and 'password' to a MySQL/MariaDB user that has admin access rights ('create database' and 'grant option' privileges).

dynamo create-database db/regtests root password

The default database connection string is defined in dynamo.xml. You can also specify the connection string and create the schema by using:

dynamo create-database db/regtests 'mysql://localhost:3306/ado_test?user=ado' root password

MySQL/MariaDB setup

To create manually the database, you can proceed to the following steps:

  1. Create the 'ado_test' database in MySQL/MariaDB
sudo mysql
mysql> CREATE DATABASE ado_test;
  1. Create the 'ado' user and give the access rights:
mysql> CREATE USER 'ado' IDENTIFIED BY '';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE,
       CREATE, DROP, CREATE TEMPORARY TABLES, EXECUTE,
       SHOW VIEW ON `ado_test`.* TO ado@'%';
mysql> FLUSH PRIVILEGES;
  1. Create the tables
mysql> USE ado_test
mysql> SOURCE db/regtests/mysql/create-ado-mysql.sql

Postgresql setup

To create manually the database, you can proceed to the following steps:

  1. Create the 'ado' user and configure the password (enter 'ado' for the password or update the Makefile as well as the test-postgresql.properties file):
sudo -u postgres createuser ado --pwprompt
  1. Create the 'ado_test' database in Postgresql
sudo -u postgres createdb -O ado ado_test
  1. Create the tables
psql "postgresql://localhost:5432/ado_test?user=ado&password=ado" \
  --file=db/regtests/postgresql/create-ado-postgresql.sql

Testing

Before running the unit tests for MySQL/MariaDB or Postgresql, you must create the test database as described in Database Creation.

The unit tests are built and executed using:

make test

To run manually the unit tests, use the following commands:

bin/ado_harness -config test-mysql.properties

or

bin/ado_harness -config test-sqlite.properties

or

bin/ado_harness -config test-postgresql.properties

Building documentation

The ADO Programmer's Guide is generated by using Dynamo and Pandoc. You may need the following Debian packages:

sudo apt-get install pandoc xsltproc texlive-latex-base texlive-latex-extra texlive-fonts-extra

The documentation is created by the following command:

make doc

and the book is generated in the ado-book.pdf file.