mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 04:16:00 +00:00
schemaList moved from dbinfo to separate request
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
<script lang="ts">
|
||||
import { getFormContext } from '../forms/FormProviderCore.svelte';
|
||||
import FormSelectField from '../forms/FormSelectField.svelte';
|
||||
import { useDatabaseInfo, useDatabaseList } from '../utility/metadataLoaders';
|
||||
import { useSchemaList } from '../utility/metadataLoaders';
|
||||
|
||||
export let conidName;
|
||||
export let databaseName;
|
||||
|
||||
const { values } = getFormContext();
|
||||
$: dbinfo = useDatabaseInfo({ conid: $values[conidName], database: values[databaseName] });
|
||||
$: schemaList = useSchemaList({ conid: $values[conidName], database: values[databaseName] });
|
||||
|
||||
$: schemaOptions = (($dbinfo && $dbinfo.schemas) || []).map(schema => ({
|
||||
$: schemaOptions = ($schemaList || []).map(schema => ({
|
||||
value: schema.schemaName,
|
||||
label: schema.schemaName,
|
||||
}));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import { addCompleter, setCompleters } from 'ace-builds/src-noconflict/ext-language_tools';
|
||||
import { getDatabaseInfo } from '../utility/metadataLoaders';
|
||||
import { getDatabaseInfo, getSchemaList } from '../utility/metadataLoaders';
|
||||
import analyseQuerySources from './analyseQuerySources';
|
||||
import { getStringSettingsValue } from '../settings/settingsTools';
|
||||
|
||||
@@ -24,9 +24,9 @@ const COMMON_KEYWORDS = [
|
||||
'go',
|
||||
];
|
||||
|
||||
function createTableLikeList(dbinfo, schemaCondition) {
|
||||
function createTableLikeList(schemaList, dbinfo, schemaCondition) {
|
||||
return [
|
||||
...(dbinfo.schemas?.map(x => ({
|
||||
...(schemaList?.map(x => ({
|
||||
name: x.schemaName,
|
||||
value: x.schemaName,
|
||||
caption: x.schemaName,
|
||||
@@ -78,6 +78,7 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
|
||||
const cursor = session.selection.cursor;
|
||||
const line = session.getLine(cursor.row).slice(0, cursor.column);
|
||||
const dbinfo = await getDatabaseInfo({ conid, database });
|
||||
const schemaList = await getSchemaList({ conid, database });
|
||||
|
||||
const convertUpper = getStringSettingsValue('sqlEditor.sqlCommandsCase', 'upperCase') == 'upperCase';
|
||||
|
||||
@@ -147,9 +148,9 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
|
||||
];
|
||||
}
|
||||
} else {
|
||||
const schema = (dbinfo.schemas || []).find(x => x.schemaName == colMatch[1]);
|
||||
const schema = (schemaList || []).find(x => x.schemaName == colMatch[1]);
|
||||
if (schema) {
|
||||
list = createTableLikeList(dbinfo, x => x.schemaName == schema.schemaName);
|
||||
list = createTableLikeList(schemaList, dbinfo, x => x.schemaName == schema.schemaName);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -167,7 +168,11 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
|
||||
} else {
|
||||
list = [
|
||||
...(onlyTables ? [] : list),
|
||||
...createTableLikeList(dbinfo, x => !dbinfo.defaultSchema || dbinfo.defaultSchema == x.schemaName),
|
||||
...createTableLikeList(
|
||||
schemaList,
|
||||
dbinfo,
|
||||
x => !dbinfo.defaultSchema || dbinfo.defaultSchema == x.schemaName
|
||||
),
|
||||
|
||||
...(onlyTables
|
||||
? []
|
||||
|
||||
@@ -249,6 +249,10 @@
|
||||
<FormCheckboxField label={`Use only database ${defaultDatabase}`} name="singleDatabase" disabled={isConnected} />
|
||||
{/if}
|
||||
|
||||
{#if driver?.showConnectionField('useSeparateSchemas', $values, showConnectionFieldArgs)}
|
||||
<FormCheckboxField label={`Use schemas separately (use this if you have many large schemas)`} name="useSeparateSchemas" disabled={isConnected} />
|
||||
{/if}
|
||||
|
||||
{#if driver}
|
||||
<div class="row">
|
||||
<div class="col-6 mr-1">
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
export let driver;
|
||||
export let resetCounter;
|
||||
export let isCreateTable;
|
||||
export let schemaList;
|
||||
|
||||
$: isWritable = !!setTableInfo;
|
||||
|
||||
@@ -172,7 +173,7 @@
|
||||
title="Table properties"
|
||||
fieldDefinitions={tableFormOptions ?? []}
|
||||
pureNameTitle={isCreateTable ? 'Table name' : null}
|
||||
schemaList={isCreateTable && dbInfo?.schemas?.length >= 0 ? dbInfo?.schemas : null}
|
||||
schemaList={isCreateTable && schemaList?.length >= 0 ? schemaList : null}
|
||||
values={_.pick(tableInfo, ['schemaName', 'pureName', ...(tableFormOptions ?? []).map(x => x.name)])}
|
||||
onChangeValues={vals => {
|
||||
if (!_.isEmpty(vals)) {
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
import TableEditor from '../tableeditor/TableEditor.svelte';
|
||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||
|
||||
import { useConnectionInfo, useDatabaseInfo, useDbCore } from '../utility/metadataLoaders';
|
||||
import { useConnectionInfo, useDatabaseInfo, useDbCore, useSchemaList } from '../utility/metadataLoaders';
|
||||
import { showModal } from '../modals/modalTools';
|
||||
import ConfirmSqlModal from '../modals/ConfirmSqlModal.svelte';
|
||||
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
||||
@@ -75,6 +75,7 @@
|
||||
$: tableInfoWithPairingId = $tableInfo ? generateTablePairingId($tableInfo) : null;
|
||||
$: connection = useConnectionInfo({ conid });
|
||||
$: driver = findEngineDriver($connection, $extensions);
|
||||
$: schemaList = useSchemaList({ conid, database });
|
||||
|
||||
const { editorState, editorValue, setEditorData, clearEditorData } = useEditorData({ tabid });
|
||||
|
||||
@@ -146,6 +147,7 @@
|
||||
bind:this={domEditor}
|
||||
tableInfo={showTable}
|
||||
dbInfo={$dbInfo}
|
||||
schemaList={$schemaList}
|
||||
{driver}
|
||||
{resetCounter}
|
||||
isCreateTable={objectTypeField == 'tables' && !$editorValue?.base}
|
||||
|
||||
@@ -13,6 +13,12 @@ const databaseInfoLoader = ({ conid, database }) => ({
|
||||
transform: extendDatabaseInfo,
|
||||
});
|
||||
|
||||
const schemaListLoader = ({ conid, database }) => ({
|
||||
url: 'database-connections/schema-list',
|
||||
params: { conid, database },
|
||||
reloadTrigger: { key: `schema-list-changed`, conid, database },
|
||||
});
|
||||
|
||||
// const tableInfoLoader = ({ conid, database, schemaName, pureName }) => ({
|
||||
// url: 'metadata/table-info',
|
||||
// params: { conid, database, schemaName, pureName },
|
||||
@@ -449,3 +455,9 @@ export function useAuthTypes(args) {
|
||||
// export function useDatabaseKeys(args) {
|
||||
// return useCore(databaseKeysLoader, args);
|
||||
// }
|
||||
export function getSchemaList(args) {
|
||||
return getCore(schemaListLoader, args);
|
||||
}
|
||||
export function useSchemaList(args) {
|
||||
return useCore(schemaListLoader, args);
|
||||
}
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
|
||||
import _ from 'lodash';
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import { DatabaseInfo } from 'dbgate-types';
|
||||
import { showModal } from '../modals/modalTools';
|
||||
import ConfirmModal from '../modals/ConfirmModal.svelte';
|
||||
import { runOperationOnDatabase } from '../modals/ConfirmSqlModal.svelte';
|
||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||
import { appliedCurrentSchema } from '../stores';
|
||||
|
||||
export let dbinfo: DatabaseInfo;
|
||||
export let schemaList;
|
||||
export let selectedSchema;
|
||||
export let objectList;
|
||||
|
||||
@@ -44,7 +43,7 @@
|
||||
}
|
||||
|
||||
$: schemaList = _.uniq(
|
||||
_.compact([selectedSchema, ...Object.keys(countBySchema), ...(dbinfo?.schemas?.map(x => x.schemaName) ?? [])])
|
||||
_.compact([selectedSchema, ...Object.keys(countBySchema), ...(schemaList?.map(x => x.schemaName) ?? [])])
|
||||
);
|
||||
$: countBySchema = computeCountBySchema(objectList ?? []);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import InlineButton from '../buttons/InlineButton.svelte';
|
||||
import SearchInput from '../elements/SearchInput.svelte';
|
||||
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
|
||||
import { useConnectionInfo, useDatabaseInfo, useDatabaseStatus, useUsedApps } from '../utility/metadataLoaders';
|
||||
import { useConnectionInfo, useDatabaseInfo, useDatabaseStatus, useSchemaList, useUsedApps } from '../utility/metadataLoaders';
|
||||
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
||||
import AppObjectList from '../appobj/AppObjectList.svelte';
|
||||
import _ from 'lodash';
|
||||
@@ -46,6 +46,7 @@
|
||||
|
||||
$: objects = useDatabaseInfo({ conid, database });
|
||||
$: status = useDatabaseStatus({ conid, database });
|
||||
$: schemaList = useSchemaList({ conid, database });
|
||||
|
||||
$: connection = useConnectionInfo({ conid });
|
||||
$: driver = findEngineDriver($connection, $extensions);
|
||||
@@ -144,7 +145,7 @@
|
||||
</InlineButton>
|
||||
</SearchBoxWrapper>
|
||||
<SchemaSelector
|
||||
dbinfo={$objects}
|
||||
schemaList={$schemaList}
|
||||
bind:selectedSchema
|
||||
objectList={flatFilteredList}
|
||||
valueStorageKey={`sql-object-list-schema-${conid}-${database}`}
|
||||
|
||||
Reference in New Issue
Block a user