跳转到主要内容
如果插件会启动或知道某个数据库(本地开发环境、云工具、容器运行器等),可以把数据源直接加到项目的 数据库 工具窗口中,省得用户手动填写连接设置。插件只能管理它自己创建的数据源:看不到用户创建的数据源、其他插件的数据源, 也看不到任何已保存的密码。数据源创建后,用户就通过常规的 数据库工具 使用它。 这就是 database 宿主接口(database.wit,API 1.4)。

清单

每个调用都需要 database.sources,也都需要一个受信任且已打开的项目。

创建数据源并连接

数据源记录

PluginDataSource(WIT database.data-source)只包含非机密的设置: 不要把凭据放进任何设置字段。包含密码或凭据查询参数的 URL,以及名为 password、token、secret 的选项都会被拒绝, 请改用 set_data_source_credential。没有任何读取凭据的函数,刚写入的也读不回来。

存储位置

  • 插件自有的数据源写在项目的 .openidea/data-sources.toml 中,带 pluginOwner 和 pluginSourceId。 更新时会保留无关的条目、注释和格式。文件必须使用常规的 [[data-source]] 表格式,内联表数组会被拒绝。 这里不会写入任何密码。
  • 数据源变化时数据库树会刷新,并用插件 id 标注插件自有的数据源。复制它会得到一份归用户所有的副本。
  • 禁用插件时数据源保留。卸载时连同凭据一起删除,宿主记得的已关闭项目中的也会删除。

连接

connect_data_source 只能在该项目窗口的命令或事件中调用。它走常规的数据库连接流程、密码提示和结构读取。 等待窗口期间不计入插件的调用预算;窗口必须在 180 秒内响应,调用可以被取消。

限制与错误

  • 每个插件每个项目最多 64 个数据源;每个值或可选字段最多 16 KiB;凭据最多 64 KiB。
  • 未知 id 或属于他人的 id 都返回 not-found,不会透露其他所有者的数据源是否存在。
  • 在远程项目中,数据源和凭据保存在数据库子系统运行的地方,也就是项目服务器上。没有该子系统的宿主返回 invalid("Database subsystem is unavailable on this host")。
data-tools 测试插件 在命令中调用了全部函数。