# 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
```