Files
openidea/sdk/rust/openidea-plugin/wit/database.wit
T
l0ng-ai a8036ce6fa feat(plugins): open two texts in the diff viewer (API 1.7) (#3055)
Plugins could show their own content in an editor tab (open-content-tab) but
could open the diff viewer only as the reply to one of that tab's actions. A
review plugin (a merge request's files, say) had no way to show a file's
before and after.

views.open-diff opens two texts in the invoking window's diff viewer, with
optional labels and title and a file name that picks the syntax highlighting;
web views send { op: "open-diff", ... }. The SDK wraps it as host::open_diff
with a mock. The plugin API moves to 1.7.0 (1.6.0 is released) and the checked-in
components are rebuilt.
2026-11-13 12:02:36 +08:00

35 lines
1.8 KiB
Plaintext
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.
package openidea:plugin@1.7.0;
/// Plugin-owned project data sources. Requires database.sources and project trust.
/// Runs on the Database subsystem's host, including on remote project servers.
interface database {
use types.{error};
use workspace.{project};
/// Non-secret connection settings. Id is private to this plugin (1–128 bytes).
/// Drivers: sqlite, postgres, mysql, sqlServer, clickhouse, oracle.
/// SQLite uses database as its file path, or a sqlite: URL. Options are driver properties.
/// URLs and options must not contain passwords, tokens or other credentials.
record data-source {
id: string,
name: string,
driver: string,
host: option<string>,
port: option<u16>,
database: option<string>,
user: option<string>,
url: option<string>,
options: list<tuple<string, string>>,
}
/// Creates or replaces only this plugin's source; unrelated file entries are preserved.
upsert-source: func(project: borrow<project>, source: data-source) -> result<_, error>;
/// Removes an owned source and its credentials; not-found for every other id.
remove-source: func(project: borrow<project>, id: string) -> result<_, error>;
/// Lists only this plugin's private ids, never connection settings or credentials.
sources: func(project: borrow<project>) -> result<list<string>, error>;
/// Writes an owned source's password directly to the Database secure store. Never readable.
set-credential: func(project: borrow<project>, id: string, password: string) -> result<_, error>;
/// Requests the project's usual connection/introspection in the invoking window.
/// Invalid outside a command/event of that project's window.
connect: func(project: borrow<project>, id: string) -> result<_, error>;
}