From b339923361e8ddd979f7fde09576cea8ce671886 Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Mon, 25 Jul 2022 14:18:25 +0800 Subject: [PATCH] Add add folder. --- object/file.go | 19 +++++++++++++------ storage/aliyun.go | 17 ++++++++++++++++- web/src/FileTree.js | 29 ++++++++++++++++++++++++++--- web/src/backend/FileBackend.js | 12 ++++++------ 4 files changed, 61 insertions(+), 16 deletions(-) diff --git a/object/file.go b/object/file.go index df6ae86..5b90d67 100644 --- a/object/file.go +++ b/object/file.go @@ -1,18 +1,24 @@ package object -import "github.com/casbin/casbase/storage" +import ( + "fmt" + + "github.com/casbin/casbase/storage" +) func UpdateFile(storeId string, key string, file *File) bool { return true } func AddFile(storeId string, file *File) bool { - affected, err := adapter.engine.Insert(file) - if err != nil { - panic(err) + store := GetStore(storeId) + if store == nil { + return false } - return affected != 0 + objectKey := fmt.Sprintf("%s/_hidden.ini", file.Key) + storage.PutObject(store.Bucket, objectKey) + return true } func DeleteFile(storeId string, file *File) bool { @@ -21,6 +27,7 @@ func DeleteFile(storeId string, file *File) bool { return false } - storage.DeleteObject(store.Bucket, file.Key) + objectKey := fmt.Sprintf("%s", file.Key) + storage.DeleteObject(store.Bucket, objectKey) return true } diff --git a/storage/aliyun.go b/storage/aliyun.go index b541dd3..a7142c8 100644 --- a/storage/aliyun.go +++ b/storage/aliyun.go @@ -1,6 +1,10 @@ package storage -import "github.com/aliyun/aliyun-oss-go-sdk/oss" +import ( + "bytes" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" +) func getBucket(bucketName string) *oss.Bucket { client, err := oss.New(endpoint, clientId, clientSecret) @@ -44,6 +48,17 @@ func ListObjects(bucketName string) []oss.ObjectProperties { return res } +func PutObject(bucketName string, key string) { + bucket := getBucket(bucketName) + + fileBuffer := bytes.NewBuffer(nil) + + err := bucket.PutObject(key, fileBuffer) + if err != nil { + panic(err) + } +} + func DeleteObject(bucketName string, key string) { bucket := getBucket(bucketName) diff --git a/web/src/FileTree.js b/web/src/FileTree.js index 3b28b16..43e1cf3 100644 --- a/web/src/FileTree.js +++ b/web/src/FileTree.js @@ -5,10 +5,10 @@ import * as Setting from "./Setting"; import * as FileBackend from "./backend/FileBackend"; import DocViewer, { DocViewerRenderers } from "react-doc-viewer"; import FileViewer from 'react-file-viewer'; +import i18next from "i18next"; import {Controlled as CodeMirror} from "react-codemirror2"; import "codemirror/lib/codemirror.css"; -import i18next from "i18next"; // require("codemirror/theme/material-darker.css"); // require("codemirror/mode/javascript/javascript"); @@ -77,8 +77,31 @@ class FileTree extends React.Component { } } + newFile() { + return { + key: "docs/newfolder", + title: "newfolder", + isLeaf: false, + }; + } + + addFile() { + const storeId = `${this.props.store.owner}/${this.props.store.name}`; + const file = this.newFile(); + FileBackend.addFile(storeId, file) + .then((res) => { + Setting.showMessage("success", `File added successfully`); + window.location.reload(); + } + ) + .catch(error => { + Setting.showMessage("error", `File failed to add: ${error}`); + }); + } + deleteFile(file) { - FileBackend.deleteFile(`${this.props.store.owner}/${this.props.store.name}`, file) + const storeId = `${this.props.store.owner}/${this.props.store.name}`; + FileBackend.deleteFile(storeId, file) .then((res) => { Setting.showMessage("success", `File deleted successfully`); window.location.reload(); @@ -253,7 +276,7 @@ class FileTree extends React.Component {