https://github.com/abhishekkr/ficklepickle
simple struct pickling library with compression & encryption | CRUD via file, db and tcp server
https://github.com/abhishekkr/ficklepickle
compression encryption go golang persistence pickle tcp-client tcp-server
Last synced: 3 months ago
JSON representation
simple struct pickling library with compression & encryption | CRUD via file, db and tcp server
- Host: GitHub
- URL: https://github.com/abhishekkr/ficklepickle
- Owner: abhishekkr
- License: mit
- Created: 2019-12-31T07:15:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-08-31T04:20:06.000Z (almost 4 years ago)
- Last Synced: 2025-10-27T23:34:19.546Z (7 months ago)
- Topics: compression, encryption, go, golang, persistence, pickle, tcp-client, tcp-server
- Language: Go
- Homepage:
- Size: 120 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## ficklepickle
> it's a simple struct pickling library with compression and encryption
>
> read/write/delete available over file, db and tcp server
* [sample usage](_tests_behavioral_/pickler.go); [sample rpc server](_tests_behavioral_/fickle_server.go)
 | [](https://goreportcard.com/report/github.com/abhishekkr/ficklepickle)
---
### Usage
* to fetch this go package `go get -u github.com/abhishekkr/ficklepickle`
* import required to use `import "github.com/abhishekkr/ficklepickle"`
* say we have a structure
```
type Metric struct {
Name string
Percent int
}
xload = Metric{Name: "somework", Percent: 25}
yload := Metric{}
```
#### In memory
* Pickle
```
pickle, err := ficklepickle.Pickle(xload)
if err != nil {
panic("Pickle error for Metric")
}
// pickled data is 'pickle' as byte array
```
* UnPickle
```
if err := ficklepickle.Unpickle(pickle, &yload); err != nil {
panic("Unpickle error for Metric")
}
fmt.Println(yload.Name) // shall output 'somework'
```
#### Persist using a mode (local file, database; remote TCP service)
```
// for normal local file
mode = ficklepickle.RwFile
// for github.com/abhishekkr/gol/golkeyval supported database
mode = ficklepickle.RwDb // database type default: leveldb, configurable
// for remote TCP server hosted pickles, can be used to share across services
// sample TCP service can be created similar to example code at: _tests_behavioral_/fickle_server.go
mode = ficklepickle.RwRpc // remote database type default: leveldb, configurable in Rpc Server
```
* Pickle
```
err := ficklepickle.Write(mode, "metric_xload", xload)
if err != nil {
panic("Pickle error for Metric")
}
```
* UnPickle
```
if err := ficklepickle.Read(mode, "metric_xload", &yload); err != nil {
panic("Unpickle error for Metric")
}
fmt.Println(yload.Name) // shall output 'somework'
```
* Delete Pickle
```
if err := ficklepickle.Delete(mode, "metric_xload"); err != nil {
panic("Delete pickle error for Metric")
}
```
---