Zuoqiu-Yingyi/widget-query

怎么显示自定义属性啊

Closed this issue · 10 comments

lmmxj commented

把自定义属性名作为一列这样的,比如id,content,custom-aa,custom-bb

把自定义属性名作为一列这样的,比如id,content,custom-aa,custom-bb

可能需要在查询前确定想要显示的块属性,如果可以接受的话我写一个示例

lmmxj commented

麻烦写个示例吧,另外自定义属性可能不是每条数据都有,能显示所有数据吗

麻烦写个示例吧,另外自定义属性可能不是每条数据都有,能显示所有数据吗

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;

image
下个版本我试试能不能自动处理

lmmxj commented

IAL 渲染为多列:不能用query-fields的方式选择ial里的字段,只要不为空都会列出

自定义查询: 没有任何自定义属性的文件,会显示不出来。
attributes as a INNER JOIN blocks as b on a.block_id = b.id ​
不能 right join

了解,那我再用一个新字段控制 ial 渲染吧🙂

lmmxj commented

个人感觉最好是 能弄个类似临时表的方式,把自定义属性追加到 blocks里,这样能改显示的字段名。最好是可以直接在查询的页面修改自定义属性那种。 九炎之前做的属性面板有这个功能,但是那个版本被他修改后,也找不到自定义属性了,旧版又被我删了。 当然,能实现查询功能就可以满足大部分需要了。

思源提供的数据库 API 只能查询, 不支持增删改~
不过刚刚我在配置中设置了三个配置选项

  • config.query.render.ial.fields.forced: (Array) 强制渲染的 IAL 字段(优先级最高)
  • config.query.render.ial.fields.ignore: (Array) IAL 字段渲染黑名单(优先级次高)
  • config.query.render.ial.fields.valid: (Array) IAL 字段渲染白名单(优先级最低)

配合块自定义属性可以覆盖, 例如设置如下自定义块属性会强制渲染 namealias
query-render-ial-fields-forced: ['name', 'alias']

@all-contributors please add @lmmxj for ideas