From 8f7eb2abea83061435d4114c7774c75c6ed79a7c Mon Sep 17 00:00:00 2001 From: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com> Date: Wed, 27 Aug 2025 12:02:33 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20fts=20tables=20to?= =?UTF-8?q?=20groups=20(#2971)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-17413 --- addons/api/addon/services/sqlite.js | 1 + addons/api/addon/workers/utils/schema.js | 44 ++++++++++++++++++------ 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/addons/api/addon/services/sqlite.js b/addons/api/addon/services/sqlite.js index 41cfd9dbe..775cec1dd 100644 --- a/addons/api/addon/services/sqlite.js +++ b/addons/api/addon/services/sqlite.js @@ -80,6 +80,7 @@ export const modelMapping = { export const searchTables = new Set([ 'target', 'alias', + 'group', 'role', 'user', 'credential-store', diff --git a/addons/api/addon/workers/utils/schema.js b/addons/api/addon/workers/utils/schema.js index d5ff082c1..ca61f343a 100644 --- a/addons/api/addon/workers/utils/schema.js +++ b/addons/api/addon/workers/utils/schema.js @@ -94,6 +94,39 @@ CREATE TRIGGER IF NOT EXISTS alias_ad AFTER DELETE ON alias BEGIN VALUES('delete', old.rowid, old.id, old.type, old.name, old.description, old.destination_id, old.value, old.scope_id, old.created_time); END;`; +const createGroupTables = ` +CREATE TABLE IF NOT EXISTS "group" ( + id TEXT NOT NULL PRIMARY KEY, + name TEXT, + description TEXT, + scope_id TEXT NOT NULL, + created_time TEXT NOT NULL, + data TEXT NOT NULL +); +CREATE INDEX IF NOT EXISTS idx_group_scope_id_created_time ON "group"(scope_id, created_time DESC); + +CREATE VIRTUAL TABLE IF NOT EXISTS group_fts USING fts5( + id, + name, + description, + scope_id, + created_time, + content='', +); + +CREATE TRIGGER IF NOT EXISTS group_ai AFTER INSERT ON "group" BEGIN + INSERT INTO group_fts( + id, name, description, scope_id, created_time + ) VALUES ( + new.id, new.name, new.description, new.scope_id, new.created_time + ); +END; + +CREATE TRIGGER IF NOT EXISTS group_ad AFTER DELETE ON "group" BEGIN + INSERT INTO group_fts(group_fts, rowid, id, name, description, scope_id, created_time) + VALUES('delete', old.rowid, old.id, old.name, old.description, old.scope_id, old.created_time); +END;`; + const createRoleTables = ` CREATE TABLE IF NOT EXISTS role ( id TEXT NOT NULL PRIMARY KEY, @@ -279,22 +312,13 @@ CREATE TABLE IF NOT EXISTS token ( ${createTargetTables} ${createAliasTables} +${createGroupTables} ${createRoleTables} ${createUserTables} ${createCredentialStoreTables} ${createScopeTables} ${createAuthMethodTables} -CREATE TABLE IF NOT EXISTS "group" ( - id TEXT NOT NULL PRIMARY KEY, - name TEXT, - description TEXT, - scope_id TEXT NOT NULL, - created_time TEXT NOT NULL, - data TEXT NOT NULL -); -CREATE INDEX IF NOT EXISTS idx_group_scope_id_created_time ON "group"(scope_id, created_time DESC); - COMMIT;`; export const INSERT_STATEMENTS = (resource, items, modelMapping) => {