operators are added

pull/64/head
Sinan Sonmez (Chaush) 2022-08-21 20:23:30 +00:00
parent 2bea73c918
commit f816149e6b
1 changed files with 42 additions and 29 deletions

View File

@ -12,7 +12,7 @@ The query plug is a built-in plug implementing the `<!-- #query -->` mechanism.
1. _start with_: `<!-- #query [QUERY GOES HERE] -->` 1. _start with_: `<!-- #query [QUERY GOES HERE] -->`
2. _end with_: `<!-- /query -->` 2. _end with_: `<!-- /query -->`
3. _write your query_: replace `[QUERY GOES HERE]` with any query you want using options below 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 SQL except special `render` option. Render option is to use display the data in a format that you created in a separate template 4. _available query options_: Usage of options is similar to SQL except special `render` option. Render option is to use display the data in a format that you created in a separate template.
* `where` * `where`
* `order by` * `order by`
* `limit` * `limit`
@ -21,6 +21,19 @@ The query plug is a built-in plug implementing the `<!-- #query -->` mechanism.
P.S.: 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). P.S.: 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).
#### 2.1. Available query operators:
* `=` equals
* `!=` not equals
* `<` less than
* `<=` less than or equals
* `>` greater than
* `>=` greater than or equals
* `=~` to match against a regular expression
* `!=~` does not match this regular expression
* `in` to specify multiple values in a `WHERE` clause
Further, you can combine multiple of these with `and`. Example `prop =~ /something/ and prop != “something”`.
### 3. How to run a query? ### 3. How to run a query?
After writing the query, there are three options: After writing the query, there are three options:
* Open the **command palette** and run **Materialized Queries: Update** * Open the **command palette** and run **Materialized Queries: Update**
@ -71,7 +84,7 @@ country: Germany
<!-- /query --> <!-- /query -->
#### 4.2 Plugs data sources #### 4.2 Plugs data sources
Certain plugs can also provide special data sources to query a certain data. Some examples are Certain plugs can also provide special data sources to query a certain data. Some examples are:
* [[🔌 Github]] provides `gh-pull` to query PRs for selected repo * [[🔌 Github]] provides `gh-pull` to query PRs for selected repo
* [[🔌 Mattermost]] provides `mm-saved` to fetch (by default 15) saved posts in Mattermost * [[🔌 Mattermost]] provides `mm-saved` to fetch (by default 15) saved posts in Mattermost
@ -91,16 +104,16 @@ For the sake of simplicity, we will use `page` data source and limit the results
<!-- #query page limit 10 --> <!-- #query page limit 10 -->
|name |lastModified |perm|tags |type|uri |repo |author | |name |lastModified |perm|tags |type|uri |repo |author |
|--|--|--|--|--|--|--|--| |--|--|--|--|--|--|--|--|
|SETTINGS |1659437160849|rw|undefined|undefined|undefined |undefined |undefined | |SETTINGS |1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|Silver Bullet |1660051168973|rw|undefined|undefined|undefined |undefined |undefined | |Silver Bullet |1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|CHANGELOG |1660050383951|rw|undefined|undefined|undefined |undefined |undefined | |CHANGELOG |1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|Mattermost Plugin|1658755340866|rw|undefined|undefined|undefined |undefined |undefined | |Mattermost Plugin|1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|PLUGS |1659437423367|rw|undefined|undefined|undefined |undefined |undefined | |PLUGS |1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|index |1659440751554|rw|undefined|undefined|undefined |undefined |undefined | |index |1661112513714|rw|undefined|undefined|undefined |undefined |undefined |
|template/plug |1658751100952|rw|undefined|undefined|undefined |undefined |undefined | |template/plug |1661112513718|rw|undefined|undefined|undefined |undefined |undefined |
|template/tasks |1657890041936|rw|#each|undefined|undefined |undefined |undefined | |template/tasks |1661112513718|rw|#each|undefined|undefined |undefined |undefined |
|💡 Inspiration |1658133917441|rw|undefined|undefined|undefined |undefined |undefined | |💡 Inspiration |1661112513718|rw|undefined|undefined|undefined |undefined |undefined |
|🔌 Backlinks |1658760465195|rw|undefined|plug|ghr:Willyfrog/silverbullet-backlinks|https://github.com/Willyfrog/silverbullet-backlinks|Guillermo Vayá| |🔌 Backlinks |1661112513718|rw|undefined|plug|ghr:Willyfrog/silverbullet-backlinks|https://github.com/Willyfrog/silverbullet-backlinks|Guillermo Vayá|
<!-- /query --> <!-- /query -->
#### 5.2 Simple query with a condition #### 5.2 Simple query with a condition
@ -109,13 +122,13 @@ For the sake of simplicity, we will use `page` data source and limit the results
**Result:** Okay, this what we wanted but there are also information such as perm, type and lastModified that we don't need. **Result:** Okay, this what we wanted but there are also information such as perm, type and lastModified that we don't need.
<!-- #query page where type = "plug" order by lastModified desc limit 5 --> <!-- #query page where type = "plug" order by lastModified desc limit 5 -->
|name |lastModified |perm|type|uri |repo |author | |name |lastModified |perm|type|uri |repo |author |
|--|--|--|--|--|--|--| |--|--|--|--|--|--|--|
|🔌 Query |1660051209241|rw|plug|core:query |https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors| |🔌 Backlinks|1661112513718|rw|plug|ghr:Willyfrog/silverbullet-backlinks |https://github.com/Willyfrog/silverbullet-backlinks |Guillermo Vayá |
|🔌 Github|1660050280511|rw|plug|github:silverbulletmd/silverbullet-github/github.plug.json|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel | |🔌 Core |1661112513718|rw|plug|builtin:core |https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors|
|🔌 Mount |1658760601369|rw|plug|github:silverbulletmd/silverbullet-mount/mount.plug.json |https://github.com/silverbulletmd/silverbullet-mount |Zef Hemel | |🔌 Ghost |1661112513718|rw|plug|github:silverbulletmd/silverbullet-ghost/ghost.plug.json |https://github.com/silverbulletmd/silverbullet-ghost |Zef Hemel |
|🔌 Git |1658760545612|rw|plug|github:silverbulletmd/silverbullet-github/github.plug.json|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel | |🔌 Git |1661112513718|rw|plug|github:silverbulletmd/silverbullet-github/github.plug.json|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel |
|🔌 Ghost |1658760515320|rw|plug|github:silverbulletmd/silverbullet-ghost/ghost.plug.json |https://github.com/silverbulletmd/silverbullet-ghost |Zef Hemel | |🔌 Github |1661112513718|rw|plug|github:silverbulletmd/silverbullet-github/github.plug.json|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel |
<!-- /query --> <!-- /query -->
@ -125,13 +138,13 @@ For the sake of simplicity, we will use `page` data source and limit the results
**Result:** Okay, this is much better. However, I believe this needs a touch from a visual perspective. **Result:** Okay, this is much better. However, I believe this needs a touch from a visual perspective.
<!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 --> <!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 -->
|name |author |repo | |name |author |repo |
|--|--|--| |--|--|--|
|🔌 Query |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet | |🔌 Backlinks|Guillermo Vayá |https://github.com/Willyfrog/silverbullet-backlinks |
|🔌 Github|Zef Hemel |https://github.com/silverbulletmd/silverbullet-github| |🔌 Core |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet |
|🔌 Mount |Zef Hemel |https://github.com/silverbulletmd/silverbullet-mount | |🔌 Ghost |Zef Hemel |https://github.com/silverbulletmd/silverbullet-ghost |
|🔌 Git |Zef Hemel |https://github.com/silverbulletmd/silverbullet-github| |🔌 Git |Zef Hemel |https://github.com/silverbulletmd/silverbullet-github|
|🔌 Ghost |Zef Hemel |https://github.com/silverbulletmd/silverbullet-ghost | |🔌 Github |Zef Hemel |https://github.com/silverbulletmd/silverbullet-github|
<!-- /query --> <!-- /query -->
#### 5.4 Display the data in a format defined by a template #### 5.4 Display the data in a format defined by a template
@ -141,14 +154,14 @@ For the sake of simplicity, we will use `page` data source and limit the results
**Result:** Here you go. This is the result we would like to achieve 🎉. Did you see how I used `render` and `template/plug` in a query? 🚀 **Result:** Here you go. This is the result we would like to achieve 🎉. Did you see how I used `render` and `template/plug` in a query? 🚀
<!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 render [[template/plug]] --> <!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 render [[template/plug]] -->
* [[🔌 Query]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet)) * [[🔌 Backlinks]] by **Guillermo Vayá** ([repo](https://github.com/Willyfrog/silverbullet-backlinks))
* [[🔌 Github]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-github)) * [[🔌 Core]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
* [[🔌 Mount]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-mount))
* [[🔌 Git]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-github))
* [[🔌 Ghost]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-ghost)) * [[🔌 Ghost]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-ghost))
* [[🔌 Git]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-github))
* [[🔌 Github]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-github))
<!-- /query --> <!-- /query -->
PS: You don't need select only certain fields to use templates. Templates are smart enough to get only the information needed to render the data. PS: You don't need to select only certain fields to use templates. Templates are smart enough to get only the information needed to render the data.
Therefore, following queries are same in terms of end result when using the templates. Therefore, following queries are same in terms of end result when using the templates.
```yaml ```yaml