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) => {