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.