mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-15 03:04:36 +00:00

* chore: add vendor submodules * feat: add packages for db,ci,schema,api,jarvis cmds * feat: add tauri-jarvis-plugin * feat: implement extension commands list * fix(desktop): import path errors after packages refactor * chore: add self signed cert * fix: prevent prerender for desktop * fix(desktop): desktop sveltekit static build, use csr for dynamic route * feat: add error handling page and components * refactor: component lib * refactor: move more types, functions and components out of desktop * refactor(ui): more refactor * refactor(ui): move store components to @kksh/ui * ci: add CI for build & test * refactor: rename @kksh/extensions to @kksh/extension * ci: add 2 more ci * ci: fix * fix: CI env var * chore: add changeset * feat: implement extension store item detail view * feat: implement extension store install, uninstall, upgrade * format * revert: upgradable logic, the new one doesn't work yet * refactor: make @kksh/ui dependent only on @kksh/api Reason: @kksh/ui may be published later for building website, all its dependency packages must be also published. To avoid trouble it should be standalone, depend only on packages already published * refactor: cleanup * fixed: some typescript error * chore: got typedoc working on @kksh/api * ci: disable manifest schema upload CI on push
97 lines
2.4 KiB
SQL
97 lines
2.4 KiB
SQL
CREATE TABLE IF NOT EXISTS schema_version (version INTEGER NOT NULL);
|
|
|
|
-- Extensions table
|
|
CREATE TABLE IF NOT EXISTS extensions (
|
|
ext_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
identifier TEXT NOT NULL,
|
|
version TEXT NOT NULL,
|
|
enabled BOOLEAN DEFAULT TRUE,
|
|
path TEXT UNIQUE,
|
|
data JSON,
|
|
installed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS commands (
|
|
cmd_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ext_id INTEGER NOT NULL,
|
|
name TEXT NOT NULL,
|
|
enabled BOOLEAN DEFAULT TRUE,
|
|
alias TEXT,
|
|
hotkey TEXT,
|
|
type TEXT NOT NULL CHECK (
|
|
type IN (
|
|
'iframe',
|
|
'ui_worker',
|
|
'headless_worker',
|
|
'quick_link',
|
|
'remote'
|
|
)
|
|
),
|
|
data JSON,
|
|
FOREIGN KEY (ext_id) REFERENCES extensions (ext_id)
|
|
);
|
|
|
|
-- Extension Data table
|
|
CREATE TABLE IF NOT EXISTS extension_data (
|
|
data_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ext_id INTEGER NOT NULL,
|
|
data_type TEXT NOT NULL,
|
|
data JSON NOT NULL,
|
|
search_text TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (ext_id) REFERENCES extensions (ext_id)
|
|
);
|
|
|
|
-- Full-text search index for ext_data
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS extension_data_fts USING fts5 (
|
|
data_id UNINDEXED,
|
|
search_text,
|
|
content = extension_data,
|
|
content_rowid = data_id
|
|
);
|
|
|
|
-- Trigger to update FTS index when extension_data is inserted
|
|
CREATE TRIGGER IF NOT EXISTS extension_data_ai AFTER INSERT ON extension_data BEGIN
|
|
INSERT INTO
|
|
extension_data_fts (data_id, search_text)
|
|
VALUES
|
|
(new.data_id, new.search_text);
|
|
|
|
END;
|
|
|
|
-- Trigger to update FTS index when extension_data is updated
|
|
CREATE TRIGGER IF NOT EXISTS extension_data_au AFTER
|
|
UPDATE ON extension_data BEGIN
|
|
INSERT INTO
|
|
extension_data_fts (extension_data_fts, data_id, search_text)
|
|
VALUES
|
|
('delete', old.data_id, old.search_text);
|
|
|
|
INSERT INTO
|
|
extension_data_fts (data_id, search_text)
|
|
VALUES
|
|
(new.data_id, new.search_text);
|
|
|
|
END;
|
|
|
|
-- Trigger to update FTS index when extension_data is deleted
|
|
CREATE TRIGGER IF NOT EXISTS extension_data_ad AFTER DELETE ON extension_data BEGIN
|
|
INSERT INTO
|
|
extension_data_fts (extension_data_fts, data_id, search_text)
|
|
VALUES
|
|
('delete', old.data_id, old.search_text);
|
|
|
|
END;
|
|
|
|
-- Trigger to update 'updated_at' timestamp when extension data is updated
|
|
CREATE TRIGGER IF NOT EXISTS update_extension_data_timestamp AFTER
|
|
UPDATE ON extension_data BEGIN
|
|
UPDATE extension_data
|
|
SET
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE
|
|
data_id = NEW.data_id;
|
|
|
|
END;
|