# huesos
Basis for developing chat-robots with "Web App" technology for Telegram
## Installation
### AnangoDB
1. Create a Graph with the specified values
**Name:** catalog
* Relatin 1
**edgeDefinition:** entry
**fromCollections:** categoy, product
**toCollections:** category
* Relation 2
**edgeDefinition:** reservation
**fromCollections:** product
**toCollections:** cart
2. Create a Graph with the specified values
**Name:** users
* Relation 1
**edgeDefinition:** connect
**fromCollections:** cart, session
**toCollections:** account, session
**Orphan Collections:** product
3. Create indexes for the "product" collection
**Type:** "Inverted Index"
**Fields:** name.ru
**Analyzer:** "text_ru"
**Search field:** true
**Name:** name_ru
*Add indexes for all search parameters and for all languages (search language is selected based on the user's language,
otherwise from the default language specified in the active settings from **settings** collection document)*
*See fields in the `mirzaev/arming_bot/models/product`
**name.ru**, **description.ru** and **compatibility.ru***
4. Create a View with the specified values
**type:** search-alias (you can also use "arangosearch")
**name:** **product**s_search
**indexes:**
You can copy an example of view file from here: `/examples/arangodb/views/products_search.json`
```json
"indexes": [
{
"collection": "product",
"index": "title_ru" # THIS IS AN EXAMPLE
}
]
```
### NGINX
1. Create a NGINX server
You can copy an example of server file from here: `/examples/nginx/server.conf`
2. Add support for javascript modules
Edit the file `/etc/nginx/mime.types`
`application/javascript js;` -> `application/javascript js mjs;`
### SystemD (or any alternative you like)
You can copy an example of systemd file from here: `/examples/systemd/huesos.service`
**Execute:** `sudo cp huesos.service /etc/systemd/system/huesos.service && sudo chmod +x /etc/systemd/system/huesos.service`
*before you execute the command think about **what it does** and whether the **paths** are specified correctly*
*the configuration file is very simple and you can remake it for any alternative to SystemD that you like*
## Settings
Settings of chat-robot and Web App
Make sure you have a **settings** collection (can be created automatically) and at least one document with the "status" parameter set to "active"
You can copy a clean settings document without comments from here: `/examples/arangodb/collections/settings.json`
```json
{
"status": "active",
"project": {
"name": "PROJECT"
},
"language": "en", // Will be converted to an instance of enumeration `mirzaev\arming_bot\models\enumerations\language`
"currency": "usd", // Will be converted to an instance of enumeration `mirzaev\arming_bot\models\enumerations\currency`
"company": {
"identifier": null, // Example: "000000000000000" (string|null) (if `null` it will not be displayed)
"tax": null, // Example: "000000000000" (string|null) (if `null` it will not be displayed)
"name": null, // Example: "COMPANY" (string|null) (if `null` it will not be displayed)
"offer": false, // Display the data of a public offer in the footer? (bool) (does not affect the `/offer` page generation)
"sim": null, // Examples: "+7 000 000-00-00", "70000000000" (string|null) (if `null` it will not be displayed)
"mail": null // Example: "name@domain.zone" (string|null) (if `null` it will not be displayed)
}
}
```
## Suspensions
System of suspensions of chat-robot and Web App
Make sure you have a **suspension** collection (can be created automatically)
You can copy a clean suspension document without comments from here: `/examples/arangodb/collections/suspension.json`
```json
{
"end": 1726068961, // Unixtime
"targets": {
"chat-robot": true, // Block chat-robot
"web app": true // Block "Web App"
},
"access": {
"tester": true, // Account with `"tester": true`
"developer": true // Account with `"developer": true`
},
"description": {
"ru": "Разрабатываю каталог, поиск и корзину",
"en": "I am developing a catalog, search and cart"
}
}
```