1
0
silverbullet/website/🔌 Query.md
Sinan Sonmez (Chaush) acb8d068ee special data
2022-07-30 11:13:43 +00:00

76 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

```meta
type: plug
uri: core:query
repo: https://github.com/silverbulletmd/silverbullet
author: Silver Bullet Authors
```
### 1. What?
The query plug is a built-in plug implementing the `<!-- #query -->` mechanism. You can use query plug to automatically receive information from your notes.
### 2. Syntax
1. start with: `<!-- #query [QUERY GOES HERE] -->`
2. end with: `<!-- /query -->`
3. write your query: replace `[QUERY GOES HERE]` with any query you want using options below
4. available query options: Usage of options is similar to general query language except special render option. Render option is to use display the data in a format that you created in a separate template
* `where`
* `order`
* `limit`
* `select`
* `render`
5. If you are a developer or have a technical knowledge to read a code and would like to know more about syntax please check out [query grammar](https://github.com/silverbulletmd/silverbullet/blob/main/packages/plugs/query/query.grammar)
### 3. How to run a query?
After writing the query, there are two options
* Open the **command palette** and run **Materialized Queries: Update**
* Use shortcut: for windows **Alt-q** and for mac **Option-q**
* Go to another page and come back to the page where query is located
After using one of the options, the data will be displayed.
### 4. Data sources
Available data sources can be categorized as
1. Builtin data sources
2. Data that can be inserted by users
3. Plugs data sources
Best part about data sources: there is an auto completion 🎉. Start writing `<!— #query `, it will show you all available data sources.
#### 4.1 Builtin data sources
* `page`: list of all pages
* `task`: list of all tasks created with `[]` syntax
* `full-text`: use it with `where phrase = "SOME_TEXT"`. List of all pages where `SOME_TEXT` is mentioned
* `item`: list of ordered and unordered items such as bulleted lists
* `tags`: list of all hashtags used in all pages
* `link`: list of all pages giving a link to the page where query is written
#### 4.2 Data that can be inserted by users
* *insert the data:* You can insert a data using the syntax below
```data
name: John
age: 50
city: Milan
country: Italy
---
name: Jane
age: 53
city: Rome
country: Italy
---
name: Francesco
age: 28
city: Berlin
country: Germany
```
* *query the data:* You can query the data using `data` option
<!-- #query data where age > 20 and country = "Italy" -->
|name|age|city |country|page |pos |
|----|--|-----|-----|---------------|----|
|John|50|Milan|Italy|Test Data Query|0 |
|Jane|53|Rome |Italy|Test Data Query|46 |
|John|50|Milan|Italy|🔌 Query |2148|
|Jane|53|Rome |Italy|🔌 Query |2194|
<!-- /query -->