widget query使用文档
简体中文 | English
widget-query
一个将思源笔记数据库查询结果以表格样式渲染的挂件
现已上架思源笔记社区集市, 如果您喜欢本挂件, 欢迎为本项目点亮一个⭐!
思源数据库表与字段详情请见: 思源数据库表与字段 · 语雀
预览
https://github.com/Zuoqiu-Yingyi/widget-query/blob/main/preview.png
背景颜色状态指示:
-
白色:
- 初始化
- 正在处理查询
-
绿色
- 查询成功
-
蓝色
- 请继续操作
-
黄色
- 查询结果为空
-
红色
- SQL 语句错误
- 未知错误
功能
-
点选自动查询复选框, 下次打开该页面时自动进行一次查询
-
为挂件块设置自定义属性 input 可以指定某个代码块或嵌入块中的 SQL 语句作为查询语句
- 例如在其他文档中有一个代码块或嵌入块 ID 为
20220418210605-ibussa1
, 那么为挂件块设置自定义块属性 input:20220418210605-ibussa1
可以引用该块的 SQL 语句进行查询 - 只有挂件块前一个块不是具有自定义属性 type:
query-code
的代码块时才会触发
- 例如在其他文档中有一个代码块或嵌入块 ID 为
-
为挂件块设置自定义属性 output 可以指定某个表格块作为查询结果展示块
- 例如在其他文档中有一个表格块 ID 为
20220604112815-sfiwyi7
, 那么为挂件块设置自定义块属性 output:20220604112815-sfiwyi7
可以将查询结果渲染到该表格中 - 只有挂件块后一个块不是具有自定义属性 type:
query-table
的表格块时才会触发
- 例如在其他文档中有一个表格块 ID 为
-
符合正则表达式
^\s*SELECT\s+\*\s+FROM\s+blocks\s+.*
的 SQL 语句将启用默认块查询模式- 该正则表达式在
/src/script/module/config.js
文件中config.query.regs.blocks
定义 - 示例:
SELECT * FROM blocks WHERE content LIKE '%内容块%'
- 该模式下, 查询结果渲染样式将以如下配置选项进行控制
- 该正则表达式在
-
不符合默认块查询模式的查询均为普通查询模式
-
示例
-
查询帮助文档
请从这里开始
及其下级所有的文档SELECT '[' || b.content || '](siyuan://blocks/' || b.id || ')' AS __1____pre__文档标题, b.hpath AS __2__文档路径 FROM blocks AS b WHERE b.type = 'd' AND b.hpath LIKE '%请从这里开始%' ORDER BY b.path LIMIT 10
-
查询思源数据库所有表
SELECT * FROM sqlite_master
-
查询思源数据库
blocks
表中所有字段PRAGMA table_info('blocks')
-
自定义属性视图
SELECT '[' || b.content || '](siyuan://blocks/' || a.block_id || ')' AS __1____pre__文档标题, MAX( CASE WHEN a.name = 'name' THEN a.value ELSE NULL END ) AS __2____kbd__命名, MAX( CASE WHEN a.name = 'alias' THEN REPLACE( '<kbd>' || a.value || '</kbd>', ',', '</kbd><br/><kbd>' ) ELSE NULL END ) AS __3____pre__别名, MAX( CASE WHEN a.name = 'memo' THEN REPLACE( '<kbd>' || a.value || '</kbd>', ',', '</kbd><br/><kbd>' ) ELSE NULL END ) AS __3____pre__备注 FROM attributes AS a INNER JOIN blocks AS b ON a.block_id = b.id WHERE ( a.name = 'name' OR a.name = 'alias' OR a.name = 'memo' ) AND b.type = 'd' GROUP BY a.block_id ORDER BY RANDOM() LIMIT 10;
https://github.com/Zuoqiu-Yingyi/widget-query/blob/main/image/README/1649676356928.png
-
-
使用字段别名前缀定义查询显示样式
-
__hidden__别名0
:- 该字段不显示在查询结果中
-
__ref__别名1
:- 该字段渲染为块引用
- 示例:
((<value> "<value>"))
-
__link__别名2
:- 该字段渲染为块链接
- 示例:
[<value>](siyuan://blocks/<value>)
-
__raw__别名3
:- 该字段渲染为原始值(行内代码样式)
- 示例:
<value>
-
__date__别名4
:- 该字段渲染为日期
- 示例:
yyyy-MM-dd
-
__time__别名5
:- 该字段渲染为时间
- 示例:
HH:mm:ss
-
__datetime__别名6
:- 该字段渲染为日期时间
- 示例:
yyyy-MM-dd HH:mm:ss
-
__s__别名7
:- 该字段渲染为删除线
- 示例:
~~<value>~~
-
__u__别名8
:- 该字段渲染为下划线
- 示例:
<u><value></u>
-
__em__别名9
:- 该字段渲染为斜体
- 示例:
*<value>*
-
__tag__别名10
:- 该字段渲染为标签
- 示例:
<kbd><value></kbd>
-
__kbd__别名11
:- 该字段渲染为按键样式
- 示例:
~<value>~
-
__sub__别名12
:- 该字段渲染为下标样式
- 示例:
^<value>^
-
__sup__别名13
:- 该字段渲染为上标样式
- 示例:
#<value>#
-
__code__别名14
:- 该字段渲染为行内代码
- 示例:
<value>
-
__mark__别名15
:- 该字段渲染为标记
- 示例:
==<value>==
-
__math__别名16
:- 该字段渲染为公式
- 示例:
$<value>$
-
__strong__别名17
:- 该字段渲染为粗体
- 示例:
**<value>**
-
__pre__别名18
:- 该字段渲染为预览(渲染 markdown 行级标识符)
- 示例:
<value>
-
-
使用字段别名前缀定义查询结果字段顺序
-
__<数字>__别名8
:-
该字段可以放置在查询样式前缀字段的前面
-
示例:
-
__1____pre__别名9
-
__02____raw__别名10
-
-
-
-
默认显示查询结果原始值(使用行内代码)
-
字段别名前缀示例
-
SELECT b.id AS __00____ref__ref, b.id AS __01____link__link, b.id AS __02____pre__pre, b.id AS __03____raw__raw, b.created AS __04____date__date, b.created AS __05____time__time, b.created AS __06____datetime__datetime, b.id AS __07____s__s, b.id AS __08____u__u, b.id AS __09____em__em, b.id AS __10____tag__tag, b.id AS __11____kbd__kbd, b.id AS __12____sub__sub, b.id AS __13____sup__sup, b.id AS __14____code__code, b.id AS __15____mark__mark, b.id AS __16____math__math, b.id AS __17____strong__strong FROM blocks AS b WHERE id = '.root{.id}'
https://github.com/Zuoqiu-Yingyi/widget-query/blob/main/image/README/1648568044659.png
-
-
-
部分模板字段解析支持
-
.<prefix>{.<field>}
-
<prefix>
: 前缀字段-
block
: 挂件块 -
parent
: 挂件块的上级块 -
root
: 挂件块所在文档块
-
-
<field>
: 属性字段- 数据库中
blocks
表的字段名, 详情请参考 blocks
- 数据库中
-
示例:
SELECT * FROM blocks WHERE id = '.root{.id}' content LIKE '%内容块%'
- 等价于
SELECT * FROM blocks WHERE id = '.block{.root_id}' content LIKE '%内容块%'
- 查询挂件所在文档中所有含有
内容块
三个字的块
- 等价于
-
-
自定义配置
全局自定义配置
- 创建文件
<工作空间>/data/widgets/custom.js
- 在文件
<工作空间>/data/widgets/custom.js
中定义的值将覆盖<工作空间>/data/widgets/Query/src/script/module/config.js
中对应的值
配置示例
/**
* 文件路径
* <工作空间>/data/widgets/custom.js
* 示例功能 | Example function:
* 默认块查询结果中将块属性分列显示
*/
export const config = {
query: {
render: {
ial: {
shape: 'columns',
},
},
},
};
更多配置项请参考 config.js
块自定义配置
-
在挂件块(笔记中的Query按钮)中设置自定义块属性
- 自定义属性名称为
src/script/module/config.js
文件中config
对象中的属性 - 例如, 如果想要自定义查询结果字段列表, 可以设置自定义块属性
query-fields
:["hpath", "type", "markdown"]
, 在该块中将会替换config.query.fields
字段
- 自定义属性名称为
开始
该挂件已在思源笔记社区集市上架, 可直接在集市中安装
参考 & 感谢
作者 | 项目 | 许可证 |
---|---|---|
leolee9086 | leolee9086/cc-baselib | Unknown |
