47 lines
1.1 KiB
Markdown
47 lines
1.1 KiB
Markdown
# ocean
|
|
|
|
In-memory key value store that saves your data to plain old JSON files.
|
|
|
|
If you like, you can operate on your entire data with classic UNIX tools.
|
|
|
|
Suitable for small to medium data volume.
|
|
|
|
## Installation
|
|
|
|
```shell
|
|
go get git.akyoto.dev/go/ocean
|
|
```
|
|
|
|
## Example
|
|
|
|
```go
|
|
// User data
|
|
type User struct {
|
|
Name string
|
|
}
|
|
|
|
// Data saved to ~/.ocean/User/
|
|
users := ocean.New[User]("User")
|
|
|
|
// Store key and value in memory and write ~/.ocean/User/1.json
|
|
users.Set("1", &User{Name: "User 1"})
|
|
|
|
// Read value from memory
|
|
user, err := users.Get("1")
|
|
```
|
|
|
|
In a real project you would usually prefix your collections with a project or company name:
|
|
|
|
```go
|
|
// Data saved to ~/.ocean/google/User/
|
|
users := ocean.New[User]("google", "User")
|
|
```
|
|
|
|
## Recommended structure
|
|
|
|
You can add as many directory hierarchies as you need but I recommend using a simple `/namespace/collection/` structure.
|
|
|
|
Collections should use the singular instead of the plural form (`User` instead of `Users`) because it's better for automation.
|
|
|
|
Ocean does not enforce these standards but they are heavily recommended.
|