diff --git a/webapp/packages/administration/src/Administration/Administration.tsx b/webapp/packages/administration/src/Administration/Administration.tsx
index 27972a0f05..1d931b0abe 100644
--- a/webapp/packages/administration/src/Administration/Administration.tsx
+++ b/webapp/packages/administration/src/Administration/Administration.tsx
@@ -47,6 +47,7 @@ const administrationStyles = composes(
display: flex;
flex-direction: row;
flex: 1;
+ overflow: hidden;
}
drawer {
width: 250px;
@@ -68,11 +69,10 @@ type Props = {
export const Administration = observer(function Administration({ activeItem, onItemSelect }: Props) {
const controller = useController(AdministrationController);
- const activeItemName = activeItem || controller.defaultItem;
return styled(useStyles(verticalTabStyles, administrationStyles, tabsStyles))(
-
+
{controller.items.map(item => (
@@ -81,7 +81,7 @@ export const Administration = observer(function Administration({ activeItem, onI
-
+
diff --git a/webapp/packages/administration/src/Administration/AdministrationController.ts b/webapp/packages/administration/src/Administration/AdministrationController.ts
index ff762f442b..18fb3bc366 100644
--- a/webapp/packages/administration/src/Administration/AdministrationController.ts
+++ b/webapp/packages/administration/src/Administration/AdministrationController.ts
@@ -21,10 +21,6 @@ export class AdministrationController {
.sort((a, b) => a.order - b.order);
}
- @computed get defaultItem() {
- return this.administrationItemService.getDefaultItem();
- }
-
constructor(
private administrationItemService: AdministrationItemService
) {}
diff --git a/webapp/packages/administration/src/AdministrationScreen/AdministrationScreenService.ts b/webapp/packages/administration/src/AdministrationScreen/AdministrationScreenService.ts
index 23e21071b1..f51b31194e 100644
--- a/webapp/packages/administration/src/AdministrationScreen/AdministrationScreenService.ts
+++ b/webapp/packages/administration/src/AdministrationScreen/AdministrationScreenService.ts
@@ -26,7 +26,7 @@ export class AdministrationScreenService extends Bootstrap {
if (!this.screenService.isActive(AdministrationScreenService.screenName)) {
return null;
}
- return this.routerService.params.item || null;
+ return this.routerService.params.item || this.administrationItemService.getDefaultItem();
}
constructor(
diff --git a/webapp/packages/authentication/src/Administration/Users/UsersAdministration.tsx b/webapp/packages/authentication/src/Administration/Users/UsersAdministration.tsx
index 254dc008b5..d79e3a2bf9 100644
--- a/webapp/packages/authentication/src/Administration/Users/UsersAdministration.tsx
+++ b/webapp/packages/authentication/src/Administration/Users/UsersAdministration.tsx
@@ -10,11 +10,13 @@ import { observer } from 'mobx-react';
import styled, { css } from 'reshadow';
import { AdministrationTools } from '@dbeaver/administration';
-import {
- Table, TableHeader, TableColumnHeader, TableBody, TableItem, TableColumnValue
-} from '@dbeaver/core/blocks';
+import { Loader, IconButton } from '@dbeaver/core/blocks';
+import { useService } from '@dbeaver/core/di';
import { useStyles, composes } from '@dbeaver/core/theming';
+import { UsersManagerService } from '../UsersManagerService';
+import { UsersTable } from './UsersTable/UsersTable';
+
const styles = composes(
css`
AdministrationTools {
@@ -23,58 +25,39 @@ const styles = composes(
`,
css`
content {
+ position: relative;
padding-top: 16px;
+ flex: 1;
+ overflow: auto;
}
TableColumnHeader {
border-top: solid 1px;
}
+ AdministrationTools {
+ display: flex;
+ padding: 0 16px;
+ align-items: center;
+ }
+ IconButton {
+ height: 32px;
+ width: 32px;
+ margin-right: 16px;
+ }
`
);
export const UsersAdministration = observer(function UsersAdministration() {
+ const usersManagerService = useService(UsersManagerService);
+
return styled(useStyles(styles))(
<>
-
+
+
+
+
-
-
- User login
- User first name
- User last name
- User last name
-
-
-
-
- a
- b
- c
- d
-
-
-
- a
- b
- c
- d
-
-
-
- a
- b
- c
- d
-
-
-
- a
- b
- c
- d
-
-
-
-
+
+ {usersManagerService.users.isLoading() && }
>
);
diff --git a/webapp/packages/authentication/src/Administration/Users/AuthUsersAdministrationService.ts b/webapp/packages/authentication/src/Administration/Users/UsersAdministrationService.ts
similarity index 71%
rename from webapp/packages/authentication/src/Administration/Users/AuthUsersAdministrationService.ts
rename to webapp/packages/authentication/src/Administration/Users/UsersAdministrationService.ts
index 3045a2ab3b..de06d296e1 100644
--- a/webapp/packages/authentication/src/Administration/Users/AuthUsersAdministrationService.ts
+++ b/webapp/packages/authentication/src/Administration/Users/UsersAdministrationService.ts
@@ -9,13 +9,15 @@
import { AdministrationItemService } from '@dbeaver/administration';
import { injectable, Bootstrap } from '@dbeaver/core/di';
+import { UsersManagerService } from '../UsersManagerService';
import { UsersAdministration } from './UsersAdministration';
import { UsersDrawerItem } from './UsersDrawerItem';
@injectable()
-export class AuthUsersAdministrationService extends Bootstrap {
+export class UsersAdministrationService extends Bootstrap {
constructor(
- private administrationItemService: AdministrationItemService
+ private administrationItemService: AdministrationItemService,
+ private usersManagerService: UsersManagerService,
) {
super();
}
@@ -25,6 +27,11 @@ export class AuthUsersAdministrationService extends Bootstrap {
name: 'users',
getContentComponent: () => UsersAdministration,
getDrawerComponent: () => UsersDrawerItem,
+ onActivate: this.loadUsers.bind(this),
});
}
+
+ private async loadUsers() {
+ await this.usersManagerService.users.load();
+ }
}
diff --git a/webapp/packages/authentication/src/Administration/Users/UsersTable/User.tsx b/webapp/packages/authentication/src/Administration/Users/UsersTable/User.tsx
new file mode 100644
index 0000000000..30fcbcf0b7
--- /dev/null
+++ b/webapp/packages/authentication/src/Administration/Users/UsersTable/User.tsx
@@ -0,0 +1,29 @@
+/*
+ * cloudbeaver - Cloud Database Manager
+ * Copyright (C) 2020 DBeaver Corp and others
+ *
+ * Licensed under the Apache License, Version 2.0.
+ * you may not use this file except in compliance with the License.
+ */
+
+import { observer } from 'mobx-react';
+import styled from 'reshadow';
+
+import {
+ TableItem, TableColumnValue
+} from '@dbeaver/core/blocks';
+import { AdminUserInfo } from '@dbeaver/core/sdk';
+import { useStyles } from '@dbeaver/core/theming';
+
+type Props = {
+ user: AdminUserInfo;
+}
+
+export const User = observer(function User({ user }: Props) {
+ return styled(useStyles())(
+
+ {user.userId}
+
+
+ );
+});
diff --git a/webapp/packages/authentication/src/Administration/Users/UsersTable/UsersTable.tsx b/webapp/packages/authentication/src/Administration/Users/UsersTable/UsersTable.tsx
new file mode 100644
index 0000000000..964f5be4da
--- /dev/null
+++ b/webapp/packages/authentication/src/Administration/Users/UsersTable/UsersTable.tsx
@@ -0,0 +1,45 @@
+/*
+ * cloudbeaver - Cloud Database Manager
+ * Copyright (C) 2020 DBeaver Corp and others
+ *
+ * Licensed under the Apache License, Version 2.0.
+ * you may not use this file except in compliance with the License.
+ */
+
+import { observer } from 'mobx-react';
+import styled, { css } from 'reshadow';
+
+import {
+ Table, TableHeader, TableColumnHeader, TableBody
+} from '@dbeaver/core/blocks';
+import { AdminUserInfo } from '@dbeaver/core/sdk';
+import { useStyles, composes } from '@dbeaver/core/theming';
+
+import { User } from './User';
+
+const styles = composes(
+ css``,
+ css`
+ TableColumnHeader {
+ border-top: solid 1px;
+ }
+ `
+);
+
+type Props = {
+ users: AdminUserInfo[];
+}
+
+export const UsersTable = observer(function UsersTable({ users }: Props) {
+ return styled(useStyles(styles))(
+
+
+ User login
+
+
+
+ {users.map(user => )}
+
+
+ );
+});
diff --git a/webapp/packages/authentication/src/Administration/UsersManagerService.ts b/webapp/packages/authentication/src/Administration/UsersManagerService.ts
new file mode 100644
index 0000000000..6c1c4fbd55
--- /dev/null
+++ b/webapp/packages/authentication/src/Administration/UsersManagerService.ts
@@ -0,0 +1,26 @@
+/*
+ * cloudbeaver - Cloud Database Manager
+ * Copyright (C) 2020 DBeaver Corp and others
+ *
+ * Licensed under the Apache License, Version 2.0.
+ * you may not use this file except in compliance with the License.
+ */
+
+import { injectable } from '@dbeaver/core/di';
+import { CachedResource, GraphQLService, AdminUserInfo } from '@dbeaver/core/sdk';
+
+@injectable()
+export class UsersManagerService {
+ readonly users = new CachedResource([], this.refreshAsync.bind(this), data => !!data.length)
+ constructor(
+ private graphQLService: GraphQLService
+ ) {
+ }
+
+ private async refreshAsync(data: AdminUserInfo[]): Promise {
+ const { users } = await this.graphQLService.gql.getUsersList();
+
+ // TODO: temporary before full implementation was provided
+ return users as AdminUserInfo[];
+ }
+}
diff --git a/webapp/packages/authentication/src/manifest.ts b/webapp/packages/authentication/src/manifest.ts
index c07c5c5af9..e8bda7e10a 100644
--- a/webapp/packages/authentication/src/manifest.ts
+++ b/webapp/packages/authentication/src/manifest.ts
@@ -8,7 +8,8 @@
import { IServiceInjector, PluginManifest } from '@dbeaver/core/di';
-import { AuthUsersAdministrationService } from './Administration/Users/AuthUsersAdministrationService';
+import { UsersAdministrationService } from './Administration/Users/UsersAdministrationService';
+import { UsersManagerService } from './Administration/UsersManagerService';
import { AuthenticationService } from './AuthenticationService';
import { AuthInfoService } from './AuthInfoService';
import { AuthMenuService } from './AuthMenuService';
@@ -27,7 +28,8 @@ export const manifest: PluginManifest = {
AuthProviderService,
AuthDialogService,
AuthMenuService,
- AuthUsersAdministrationService,
+ UsersAdministrationService,
+ UsersManagerService,
],
async initialize(services: IServiceInjector) {
diff --git a/webapp/packages/core/codegen.yml b/webapp/packages/core/codegen.yml
index 857ed8b067..c08a189ba9 100644
--- a/webapp/packages/core/codegen.yml
+++ b/webapp/packages/core/codegen.yml
@@ -5,6 +5,7 @@ schema:
- ../../../server/bundles/io.cloudbeaver.server/schema/service.sql.graphqls
- ../../../server/bundles/io.cloudbeaver.service.metadata/schema/service.metadata.graphqls
- ../../../server/bundles/io.cloudbeaver.service.data.transfer/schema/service.data.transfer.graphqls
+ - ../../../server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls
- ../../../server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls
documents:
- ./src/**/*.gql
diff --git a/webapp/packages/core/public/icons/icons.svg b/webapp/packages/core/public/icons/icons.svg
index fe06f77d01..c74818691f 100644
--- a/webapp/packages/core/public/icons/icons.svg
+++ b/webapp/packages/core/public/icons/icons.svg
@@ -57,6 +57,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webapp/packages/core/src/app/Notifications/NotificationsItem/Snackbar/styles.ts b/webapp/packages/core/src/app/Notifications/NotificationsItem/Snackbar/styles.ts
index fe5b4ecabd..7ff93d5e5b 100644
--- a/webapp/packages/core/src/app/Notifications/NotificationsItem/Snackbar/styles.ts
+++ b/webapp/packages/core/src/app/Notifications/NotificationsItem/Snackbar/styles.ts
@@ -96,5 +96,8 @@ export const SNACKBAR_STYLES = composes(
}
}
}
+ IconButton {
+ color: rgba(0, 0, 0, 0.45);
+ }
`
);
diff --git a/webapp/packages/core/src/blocks/IconButton.tsx b/webapp/packages/core/src/blocks/IconButton.tsx
index b72ddb6e3a..bf86605bcf 100644
--- a/webapp/packages/core/src/blocks/IconButton.tsx
+++ b/webapp/packages/core/src/blocks/IconButton.tsx
@@ -5,7 +5,7 @@ import { Icon } from './Icons/Icon';
const styles = css`
Button {
- color: rgba(0, 0, 0, 0.45);
+ color: inherit;
outline: none;
border: none;
background: none;
@@ -13,10 +13,11 @@ const styles = css`
padding: 0;
margin: 4px;
height: 16px;
+ width: 16px;
& Icon {
- width: 16px;
- height: 16px;
+ width: 100%;
+ height: 100%;
}
}
`;
diff --git a/webapp/packages/core/src/queries/Authentication/Users/deleteUser.gql b/webapp/packages/core/src/queries/Authentication/Users/deleteUser.gql
index 8550dff72f..bf6e1fbc9a 100644
--- a/webapp/packages/core/src/queries/Authentication/Users/deleteUser.gql
+++ b/webapp/packages/core/src/queries/Authentication/Users/deleteUser.gql
@@ -1,3 +1,3 @@
-query deleteUser {
- deleteUser
+query deleteUser($userId: ID!) {
+ deleteUser(userId: $userId)
}
\ No newline at end of file
diff --git a/webapp/packages/core/src/queries/Authentication/Users/getPermissionsList.gql b/webapp/packages/core/src/queries/Authentication/Users/getPermissionsList.gql
index f9544c40d8..ba043e0904 100644
--- a/webapp/packages/core/src/queries/Authentication/Users/getPermissionsList.gql
+++ b/webapp/packages/core/src/queries/Authentication/Users/getPermissionsList.gql
@@ -1,4 +1,4 @@
-query getRolesList($roleId: ID) {
+query getPermissionsList($roleId: ID) {
permissions: listPermissions {
id
label
diff --git a/webapp/packages/core/src/queries/Authentication/Users/getUsersList.gql b/webapp/packages/core/src/queries/Authentication/Users/getUsersList.gql
index 13af993e2f..edde2bccde 100644
--- a/webapp/packages/core/src/queries/Authentication/Users/getUsersList.gql
+++ b/webapp/packages/core/src/queries/Authentication/Users/getUsersList.gql
@@ -1,9 +1,9 @@
query getUsersList($userId: ID) {
- users: authLogin(userId: $userId) {
+ users: listUsers(userId: $userId) {
userId
-
- metaParameters
- configurationParameters
- grantedRoles
+
+ #metaParameters
+ #configurationParameters
+ #grantedRoles
}
}
\ No newline at end of file
diff --git a/webapp/packages/core/src/queries/Authentication/Users/setUserCredentials.gql b/webapp/packages/core/src/queries/Authentication/Users/setUserCredentials.gql
new file mode 100644
index 0000000000..61f975b467
--- /dev/null
+++ b/webapp/packages/core/src/queries/Authentication/Users/setUserCredentials.gql
@@ -0,0 +1,3 @@
+query setUserCredentials($userId: ID!, $providerId: ID!, $credentials: Object!) {
+ setUserCredentials(userId: $userId, providerId: $providerId, credentials: $credentials)
+}
\ No newline at end of file
diff --git a/webapp/packages/core/src/sdk/sdk.ts b/webapp/packages/core/src/sdk/sdk.ts
index bebdd4e831..c7d8dd00d3 100644
--- a/webapp/packages/core/src/sdk/sdk.ts
+++ b/webapp/packages/core/src/sdk/sdk.ts
@@ -14,122 +14,189 @@ export type Scalars = {
DateTime: any;
};
-
-export type Query = {
- authLogin: UserAuthInfo;
- authLogout?: Maybe;
- authProviders: Array;
- connectionState: ConnectionInfo;
- dataSourceList: Array;
- dataTransferAvailableStreamProcessors: Array;
- dataTransferExportDataFromContainer: AsyncTaskInfo;
- dataTransferExportDataFromResults: AsyncTaskInfo;
- dataTransferRemoveDataFile?: Maybe;
- driverList: Array;
- metadataGetNodeDDL?: Maybe;
- navGetStructContainers: DatabaseStructContainers;
- navNodeChildren: Array;
- navNodeInfo: NavigatorNodeInfo;
- navRefreshNode?: Maybe;
- readSessionLog: Array;
- serverConfig: ServerConfig;
- sessionPermissions: Array>;
- sessionState: SessionInfo;
- sessionUser?: Maybe;
- sqlCompletionProposals?: Maybe>>;
- sqlDialectInfo?: Maybe;
- sqlListContexts?: Maybe>>;
-};
-
-
-export type QueryAuthLoginArgs = {
- provider: Scalars['ID'];
- credentials: Scalars['Object'];
-};
-
-
-export type QueryConnectionStateArgs = {
+export type AdminPermissionInfo = {
id: Scalars['ID'];
+ label?: Maybe;
+ description?: Maybe;
+ provider: Scalars['String'];
+ category?: Maybe;
+};
+
+export type AdminRoleInfo = {
+ roleId: Scalars['ID'];
+ roleName?: Maybe;
+ rolePermissions: Array>;
+};
+
+export type AdminUserInfo = {
+ userId: Scalars['ID'];
+ metaParameters: Scalars['Object'];
+ configurationParameters: Scalars['Object'];
+ grantedRoles: Array>;
+};
+
+export type AsyncTaskInfo = {
+ id: Scalars['String'];
+ name?: Maybe;
+ running: Scalars['Boolean'];
+ status?: Maybe;
+ error?: Maybe;
+ result?: Maybe;
+ taskResult?: Maybe;
+};
+
+export enum AuthCredentialEncryption {
+ None = 'none',
+ Plain = 'plain',
+ Hash = 'hash'
+}
+
+export type AuthCredentialInfo = {
+ id: Scalars['ID'];
+ displayName: Scalars['String'];
+ description?: Maybe;
+ admin?: Maybe;
+ user?: Maybe;
+ possibleValues?: Maybe>>;
+ encryption?: Maybe;
+};
+
+export type AuthProviderInfo = {
+ id: Scalars['ID'];
+ label: Scalars['String'];
+ icon?: Maybe;
+ description?: Maybe;
+ defaultProvider?: Maybe;
+ credentialParameters: Array;
+};
+
+export type ConnectionConfig = {
+ name?: Maybe;
+ description?: Maybe;
+ dataSourceId?: Maybe;
+ driverId?: Maybe;
+ host?: Maybe;
+ port?: Maybe;
+ databaseName?: Maybe;
+ url?: Maybe;
+ properties?: Maybe;
+ userName?: Maybe;
+ userPassword?: Maybe;
+};
+
+export type ConnectionInfo = {
+ id: Scalars['ID'];
+ driverId: Scalars['ID'];
+ name: Scalars['String'];
+ description?: Maybe;
+ properties?: Maybe;
+ connected: Scalars['Boolean'];
+ provided: Scalars['Boolean'];
+ connectTime?: Maybe;
+ connectionError?: Maybe;
+ serverVersion?: Maybe;
+ clientVersion?: Maybe;
+ features: Array;
+};
+
+export type DatabaseObjectInfo = {
+ name?: Maybe;
+ description?: Maybe;
+ type?: Maybe;
+ properties?: Maybe>>;
+ ordinalPosition?: Maybe;
+ fullyQualifiedName?: Maybe;
+ overloadedName?: Maybe;
+ uniqueName?: Maybe;
+ state?: Maybe;
+ features?: Maybe>>;
+ editors?: Maybe>>;
};
-export type QueryDataTransferExportDataFromContainerArgs = {
- connectionId: Scalars['ID'];
- containerNodePath: Scalars['ID'];
- parameters: DataTransferParameters;
+export type DatabaseObjectInfoPropertiesArgs = {
+ filter?: Maybe;
+};
+
+export type DatabaseStructContainers = {
+ catalogList: Array;
+ schemaList: Array;
+};
+
+export type DataSourceInfo = {
+ id: Scalars['ID'];
+ driverId: Scalars['ID'];
+ name: Scalars['String'];
+ description?: Maybe;
+ host?: Maybe;
+ server?: Maybe;
+ port?: Maybe;
+ url?: Maybe;
+ properties?: Maybe;
+};
+
+export type DataTransferParameters = {
+ processorId: Scalars['ID'];
+ settings?: Maybe;
+ processorProperties: Scalars['Object'];
+ filter?: Maybe;
+};
+
+export type DataTransferProcessorInfo = {
+ id: Scalars['ID'];
+ name?: Maybe;
+ description?: Maybe;
+ fileExtension?: Maybe;
+ appFileExtension?: Maybe;
+ appName?: Maybe;
+ order: Scalars['Int'];
+ icon?: Maybe;
+ properties?: Maybe>>;
+ isBinary?: Maybe;
+ isHTML?: Maybe;
};
-export type QueryDataTransferExportDataFromResultsArgs = {
- connectionId: Scalars['ID'];
- contextId: Scalars['ID'];
- resultsId: Scalars['ID'];
- parameters: DataTransferParameters;
+export type DriverInfo = {
+ id: Scalars['ID'];
+ name?: Maybe;
+ description?: Maybe;
+ icon?: Maybe;
+ iconBig?: Maybe;
+ providerId?: Maybe;
+ driverClassName?: Maybe;
+ defaultPort?: Maybe;
+ sampleURL?: Maybe;
+ driverInfoURL?: Maybe;
+ driverPropertiesURL?: Maybe;
+ embedded?: Maybe;
+ anonymousAccess?: Maybe;
+ allowsEmptyPassword?: Maybe;
+ licenseRequired?: Maybe;
+ license?: Maybe;
+ custom?: Maybe;
+ promotedScore?: Maybe;
+ connectionProperties?: Maybe;
+ defaultConnectionProperties?: Maybe;
+ driverProperties?: Maybe>>;
+ driverParameters?: Maybe;
};
-
-export type QueryDataTransferRemoveDataFileArgs = {
- dataFileId: Scalars['String'];
+export type DriverPropertyInfo = {
+ id: Scalars['ID'];
+ displayName?: Maybe;
+ description?: Maybe;
+ category?: Maybe;
+ dataType?: Maybe;
+ defaultValue?: Maybe;
+ validValues?: Maybe>>;
};
-
-export type QueryDriverListArgs = {
- id?: Maybe;
-};
-
-
-export type QueryMetadataGetNodeDdlArgs = {
- nodeId: Scalars['ID'];
- options?: Maybe;
-};
-
-
-export type QueryNavGetStructContainersArgs = {
- connectionId: Scalars['ID'];
- catalog?: Maybe;
-};
-
-
-export type QueryNavNodeChildrenArgs = {
- parentPath: Scalars['ID'];
- offset?: Maybe;
- limit?: Maybe;
- onlyFolders?: Maybe;
-};
-
-
-export type QueryNavNodeInfoArgs = {
- nodePath: Scalars['ID'];
-};
-
-
-export type QueryNavRefreshNodeArgs = {
- nodePath: Scalars['ID'];
-};
-
-
-export type QueryReadSessionLogArgs = {
- maxEntries?: Maybe;
- clearEntries?: Maybe;
-};
-
-
-export type QuerySqlCompletionProposalsArgs = {
- connectionId: Scalars['ID'];
- contextId: Scalars['ID'];
- query: Scalars['String'];
- position: Scalars['Int'];
- maxResults?: Maybe;
-};
-
-
-export type QuerySqlDialectInfoArgs = {
- connectionId: Scalars['ID'];
-};
-
-
-export type QuerySqlListContextsArgs = {
- connectionId: Scalars['ID'];
+export type LogEntry = {
+ time?: Maybe;
+ type: Scalars['String'];
+ message?: Maybe;
+ stackTrace?: Maybe;
};
export type Mutation = {
@@ -249,39 +316,230 @@ export type MutationUpdateResultsDataArgs = {
updateValues?: Maybe;
};
-export type AsyncTaskInfo = {
- id: Scalars['String'];
+export type NavigatorNodeInfo = {
+ id: Scalars['ID'];
name?: Maybe;
- running: Scalars['Boolean'];
- status?: Maybe;
- error?: Maybe;
- result?: Maybe;
- taskResult?: Maybe;
+ icon?: Maybe;
+ description?: Maybe;
+ nodeType?: Maybe;
+ hasChildren?: Maybe;
+ object?: Maybe;
+ features?: Maybe>>;
+ folder?: Maybe;
+ inline?: Maybe;
+ navigable?: Maybe;
};
-export type ServerError = {
- message?: Maybe;
- errorCode?: Maybe;
- stackTrace?: Maybe;
- causedBy?: Maybe;
-};
-export type ServerMessage = {
- time?: Maybe;
- message?: Maybe;
-};
-
-export type ServerLanguage = {
- isoCode: Scalars['String'];
+export type ObjectDescriptor = {
+ id?: Maybe;
displayName?: Maybe;
- nativeName?: Maybe;
+ fullName?: Maybe;
+ uniqueName?: Maybe;
+ description?: Maybe;
+ value?: Maybe;
};
-export type WebServiceConfig = {
- id: Scalars['String'];
- name: Scalars['String'];
- description: Scalars['String'];
- bundleVersion: Scalars['String'];
+export type ObjectPropertyFilter = {
+ ids?: Maybe>>;
+ features?: Maybe>>;
+ categories?: Maybe>>;
+ dataTypes?: Maybe>>;
+};
+
+export type ObjectPropertyInfo = {
+ id?: Maybe;
+ displayName?: Maybe;
+ description?: Maybe;
+ category?: Maybe;
+ dataType?: Maybe;
+ value?: Maybe;
+ validValues?: Maybe>>;
+ defaultValue?: Maybe;
+ features: Array;
+};
+
+export type Query = {
+ authLogin: UserAuthInfo;
+ authLogout?: Maybe;
+ authProviders: Array;
+ connectionState: ConnectionInfo;
+ createRole: AdminRoleInfo;
+ createUser: AdminUserInfo;
+ dataSourceList: Array;
+ dataTransferAvailableStreamProcessors: Array;
+ dataTransferExportDataFromContainer: AsyncTaskInfo;
+ dataTransferExportDataFromResults: AsyncTaskInfo;
+ dataTransferRemoveDataFile?: Maybe;
+ deleteRole?: Maybe;
+ deleteUser?: Maybe;
+ driverList: Array;
+ grantUserRole?: Maybe;
+ listPermissions: Array>;
+ listRoles: Array>;
+ listUsers: Array>;
+ metadataGetNodeDDL?: Maybe;
+ navGetStructContainers: DatabaseStructContainers;
+ navNodeChildren: Array;
+ navNodeInfo: NavigatorNodeInfo;
+ navRefreshNode?: Maybe;
+ readSessionLog: Array;
+ revokeUserRole?: Maybe;
+ serverConfig: ServerConfig;
+ sessionPermissions: Array>;
+ sessionState: SessionInfo;
+ sessionUser?: Maybe;
+ setRolePermissions?: Maybe;
+ setUserCredentials?: Maybe;
+ sqlCompletionProposals?: Maybe>>;
+ sqlDialectInfo?: Maybe;
+ sqlListContexts?: Maybe>>;
+};
+
+
+export type QueryAuthLoginArgs = {
+ provider: Scalars['ID'];
+ credentials: Scalars['Object'];
+};
+
+
+export type QueryConnectionStateArgs = {
+ id: Scalars['ID'];
+};
+
+
+export type QueryCreateRoleArgs = {
+ roleId: Scalars['ID'];
+};
+
+
+export type QueryCreateUserArgs = {
+ userId: Scalars['ID'];
+};
+
+
+export type QueryDataTransferExportDataFromContainerArgs = {
+ connectionId: Scalars['ID'];
+ containerNodePath: Scalars['ID'];
+ parameters: DataTransferParameters;
+};
+
+
+export type QueryDataTransferExportDataFromResultsArgs = {
+ connectionId: Scalars['ID'];
+ contextId: Scalars['ID'];
+ resultsId: Scalars['ID'];
+ parameters: DataTransferParameters;
+};
+
+
+export type QueryDataTransferRemoveDataFileArgs = {
+ dataFileId: Scalars['String'];
+};
+
+
+export type QueryDeleteRoleArgs = {
+ roleId: Scalars['ID'];
+};
+
+
+export type QueryDeleteUserArgs = {
+ userId: Scalars['ID'];
+};
+
+
+export type QueryDriverListArgs = {
+ id?: Maybe;
+};
+
+
+export type QueryGrantUserRoleArgs = {
+ userId: Scalars['ID'];
+ roleId: Scalars['ID'];
+};
+
+
+export type QueryListRolesArgs = {
+ roleId?: Maybe;
+};
+
+
+export type QueryListUsersArgs = {
+ userId?: Maybe;
+};
+
+
+export type QueryMetadataGetNodeDdlArgs = {
+ nodeId: Scalars['ID'];
+ options?: Maybe;
+};
+
+
+export type QueryNavGetStructContainersArgs = {
+ connectionId: Scalars['ID'];
+ catalog?: Maybe;
+};
+
+
+export type QueryNavNodeChildrenArgs = {
+ parentPath: Scalars['ID'];
+ offset?: Maybe;
+ limit?: Maybe;
+ onlyFolders?: Maybe;
+};
+
+
+export type QueryNavNodeInfoArgs = {
+ nodePath: Scalars['ID'];
+};
+
+
+export type QueryNavRefreshNodeArgs = {
+ nodePath: Scalars['ID'];
+};
+
+
+export type QueryReadSessionLogArgs = {
+ maxEntries?: Maybe;
+ clearEntries?: Maybe;
+};
+
+
+export type QueryRevokeUserRoleArgs = {
+ userId: Scalars['ID'];
+ roleId: Scalars['ID'];
+};
+
+
+export type QuerySetRolePermissionsArgs = {
+ roleId: Scalars['ID'];
+ permissions: Array>;
+};
+
+
+export type QuerySetUserCredentialsArgs = {
+ userId: Scalars['ID'];
+ providerId: Scalars['ID'];
+ credentials: Scalars['Object'];
+};
+
+
+export type QuerySqlCompletionProposalsArgs = {
+ connectionId: Scalars['ID'];
+ contextId: Scalars['ID'];
+ query: Scalars['String'];
+ position: Scalars['Int'];
+ maxResults?: Maybe;
+};
+
+
+export type QuerySqlDialectInfoArgs = {
+ connectionId: Scalars['ID'];
+};
+
+
+export type QuerySqlListContextsArgs = {
+ connectionId: Scalars['ID'];
};
export type ServerConfig = {
@@ -299,6 +557,24 @@ export type ServerConfig = {
productConfiguration: Scalars['Object'];
};
+export type ServerError = {
+ message?: Maybe;
+ errorCode?: Maybe;
+ stackTrace?: Maybe;
+ causedBy?: Maybe;
+};
+
+export type ServerLanguage = {
+ isoCode: Scalars['String'];
+ displayName?: Maybe;
+ nativeName?: Maybe;
+};
+
+export type ServerMessage = {
+ time?: Maybe;
+ message?: Maybe;
+};
+
export type SessionInfo = {
createTime: Scalars['String'];
lastAccessTime: Scalars['String'];
@@ -308,168 +584,6 @@ export type SessionInfo = {
connections: Array;
};
-export type DriverInfo = {
- id: Scalars['ID'];
- name?: Maybe;
- description?: Maybe;
- icon?: Maybe;
- iconBig?: Maybe;
- providerId?: Maybe;
- driverClassName?: Maybe;
- defaultPort?: Maybe;
- sampleURL?: Maybe;
- driverInfoURL?: Maybe;
- driverPropertiesURL?: Maybe;
- embedded?: Maybe;
- anonymousAccess?: Maybe;
- allowsEmptyPassword?: Maybe;
- licenseRequired?: Maybe;
- license?: Maybe;
- custom?: Maybe;
- promotedScore?: Maybe;
- connectionProperties?: Maybe;
- defaultConnectionProperties?: Maybe;
- driverProperties?: Maybe>>;
- driverParameters?: Maybe;
-};
-
-export type DriverPropertyInfo = {
- id: Scalars['ID'];
- displayName?: Maybe;
- description?: Maybe;
- category?: Maybe;
- dataType?: Maybe;
- defaultValue?: Maybe;
- validValues?: Maybe>>;
-};
-
-export type DataSourceInfo = {
- id: Scalars['ID'];
- driverId: Scalars['ID'];
- name: Scalars['String'];
- description?: Maybe;
- host?: Maybe;
- server?: Maybe;
- port?: Maybe;
- url?: Maybe;
- properties?: Maybe;
-};
-
-export type ConnectionConfig = {
- name?: Maybe;
- description?: Maybe;
- dataSourceId?: Maybe;
- driverId?: Maybe;
- host?: Maybe;
- port?: Maybe;
- databaseName?: Maybe;
- url?: Maybe;
- properties?: Maybe;
- userName?: Maybe;
- userPassword?: Maybe