docs: add sqlite documentation
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
6b31076a43
commit
7e16dded0b
|
@ -61,15 +61,15 @@ The format is based on [Keep a Changelog].
|
|||
|
||||
### Changed
|
||||
|
||||
- **build**: Bumped apprise to version `1.7.0`.
|
||||
- **build**: Bumped apprise to version `1.8.0`.
|
||||
- **build**: Bumped lmdb to version `1.4.1`
|
||||
- **build**: Bumped tornado to version `6.4.0`
|
||||
- **build**: Bumped jinja2 to version `3.1.3`
|
||||
- **build**: Bumped jinja2 to version `3.1.4`
|
||||
- **build**: Bumped zeroconf to version `0.131.0`
|
||||
- **build**: Bumped libnacl to version `2.1.0`
|
||||
- **build**: Bumped distro to version `1.9.0`
|
||||
- **build**: Bumped pillow to version `10.3.0`
|
||||
- **build**: Bumped streaming-form-data to version `1.13.0`
|
||||
- **build**: Bumped streaming-form-data to version `1.15.0`
|
||||
- **machine**: Added `ratos-configurator` to list of default allowed services
|
||||
- **update_manager**: It is now required that an application be "allowed"
|
||||
for Moonraker to restart it after an update.
|
||||
|
@ -91,6 +91,9 @@ The format is based on [Keep a Changelog].
|
|||
- **gpio**: Migrate from libgpiod to python-periphery
|
||||
- **authorization**: The authorization module is now loaded as part of Moonraker's
|
||||
core.
|
||||
- **database**: Migrated the underlying database from LMDB to Sqlite.
|
||||
- **history**: Use dedicated SQL tables to store job history and job totals.
|
||||
- **authorization**: Use a dedicated SQL table to store user data.
|
||||
|
||||
## [0.8.0] - 2023-02-23
|
||||
|
||||
|
|
|
@ -202,8 +202,7 @@ structure using the default data path of `$HOME/printer_data`.
|
|||
│ ├── moonraker.conf
|
||||
│ └── printer.cfg
|
||||
├── database
|
||||
│ ├── data.mdb
|
||||
│ └── lock.mdb
|
||||
│ └── moonraker-sql.db
|
||||
├── gcodes
|
||||
│ ├── test_gcode_one.gcode
|
||||
│ └── test_gcode_two.gcode
|
||||
|
@ -216,7 +215,7 @@ structure using the default data path of `$HOME/printer_data`.
|
|||
└── moonraker.asvc
|
||||
```
|
||||
|
||||
If it is not desirible for the files and folders to exist in these specific
|
||||
If it is not desirable for the files and folders to exist in these specific
|
||||
locations it is acceptable to use symbolic links. For example, it is common
|
||||
for the gcode folder to be located at `$HOME/gcode_files`. Rather than
|
||||
reconfigure Klipper's `virtual_sdcard` it may be desirable to create a
|
||||
|
@ -566,14 +565,29 @@ Retrieve the API Key via the browser from a trusted client:
|
|||
|
||||
{"result": "8ce6ae5d354a4365812b83140ed62e4b"}
|
||||
|
||||
### LMDB Database Backup and Restore
|
||||
### Database Backup and Restore
|
||||
|
||||
Moonraker uses a [LMDB Database](http://www.lmdb.tech/doc/) for persistent
|
||||
storage of procedurally generated data. LMDB database files are platform
|
||||
dependent, and thus cannot be easily transferred between different machines.
|
||||
A file generated on a Raspberry Pi cannot be directly transferred to an x86
|
||||
machine. Likewise, a file generated on a 32-bit version of Linux cannot
|
||||
be transferred to a 64-bit machine.
|
||||
Moonraker stores persistent data using an Sqlite database. By default
|
||||
the database file is located at `<data_folder>/database/moonraker-sql.db`.
|
||||
API Endpoints are available to backup and restore the database. All
|
||||
backups are stored at `<data_folder>/backup/database/<backup_name>` and
|
||||
restored from the same location. Database files may contain sensitive
|
||||
information, therefore they are not served by Moonraker. Another protocol
|
||||
such as SCP, SMB, etc is required to transfer a backup off of the host.
|
||||
|
||||
Alternatively it is possible to perform a manual backup by copying the
|
||||
existing database file when the Moonraker service has been stopped.
|
||||
Restoration can be performed by stopping the Moonraker service and
|
||||
overwriting the existing database with the backup.
|
||||
|
||||
#### LDMB Database (deprecated)
|
||||
|
||||
Previous versions of Moonraker used a [LMDB Database](http://www.lmdb.tech/doc/)
|
||||
for persistent storage of procedurally generated data. LMDB database files are
|
||||
platform dependent, and thus cannot be easily transferred between different
|
||||
machines. A file generated on a Raspberry Pi cannot be directly transferred
|
||||
to an x86 machine. Likewise, a file generated on a 32-bit version of Linux
|
||||
cannot be transferred to a 64-bit machine.
|
||||
|
||||
Moonraker includes two scripts, `backup-database.sh` and `restore-database.sh`
|
||||
to help facilitate database backups and transfers.
|
||||
|
|
332
docs/web_api.md
332
docs/web_api.md
|
@ -3555,8 +3555,10 @@ the request. The entire settings object could be accessed by providing
|
|||
may be read by omitting the `key` argument, however as explained below it
|
||||
is not possible to modify a namespace without specifying a key.
|
||||
|
||||
#### List namespaces
|
||||
Lists all available namespaces.
|
||||
#### List Database Info
|
||||
|
||||
Lists all namespaces with read and/or write access. Also lists database
|
||||
backup files.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
|
@ -3574,14 +3576,21 @@ JSON-RPC request:
|
|||
|
||||
Returns:
|
||||
|
||||
An object containing an array of namespaces in the following format:
|
||||
An object containing an array of namespaces and an array of backup files.
|
||||
```json
|
||||
{
|
||||
"namespaces": [
|
||||
"gcode_metadata",
|
||||
"history",
|
||||
"moonraker",
|
||||
"test_namespace"
|
||||
"webcams",
|
||||
"update_manager",
|
||||
"announcements",
|
||||
"database",
|
||||
"moonraker"
|
||||
],
|
||||
"backups": [
|
||||
"sqldb-backup-20240513-134542.db",
|
||||
"testbackup.db",
|
||||
"testbackup2.db"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
@ -3701,6 +3710,180 @@ deleted item.
|
|||
}
|
||||
```
|
||||
|
||||
#### Compact Database
|
||||
|
||||
Compacts and defragments the the sqlite database using the `VACUUM` command.
|
||||
This API cannot be requested when Klipper is printing.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
POST /server/database/compact
|
||||
```
|
||||
|
||||
JSON-RPC request:
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "server.database.compact",
|
||||
"id": 4654
|
||||
}
|
||||
```
|
||||
Returns:
|
||||
An object containing the size of the database on disk before and after
|
||||
the database is compacted.
|
||||
```json
|
||||
{
|
||||
"previous_size": 139264,
|
||||
"new_size": 122880
|
||||
}
|
||||
```
|
||||
|
||||
#### Backup Database
|
||||
|
||||
Creates a backup of the current database. The backup will be
|
||||
created in the `<data_path>/backup/database/<filename>`.
|
||||
|
||||
This API cannot be requested when Klipper is printing.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
POST /server/database/backup
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"filename": "sql-db-backup.db"
|
||||
}
|
||||
```
|
||||
|
||||
JSON-RPC request:
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "server.database.post_backup",
|
||||
"params": {
|
||||
"filename": "sql-db-backup.db"
|
||||
},
|
||||
"id": 4654
|
||||
}
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
- `filename`: An optional file name for the backup file. The default
|
||||
is `sqldb-backup-<year><month><day>-<hour><minute><second>`.
|
||||
|
||||
|
||||
Returns:
|
||||
An object containing the path on disk to the backup.
|
||||
```json
|
||||
{
|
||||
"backup_path": "/home/test/printer_data/backup/database/sql-db-backup.db"
|
||||
}
|
||||
```
|
||||
|
||||
#### Delete a backup
|
||||
|
||||
Deletes a previously backed up database.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
DELETE /server/database/backup
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"filename": "sql-db-backup.db"
|
||||
}
|
||||
```
|
||||
|
||||
JSON-RPC request:
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "server.database.delete_backup",
|
||||
"params": {
|
||||
"filename": "sql-db-backup.db"
|
||||
},
|
||||
"id": 4654
|
||||
}
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
- `filename`: The name of the backup file to delete. Must be a valid
|
||||
filename reported in by the [database list](#list-database-info) API.
|
||||
This parameter must be provided.
|
||||
|
||||
Returns:
|
||||
An object containing the path on disk to the backup file that was removed.
|
||||
```json
|
||||
{
|
||||
"backup_path": "/home/test/printer_data/backup/database/sql-db-backup.db"
|
||||
}
|
||||
```
|
||||
|
||||
#### Restore Database
|
||||
|
||||
Restores a previously backed up sqlite database file. The backup
|
||||
must be located at `<data_path>/backup/database/<filename>`. The
|
||||
`<filename>` must be a valid filename reported in by the
|
||||
[database list](#list-database-info) API.
|
||||
|
||||
This API cannot be requested when Klipper is printing.
|
||||
|
||||
!!! Note
|
||||
Moonraker will restart immediately after this request is processed.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
POST /server/database/restore
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"filename": "sql-db-backup.db"
|
||||
}
|
||||
```
|
||||
|
||||
JSON-RPC request:
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "server.database.restore",
|
||||
"params": {
|
||||
"filename": "sql-db-backup.db"
|
||||
},
|
||||
"id": 4654
|
||||
}
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
- `filename`: The name of the database file to restore. Must be a valid
|
||||
filename reported in by the [database list](#list-database-info) API.
|
||||
This parameter must be provided.
|
||||
|
||||
Returns:
|
||||
An object containing a list of restored namespaces and restored tables.
|
||||
```json
|
||||
{
|
||||
"restored_tables": [
|
||||
"table_registry",
|
||||
"namespace_store",
|
||||
"authorized_users",
|
||||
"job_history",
|
||||
"job_totals"
|
||||
],
|
||||
"restored_namespaces": [
|
||||
"database",
|
||||
"fluidd",
|
||||
"gcode_metadata",
|
||||
"mainsail",
|
||||
"moonraker",
|
||||
"update_manager",
|
||||
"webcams"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Job Queue APIs
|
||||
|
||||
The following endpoints may be used to manage Moonraker's job queue.
|
||||
|
@ -7123,7 +7306,7 @@ receive the following:
|
|||
### Debug APIs
|
||||
|
||||
The APIs in this section are available when Moonraker the debug argument
|
||||
(`-g`) has been supplied via the command line. Some API may also depend
|
||||
(`-g`) has been supplied via the command line. Some APIs may also depend
|
||||
on Moonraker's configuration, ie: an optional component may choose to
|
||||
register a debug API.
|
||||
|
||||
|
@ -7131,11 +7314,11 @@ register a debug API.
|
|||
Debug APIs may expose security vulnerabilities. They should only be
|
||||
enabled by developers on secured machines.
|
||||
|
||||
#### List Database Namespaces (debug)
|
||||
#### List Database Info (debug)
|
||||
|
||||
Debug version of [List Namespaces](#list-namespaces). Return value includes
|
||||
namespaces exlusively reserved for Moonraker. Only availble when Moonraker's
|
||||
debug features are enabled.
|
||||
Debug version of [List Database Info](#list-database-info). Returns
|
||||
all namespaces, including those exlusively reserved for Moonraker.
|
||||
In addition, registered SQL tables are reported.
|
||||
|
||||
|
||||
HTTP request:
|
||||
|
@ -7152,14 +7335,42 @@ JSON-RPC request:
|
|||
}
|
||||
```
|
||||
|
||||
Returns:
|
||||
|
||||
An object containing an array of namespaces, an array of tables, and
|
||||
an array of backup files.
|
||||
```json
|
||||
{
|
||||
"namespaces": [
|
||||
"gcode_metadata",
|
||||
"webcams",
|
||||
"update_manager",
|
||||
"announcements",
|
||||
"database",
|
||||
"moonraker"
|
||||
],
|
||||
"backups": [
|
||||
"sqldb-backup-20240513-134542.db",
|
||||
"testbackup.db",
|
||||
"testbackup2.db"
|
||||
],
|
||||
"tables": [
|
||||
"job_history",
|
||||
"job_totals",
|
||||
"namespace_store",
|
||||
"table_registry",
|
||||
"authorized_users"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Get Database Item (debug)
|
||||
|
||||
Debug version of [Get Database Item](#get-database-item). Keys within
|
||||
protected and forbidden namespaces are accessible. Only availble when
|
||||
Moonraker's debug features are enabled.
|
||||
protected and forbidden namespaces are accessible.
|
||||
|
||||
!!! Warning
|
||||
Moonraker's forbidden namespaces include items such as user credentials.
|
||||
Moonraker's forbidden namespaces may include items such as user credentials.
|
||||
This endpoint should NOT be implemented in front ends directly.
|
||||
|
||||
HTTP request:
|
||||
|
@ -7182,8 +7393,7 @@ JSON-RPC request:
|
|||
#### Add Database Item (debug)
|
||||
|
||||
Debug version of [Add Database Item](#add-database-item). Keys within
|
||||
protected and forbidden namespaces may be added. Only availble when
|
||||
Moonraker's debug features are enabled.
|
||||
protected and forbidden namespaces may be added.
|
||||
|
||||
!!! Warning
|
||||
This endpoint should be used for testing/debugging purposes only.
|
||||
|
@ -7219,8 +7429,7 @@ JSON-RPC request:
|
|||
#### Delete Database Item (debug)
|
||||
|
||||
Debug version of [Delete Database Item](#delete-database-item). Keys within
|
||||
protected and forbidden namespaces may be removed. Only availble when
|
||||
Moonraker's debug features are enabled.
|
||||
protected and forbidden namespaces may be removed.
|
||||
|
||||
!!! Warning
|
||||
This endpoint should be used for testing/debugging purposes only.
|
||||
|
@ -7247,6 +7456,93 @@ JSON-RPC request:
|
|||
}
|
||||
```
|
||||
|
||||
#### Get Database Table
|
||||
|
||||
Requests all the contents of a specified table.
|
||||
|
||||
HTTP request:
|
||||
```http
|
||||
GET /debug/database/table?table=job_history
|
||||
```
|
||||
|
||||
JSON-RPC request:
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "debug.database.table",
|
||||
"params": {
|
||||
"table": "job_history"
|
||||
},
|
||||
"id": 4654
|
||||
}
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
- `table`: The name of the table to request. This parameter must
|
||||
be provided.
|
||||
|
||||
Returns:
|
||||
|
||||
An object with the table's name and a list of all rows contained
|
||||
within the table. The `rowid` will always be included for each
|
||||
row, however it may be represented by an alias. In the example
|
||||
below the alias for `rowid` is `job_id`.
|
||||
|
||||
```json
|
||||
{
|
||||
"table_name": "job_history",
|
||||
"rows": [
|
||||
{
|
||||
"job_id": 1,
|
||||
"user": "No User",
|
||||
"filename": "active_test.gcode",
|
||||
"status": "completed",
|
||||
"start_time": 1690749153.2661753,
|
||||
"end_time": 1690749173.076986,
|
||||
"print_duration": 0.0,
|
||||
"total_duration": 19.975574419135228,
|
||||
"filament_used": 0.0,
|
||||
"metadata": {
|
||||
"size": 211,
|
||||
"modified": 1635771217.0,
|
||||
"uuid": "627371e0-faa5-4ced-8bb4-7017d29226fa",
|
||||
"slicer": "Unknown",
|
||||
"gcode_start_byte": 8,
|
||||
"gcode_end_byte": 211
|
||||
},
|
||||
"auxiliary_data": [],
|
||||
"instance_id": "default"
|
||||
},
|
||||
{
|
||||
"job_id": 2,
|
||||
"user": "No User",
|
||||
"filename": "active_test.gcode",
|
||||
"status": "completed",
|
||||
"start_time": 1701262034.9242446,
|
||||
"end_time": 1701262054.7332363,
|
||||
"print_duration": 0.0,
|
||||
"total_duration": 19.990913168992847,
|
||||
"filament_used": 0.0,
|
||||
"metadata": {
|
||||
"size": 211,
|
||||
"modified": 1635771217.0,
|
||||
"uuid": "627371e0-faa5-4ced-8bb4-7017d29226fa",
|
||||
"slicer": "Unknown",
|
||||
"gcode_start_byte": 8,
|
||||
"gcode_end_byte": 211
|
||||
},
|
||||
"auxiliary_data": {
|
||||
"spool_ids": [
|
||||
2
|
||||
]
|
||||
},
|
||||
"instance_id": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Test a notifier (debug)
|
||||
|
||||
You can trigger a notifier manually using this endpoint.
|
||||
|
|
Loading…
Reference in New Issue