quickwit-metastore 0.3.0

Quickwit's metastore
# quickwit-metastore

## Setup the environment.

### Install libpg-dev and diesel_cli

If you do not have libpg-dev and diesel_cli installed, please install them with the following command.

```
% sudo apt install libpq-dev
% cargo install diesel_cli --no-default-features --features postgres 
```

### Setup Diesel for quickwit-metastore

Let's set up the environment using diesel_cli.
First, run the following command to start PostgreSQL using Docker.

```
$ docker-compose up -d
```

After PostgreSQL has been successfully started, you can start the Diesel setup.
Execute the following command to create `migrations/postgresql` and `diesel_postgresql.toml`.

```
$ diesel setup --migration-dir=migrations/postgresql --config-file=diesel_postgresql.toml
```

In order to change the output destination of `schema.rs`, modify `diesel_postgresql.tom`l as follows.

```
[print_schema]
file = "src/postgresql/schema.rs"
```

Next, create a `*.sql` file under the `migrations/postgresql` directory.

```
$ diesel migration generate --migration-dir=migrations/postgresql create_indexes
$ diesel migration generate --migration-dir=migrations/postgresql create_splits
```

Since the generated file is empty, update the SQL statement.
After updating the SQL statement, generate `quickwit-metastore/src/postgresql/schema.rs` with the following command

```
$ diesel migration run --migration-dir=migrations/postgresql --config-file=diesel_postgresql.toml
```

Once you have successfully generated the `quickwit-metastore/src/postgresql/schema.rs`, you can start developing with Diesel.


## Testing quickwit-metastore

To test FileBackedMetastore only, use the following command.

```
$ cargo test
```

To test including PostgresqlMetastore, you need to start PostgreSQL beforehand.
Start PostgreSQL for testing with the following command in `quickwit` project root.

```
$ make docker-compose-up DOCKER_SERVICES=postgres
```

Once PostgreSQL is up and running, you can run tests including PostgresqlMetastore with the following command.

```
$ cargo test --features=postgres
```

You can stop PostgreSQL with the following command.

```
$ docker-compose down
```