# glue

A zero-boilerplate PostgreSQL ORM for C

## Installation

```
git clone git@soophie.de:/srv/git/glue
cd glue
sudo make install
```

## Quick Start

```c
#define GLUE_DB_INFO "host= port= user= password= dbname="

#define SO_GLUE_IMPL
#include <glue.h>

// CREATE TABLE items (
//   id serial PRIMARY KEY,
//   code text NOT NULL,
//   name text NOT NULL
// );
#define ITEM_COLUMNS(X) \
  COLDEF_INT(X, id) \
  COLDEF_TEXT(X, code) \
  COLDEF_TEXT(X, name)
TABLEDEF(item, ITEM_COLUMNS)

int main(void) {
  item_t *item_list = NULL;
  size_t item_list_len = 0;
  item_fetch("SELECT * FROM items;", 0, NULL, &item_list, &item_list_len);
  for (size_t i = 0; i < item_list_len; i++) {
    item_dbg(&item_list[i]);
  }
  item_list_free(item_list, item_list_len);
  return 0;
}
```

### Compiling

```bash
cc -o main -lpq main.c
```
