aboutsummaryrefslogtreecommitdiff
path: root/go/filer/filer_embedded.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/filer/filer_embedded.go')
-rw-r--r--go/filer/filer_embedded.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/go/filer/filer_embedded.go b/go/filer/filer_embedded.go
new file mode 100644
index 000000000..b1ef38be4
--- /dev/null
+++ b/go/filer/filer_embedded.go
@@ -0,0 +1,64 @@
+package filer
+
+import (
+ "path/filepath"
+)
+
+type FilerEmbedded struct {
+ directories *DirectoryManagerInMap
+ files *FileListInLevelDb
+}
+
+func NewFilerEmbedded(dir string) (filer *FilerEmbedded, err error) {
+ dm, de := NewDirectoryManagerInMap(filepath.Join(dir, "dir.log"))
+ if de != nil {
+ return nil, de
+ }
+ fl, fe := NewFileListInLevelDb(dir)
+ if fe != nil {
+ return nil, fe
+ }
+ filer = &FilerEmbedded{
+ directories: dm,
+ files: fl,
+ }
+ return
+}
+
+func (filer *FilerEmbedded) CreateFile(filePath string, fid string) (err error) {
+ dir, file := filepath.Split(filePath)
+ dirId, e := filer.directories.MakeDirectory(dir)
+ if e != nil {
+ return e
+ }
+ return filer.files.CreateFile(dirId, file, fid)
+}
+func (filer *FilerEmbedded) FindFile(filePath string) (fid string, err error) {
+ dir, file := filepath.Split(filePath)
+ dirId, e := filer.directories.FindDirectory(dir)
+ if e != nil {
+ return "", e
+ }
+ return filer.files.FindFile(dirId, file)
+}
+func (filer *FilerEmbedded) ListDirectories(dirPath string) (dirs []DirectoryEntry, err error) {
+ return filer.directories.ListDirectories(dirPath)
+}
+func (filer *FilerEmbedded) ListFiles(dirPath string, lastFileName string, limit int) (files []FileEntry, err error) {
+ dirId, e := filer.directories.FindDirectory(dirPath)
+ if e != nil {
+ return nil, e
+ }
+ return filer.files.ListFiles(dirId, lastFileName, limit), nil
+}
+func (filer *FilerEmbedded) DeleteDirectory(dirPath string) (err error) {
+ return filer.directories.DeleteDirectory(dirPath)
+}
+func (filer *FilerEmbedded) DeleteFile(filePath string) (fid string, err error) {
+ dir, file := filepath.Split(filePath)
+ dirId, e := filer.directories.FindDirectory(dir)
+ if e != nil {
+ return "", e
+ }
+ return filer.files.DeleteFile(dirId, file)
+}