all repos — litestore @ 5e228234cd608648f05955d155140ef1bd3701de

A minimalist nosql document store.

src/admin/md/usage.md

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
## Usage

### Command Line Syntax

[litestore](class:kwd) **[** _command_ **]** **[** _option1_, _option2_, ... **]**

#### Commands

* **run** — Start LiteStore server (default if no command specified).
* **delete** — Delete a previously-imported specified directory (requires -d).
* **execute** — Execute an operation on data stored in the datastore (requires -o, -u, and in certain cases -f or -b and -t).
* **import** — Import the specified directory into the datastore (requires -d).
* **export** — Export the previously-imported specified directory to the current directory (requires -d).
* **optimize** — Optimize search indexes.
* **vacuum** — Vacuum datastore.

#### Options

* **-a**, **-\-address** — Specify server address (default: 127.0.0.1).
* **-\-auth** — Specify an authorization configuration file.
* **-b**, **-\-body** — Specify a string containing input data for an operation to be executed.
* **-c**, **-\-config** — Specify a configuration file.
* **-d**, **-\-directory** — Specify a directory to serve, import, export, delete, or mount.
* **-f**, **-\-file** — Specify a file containing input data for an operation to be executed.
* **-h**, **-\-help** — Display program usage.
* **-l**, **-\-log** — Specify the log level: debug, info, warn, error, none (default: info)
* **-m**, **-\-mount** — Mirror database changes to the specified directory on the filesystem.
* **-o**, **-\-operation** — Specify an operation to execute via the execute command: get, put, delete, patch, post, head, options.
* **-p**, **-\-port** —Specify server port number (default: 9500).
* **-r**, **-\-readonly** — Allow only data retrieval operations.
* **-s**, **-\-store** — Specify a datastore file (default: data.db)
* **-\-system**  — Set the system flag for import, export, and delete operations
* **-\-import-tags**  — During import read tags from '_tags' file and apply them to imported documents from the same directory.
* **-\-not-searchable**  — During import exclude content of files and folders starting with '_' from full text search.
* **-t**, **-\-type** — Specify a content type for the body an operation to be executed via the execute command.
* **-u**, **-\-uri** — Specify an uri to execute an operation through the execute command.
* **-v**, **-\-version** — Display the program version.
* **-w**, **-\-middleware** — Specify a path to a folder containing middleware definitions

### Examples

#### Starting the HTTP Server

* with default settings:
  
  [litestore](class:cmd)

* loading configuration from a configuration file called **config.json**:

  [litestore -c:config.json](class:cmd)
  
* loading middleware definition files stored in a directory called **myMiddleware**:

  [litestore -w:myMiddleware](class:cmd)

* with custom port (**9700**) and address (**0.0.0.0**):
 
  [litestore -p:9700 -a:0.0.0.0](class:cmd)

* in read-only mode with logging level set to **debug**:

  [litestore -r -l:debug](class:cmd)
  
* serving the contents of a directory called **admin**:

  [litestore -d:admin](class:cmd)

* mouting a directory called **admin** (changes will be mirrored to filesystem, directory contents will be served):

  [litestore -d:admin -m](class:cmd)

#### Importing a directory

Import a directory called **admin**:

[litestore import -d:admin](class:cmd)

#### Importing system documents from a directory

Import all documents stored in a directory called **system** as system documents:

[litestore import -d:system -\-system](class:cmd)

#### Importing a directory and tagging files

Import all documents stored in a directory called **media** (including subdirectories):

```
+ media
  + cars
  | + _tags
  | + Lamborghini.jpg
  | + VW.jpg
  | ` BMW.jpg
  + planes
  | + _tags
  | + 767.jpg
  | + F-16.jpg
  | ` B-1.jpg
  ` trains
    + TGV.jpg
    ` Eurostar.jpg
```   

[litestore import -d:media -\-import-tags](class:cmd)

Every **_tags** file contains a list of tags, one per line, which are applied to all imported documents from the same directory. In the example above all cars and planes images will be tagged on import. The trains images however will not as there is no **_tags** file in the **trains** directory.

The individual **_tags** files are also imported. When the **\-\-import\-tags** option is not set the **_tags** files are ignored and not imported.

#### Excluding files from full text search

Import all documents stored in a directory called **media** (including subdirectories):

```
+ media
  + _css
  | + style1.css
  | ` style2.css
  + cars
  | + _index.html
  | + Lamborghini.md
  | + VW.md
  | ` BMW.md
  + planes
  | + _index.html
  | + 767.md
  | + F-16.md
  | ` B-1.md
  ` trains
    + _index.html
    * _script.js
    + TGV.md
    ` Eurostar.md
```   

[litestore import -d:media -\-not-searchable](class:cmd)

All documents are imported but the files whose name starts with **underscore** and files inside a folder which name starts with **underscore** are excluded from full text search. The idea is that these files have special meaning for the application:
* they should be accessible via regular URLs (unlike **system** files)
* but they content should not be searchable.

#### Exporting a directory

Export all documents tagged with **$dir:admin** to a local directory called **admin**:

[litestore export -d:admin](class:cmd)

#### Deleting documents within a directory

Delete all documents tagged with **$dir:admin**:

[litestore delete -d:admin](class:cmd)

#### Performing maintenance operations

* vacuum SQlite database:

  [litestore vacuum](class:cmd)

* optimize search index:

  [litestore optimize](class:cmd)

#### Executing operations

* Retrieve all documents tagged with `$subtype:json`:

  [litestore execute -o:get -u:docs?tags=$subtype:json](class:cmd)

* Add a new document from a JSON file:

  [litestore execute -o:put -u:docs/test-doc -f:test.json -t:application/json](class:cmd)