loading redis keys

This commit is contained in:
Jan Prochazka
2022-03-05 18:46:18 +01:00
parent 425841bb38
commit 51942be0a6
11 changed files with 130 additions and 21 deletions

View File

@@ -151,6 +151,16 @@ module.exports = {
return res.result;
},
loadKeys_meta: true,
async loadKeys({ conid, database, root }) {
const opened = await this.ensureOpened(conid, database);
const res = await this.sendRequest(opened, { msgtype: 'loadKeys', root });
if (res.errorMessage) {
console.error(res.errorMessage);
}
return res.result || null;
},
updateCollection_meta: true,
async updateCollection({ conid, database, changeSet }) {
const opened = await this.ensureOpened(conid, database);

View File

@@ -183,6 +183,17 @@ async function handleCollectionData({ msgid, options }) {
}
}
async function handleLoadKeys({ msgid, root }) {
await waitConnected();
const driver = requireEngineDriver(storedConnection);
try {
const result = await driver.loadKeys(systemConnection, root);
process.send({ msgtype: 'response', msgid, result });
} catch (err) {
process.send({ msgtype: 'response', msgid, errorMessage: err.message });
}
}
async function handleUpdateCollection({ msgid, changeSet }) {
await waitConnected();
const driver = requireEngineDriver(storedConnection);
@@ -248,6 +259,7 @@ const messageHandlers = {
runScript: handleRunScript,
updateCollection: handleUpdateCollection,
collectionData: handleCollectionData,
loadKeys: handleLoadKeys,
sqlPreview: handleSqlPreview,
ping: handlePing,
syncModel: handleSyncModel,

View File

@@ -75,6 +75,7 @@ export interface EngineDriver {
name: string;
}[]
>;
loadKeys(pool, root: string): Promise;
analyseFull(pool: any, serverVersion): Promise<DatabaseInfo>;
analyseIncremental(pool: any, structure: DatabaseInfo, serverVersion): Promise<DatabaseInfo>;
dialect: SqlDialect;

View File

@@ -78,6 +78,12 @@ const databaseListLoader = ({ conid }) => ({
},
});
const databaseKeysLoader = ({ conid, database, root }) => ({
url: 'database-connections/load-keys',
params: { conid, database, root },
reloadTrigger: `database-keys-changed-${conid}-${database}`,
});
const serverVersionLoader = ({ conid }) => ({
url: 'server-connections/version',
params: { conid },
@@ -429,3 +435,10 @@ export function getAuthTypes(args) {
export function useAuthTypes(args) {
return useCore(authTypesLoader, args);
}
export function getDatabaseKeys(args) {
return getCore(databaseKeysLoader, args);
}
export function useDatabaseKeys(args) {
return useCore(databaseKeysLoader, args);
}

View File

@@ -11,6 +11,7 @@
import WidgetColumnBar from './WidgetColumnBar.svelte';
import WidgetColumnBarItem from './WidgetColumnBarItem.svelte';
import SqlObjectList from './SqlObjectList.svelte';
import DbKeysTree from './DbKeysTree.svelte';
export let hidden = false;
@@ -49,7 +50,9 @@
<SqlObjectList {conid} {database} />
</WidgetColumnBarItem>
{:else if driver?.databaseEngineTypes?.includes('keyvalue')}
<WidgetColumnBarItem title={'Keys'} name="dbObjects" storageName="dbObjectsWidget" />
<WidgetColumnBarItem title={'Keys'} name="dbObjects" storageName="dbObjectsWidget">
<DbKeysTree {conid} {database} />
</WidgetColumnBarItem>
{/if}
{:else}
<WidgetColumnBarItem title="Database content" name="dbObjects" storageName="dbObjectsWidget">

View File

@@ -0,0 +1,16 @@
<script lang="ts">
import { useDatabaseKeys } from '../utility/metadataLoaders';
export let conid;
export let database;
export let root;
$: keys = useDatabaseKeys({ conid, database, root });
</script>
{#each $keys || [] as key}
<div>
{key.text}
</div>
{/each}

View File

@@ -0,0 +1,8 @@
<script lang="ts">
import DbKeysSubTree from './DbKeysSubTree.svelte';
export let conid;
export let database;
</script>
<DbKeysSubTree {conid} {database} root="" />

View File

@@ -1,19 +0,0 @@
<script lang="ts">
import _ from 'lodash';
import { currentDatabase } from '../stores';
import ErrorInfo from '../elements/ErrorInfo.svelte';
import SqlObjectList from './SqlObjectList.svelte';
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
$: conid = _.get($currentDatabase, 'connection._id');
$: singleDatabase = _.get($currentDatabase, 'connection.singleDatabase');
$: database = _.get($currentDatabase, 'name');
</script>
{#if conid && (database || singleDatabase)}
<SqlObjectList {conid} {database} />
{:else}
<WidgetsInnerContainer>
<ErrorInfo message="Database not selected" icon="img alert" />
</WidgetsInnerContainer>
{/if}