CB-4125 add objectId to gql navigator model (#2085)

This commit is contained in:
Alexander Skoblikov
2023-10-25 18:19:03 +03:00
committed by GitHub
parent 8e4c0c11a4
commit a520aa1f20
7 changed files with 53 additions and 16 deletions
@@ -76,6 +76,10 @@ type NavigatorNodeInfo {
# Associated object. Maybe null for non-database objects
object: DatabaseObjectInfo
# Associated object. Return value depends on the node type - connectionId for connection node, resource path for resource node, etc.
# null - if node currently not support this property
objectId: String
# Supported features: item, container, leaf
# canDelete, canRename
features: [ String! ]
@@ -32,6 +32,7 @@ import org.jkiss.dbeaver.model.edit.DBEObjectRenamer;
import org.jkiss.dbeaver.model.meta.Association;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.navigator.*;
import org.jkiss.dbeaver.model.navigator.fs.DBNPath;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.rm.RMProjectPermission;
import org.jkiss.dbeaver.model.struct.DBSEntity;
@@ -278,6 +279,14 @@ public class WebNavigatorNodeInfo {
return null;
}
@Property
public String getObjectId() {
if (node instanceof DBNPath dbnPath) {
return dbnPath.getPath().toUri().toString();
}
return null;
}
@Property
public DBSObjectFilter getFilter() throws DBWebException {
if (!(node instanceof DBNDatabaseFolder)) {
@@ -29,7 +29,8 @@ import java.net.URI;
*/
public interface DBWServiceFS extends DBWService {
@NotNull
String[] getAvailableFileSystems(@NotNull WebSession webSession, @NotNull String projectId) throws DBWebException;
String[] getAvailableFileSystems(@NotNull WebSession webSession, @NotNull String projectId)
throws DBWebException;
@NotNull
FSFile getFile(
@@ -22,6 +22,8 @@ import io.cloudbeaver.service.WebServiceBindingBase;
import io.cloudbeaver.service.fs.impl.WebServiceFS;
import org.jkiss.utils.CommonUtils;
import java.net.URI;
/**
* Web service implementation
*/
@@ -41,47 +43,47 @@ public class WebServiceBindingFS extends WebServiceBindingBase<DBWServiceFS> {
.dataFetcher("fsFile",
env -> getService(env).getFile(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fileURI"))
URI.create(env.getArgument("fileURI")))
)
.dataFetcher("fsListFiles",
env -> getService(env).getFiles(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("folderURI"))
URI.create(env.getArgument("folderURI")))
)
.dataFetcher("fsReadFileContentAsString",
env -> getService(env).readFileContent(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fileURI"))
URI.create(env.getArgument("fileURI")))
)
;
model.getMutationType()
.dataFetcher("fsCreateFile",
env -> getService(env).createFile(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fileURI"))
URI.create(env.getArgument("fileURI")))
)
.dataFetcher("fsCreateFolder",
env -> getService(env).createFolder(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("folderURI"))
URI.create(env.getArgument("folderURI")))
)
.dataFetcher("fsDeleteFile",
env -> getService(env).deleteFile(getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fileURI"))
URI.create(env.getArgument("fileURI")))
)
.dataFetcher("fsMoveFile",
env -> getService(env).moveFile(
getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fromURI"),
env.getArgument("toURI"))
URI.create(env.getArgument("fromURI")),
URI.create(env.getArgument("toURI")))
)
.dataFetcher("fsWriteFileStringContent",
env -> getService(env).writeFileContent(
getWebSession(env),
env.getArgument("projectId"),
env.getArgument("fileURI"),
URI.create(env.getArgument("fileURI")),
env.getArgument("data"),
CommonUtils.toBoolean(env.getArgument("forceOverwrite"))
)
@@ -41,13 +41,11 @@ public class FSFile {
}
@Property
public long getLength() throws IOException {
return Files.size(path);
}
@Property
public boolean isFolder() {
return Files.isDirectory(path);
}
@@ -0,0 +1,23 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.service.fs.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
public record FSFileSystem(@NotNull String id, @Nullable String requiredAuth) {
}
@@ -3,10 +3,10 @@
<plugin>
<extension point="org.jkiss.dbeaver.fileSystem">
<fileSystemProvider id="rm-nio" label="RM NIO" class="io.cloudbeaver.service.rm.fs.RMVirtualFileSystemProvider">
<!-- <extension point="org.jkiss.dbeaver.fileSystem">-->
<!-- <fileSystemProvider id="rm-nio" label="RM NIO" class="io.cloudbeaver.service.rm.fs.RMVirtualFileSystemProvider">-->
</fileSystemProvider>
</extension>
<!-- </fileSystemProvider>-->
<!-- </extension>-->
</plugin>