README.md in qravan-0.1.0 vs README.md in qravan-0.1.1
- old
+ new
@@ -1,38 +1,38 @@
# Qravan
-Qravan — сервер для быстрого создания API обмена данными, консолидирующий различные источники с SQL-интерфейсами.
+Qravan _[карав`ан]_ — сервер для быстрого создания API обмена данными, консолидирующий различные источники с SQL-интерфейсами (СУБД или REST).

## Установка
+Установить как GEM (**предпочтительно**):
-Добавить строку ниже в свой Gemfile:
+ $ gem install qravan
+**Или** добавить строку ниже в свой Gemfile:
+
```ruby
gem 'qravan'
```
Потом выполнить:
$ bundle install
-Или установить просто как Gem (предпочтительно):
- $ gem install qravan
-
## Запуск
Запустить сервер Qravan:
$ qravan
-Сервер станет доступен по адресу `http://localhost:3300/`
+Сервер станет доступен по адресу `http://localhost:3300/`. В базовую поставку включены демонстрационные источники `postgres`, `prostore` и модель `vehicles`.
## Методы сервера
Сервер содержит следующие методы:
-1. GET /ping — проверить запусщенность сервера (ответ PONG!)
-2. GET /models — список загруженных моделей
-3. GET /sources — список загруженных источников
-4. POST /data — выполнить запрос
+1. GET http://localhost:3300/ping — проверить запусщенность сервера (ответ PONG!)
+2. GET http://localhost:3300/model — список загруженных моделей
+3. GET http://localhost:3300/sources — список загруженных источников
+4. POST http://localhost:3300/data — выполнить запрос
## Настройка моделей данных и ресурсов
### Модели
Модели данных описываются в соответствии со спецификацией в формате
@@ -74,37 +74,66 @@
│ └─2.0
│ └─ source.yaml
```
## Пример использования
+### Демо-данные
+В составе Qravan описаны демо-модели и источники. Также в папке `examples` лежат дампы (`pg_dump`) Postgres, достаточные для проверок ниже.
+
+### Запросы к демо-данным
Запрос объединенных данных о владельце автомобиля из Prostore и Postgres:
```json
{
"query":{
"driver":{
"conditions":{
- "DriverLicenseSerNum":"abc",
- "norm_DriverLicenseSerNum":"5"
+ "driverlicensetype":"E",
+ "drivermiddlename":"Александрович"
},
"attributes":[
"DriverLastname",
"DriverFirstname",
"DriverMiddlename",
- "Driverlicenseid"
- ]
+ "driverlicensetype"
+
+ ]
},
+ "super_driver":{
+ "conditions":{
+ "driverlicensetype":"D",
+ "driverfirstname": "Евгений"
+ },
+ "attributes":[
+ "DriverLastname",
+ "DriverFirstname",
+ "DriverMiddlename",
+ "driverlicensetype"
+
+ ]
+ },
"driver_license":{
"conditions":{
- "DriverLicenseSerNum":"abc",
- "norm_DriverLicenseSerNum":"3"
+ "driverlicensetype":"C",
+ "driverlicensetypeid": 1
},
"attributes":[
"DriverLastname",
"DriverFirstname",
"DriverMiddlename",
"Driverlicenseid"
- ]
+ ]
+ },
+ "identity_document":{
+ "conditions": {
+ "driverlicensetypeid": 4
+ },
+ "attributes":[
+ "driverlicenseissuer",
+ "DriverLicenseSerNum",
+ "driverlicensetype"
+
+ ]
}
},
"credentials":{
"system":{
"mnemonic":"117bed7f-1c07-4079-a446-1161588db4e5",
@@ -134,41 +163,132 @@
"response": [
{
"driver": [
[
{
- "driverlastname": "Сидоров",
- "driverfirstname": "Олег",
- "drivermiddlename": "Львович",
- "driverlicenseid": 2222
+ "driverlastname": "Козлов",
+ "driverfirstname": "Кирилл",
+ "drivermiddlename": "Александрович",
+ "driverlicensetype": "E"
+ },
+ {
+ "driverlastname": "Фёдоров",
+ "driverfirstname": "Михаил",
+ "drivermiddlename": "Александрович",
+ "driverlicensetype": "E"
}
],
{
- "time": "REST Duration: 0.053709s "
+ "time": "REST Duration: 0.21902s "
}
]
},
{
+ "super_driver": [
+ [
+ {
+ "driverlastname": "Белов",
+ "driverfirstname": "Евгений",
+ "drivermiddlename": "Витальевич",
+ "driverlicensetype": "D"
+ },
+ {
+ "driverlastname": "Комаров",
+ "driverfirstname": "Евгений",
+ "drivermiddlename": "Александрович",
+ "driverlicensetype": "D"
+ }
+ ],
+ {
+ "time": "REST Duration: 0.022836s "
+ }
+ ]
+ },
+ {
"driver_license": [
{
- "driverlastname": "Петречук",
- "driverfirstname": "Петр",
- "drivermiddlename": "Петрович",
- "driverlicenseid": 2
+ "driverlastname": "Беляев",
+ "driverfirstname": "Алексей",
+ "drivermiddlename": "Николаевич",
+ "driverlicenseid": 32
},
{
- "time": "DB Duration: 0.010184s"
+ "driverlastname": "Соловьёв",
+ "driverfirstname": "Леонид",
+ "drivermiddlename": "Иванович",
+ "driverlicenseid": 26
+ },
+ {
+ "driverlastname": "Михайлов",
+ "driverfirstname": "Александр",
+ "drivermiddlename": "Георгиевич",
+ "driverlicenseid": 34
+ },
+ {
+ "time": "DB Duration: 0.00319s"
}
]
+ },
+ {
+ "identity_document": [
+ {
+ "driverlicenseissuer": "44261",
+ "driverlicensesernum": "32662",
+ "driverlicensetype": "B"
+ },
+ {
+ "driverlicenseissuer": "32203",
+ "driverlicensesernum": "39303",
+ "driverlicensetype": "A"
+ },
+ {
+ "driverlicenseissuer": "43233",
+ "driverlicensesernum": "30101",
+ "driverlicensetype": "A"
+ },
+ {
+ "driverlicenseissuer": "45275",
+ "driverlicensesernum": "42336",
+ "driverlicensetype": "B"
+ },
+ {
+ "driverlicenseissuer": "46690",
+ "driverlicensesernum": "31614",
+ "driverlicensetype": "A"
+ },
+ {
+ "driverlicenseissuer": "37435",
+ "driverlicensesernum": "47250",
+ "driverlicensetype": "B"
+ },
+ {
+ "driverlicenseissuer": "36823",
+ "driverlicensesernum": "45173",
+ "driverlicensetype": "C"
+ },
+ {
+ "driverlicenseissuer": "33728",
+ "driverlicensesernum": "43290",
+ "driverlicensetype": "C"
+ },
+ {
+ "driverlicenseissuer": "41989",
+ "driverlicensesernum": "47023",
+ "driverlicensetype": "C"
+ },
+ {
+ "time": "DB Duration: 0.001113s"
+ }
+ ]
}
],
"credentials": {
"response": {
- "id": "c11ba197-ae96-4a6a-bc11-a3464d54496c",
- "sub_id": "50bcef8c-ef6e-4c6e-a893-4b42641919be",
- "started_at": "2023-01-19 00:34:39 +0300",
- "finished_at": "2023-01-19 00:34:39 +0300"
+ "id": "4201414d-fa86-4221-9d15-f91c10356daa",
+ "sub_id": "a59ea446-5dca-4705-bca5-53d6569e58a2",
+ "started_at": "2023-01-20 12:34:25 +0300",
+ "finished_at": "2023-01-20 12:34:25 +0300"
},
"system": {
"mnemonic": "117bed7f-1c07-4079-a446-1161588db4e5",
"instance_id": "ccb4a88f-f44b-43e7-8a97-3e45c8345e90",
"user_id": "5ed38461-0907-486a-930a-7b443482932c"
@@ -187,5 +307,10 @@
"signature": null
}
}
}
```
+
+## Лицензирование
+Qravan распространяется под открытой лицензией [CAPAAL](LICENSE).
+
+Copyright (c) 2022 Panasenkov Alexander (apanasenkov@capaa.ru)