Skip to content
This repository was archived by the owner on Jul 10, 2022. It is now read-only.

Commit 1eae0ee

Browse files
author
Maran
committed
Add LevelDB support to store upload state between program runs
1 parent a531a6e commit 1eae0ee

3 files changed

Lines changed: 43 additions & 0 deletions

File tree

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ go:
66
install:
77
- go get github.com/stretchr/testify
88
- go get github.com/tus/tusd
9+
- go get github.com/syndtr/goleveldb/leveldb
910
script: go test -v ./...
1011
notifications:
1112
email:

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Store is used to map an upload's fingerprint with the corresponding upload URL.
5050
| Name | Backend | Dependencies |
5151
|:----:|:-------:|:------------:|
5252
| MemoryStore | In-Memory | None |
53+
| LeveldbStore | LevelDB | [goleveldb](https://github.com/syndtr/goleveldb) |
5354

5455
## Future Work
5556

leveldbstore/store.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package leveldbstore
2+
3+
import (
4+
"github.com/eventials/go-tus"
5+
"github.com/syndtr/goleveldb/leveldb"
6+
)
7+
8+
type LeveldbStore struct {
9+
db *leveldb.DB
10+
}
11+
12+
func NewLeveldbStore(path string) (tus.Store, error) {
13+
db, err := leveldb.OpenFile(path, nil)
14+
if err != nil {
15+
return nil, err
16+
}
17+
18+
store := &LeveldbStore{db: db}
19+
return store, err
20+
}
21+
22+
func (s *LeveldbStore) Get(fingerprint string) (string, bool) {
23+
url, err := s.db.Get([]byte(fingerprint), nil)
24+
ok := true
25+
if err != nil {
26+
ok = false
27+
}
28+
return string(url), ok
29+
}
30+
31+
func (s *LeveldbStore) Set(fingerprint, url string) {
32+
s.db.Put([]byte(fingerprint), []byte(url), nil)
33+
}
34+
35+
func (s *LeveldbStore) Delete(fingerprint string) {
36+
s.db.Delete([]byte(fingerprint), nil)
37+
}
38+
39+
func (s *LeveldbStore) Close() {
40+
s.Close()
41+
}

0 commit comments

Comments
 (0)