Moved all packages from /pkg directory to the root directory. Deleted /pkg directory. Pass keyspace functions to raft package instead of an EchoVault instance. This removes dependency on the echovault pakage from the raft package.

This commit is contained in:
Kelvin Clement Mwinuka
2024-04-28 00:37:45 +08:00
parent b6825c4eb4
commit 97f4617d86
56 changed files with 73 additions and 70 deletions

View File

@@ -16,9 +16,9 @@ package main
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"log" "log"
"os" "os"
"os/signal" "os/signal"

View File

@@ -17,7 +17,7 @@ package echovault
import ( import (
"fmt" "fmt"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/types" "github.com/echovault/echovault/types"
"strings" "strings"
) )

View File

@@ -20,6 +20,7 @@ import (
"crypto/x509" "crypto/x509"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/aof" "github.com/echovault/echovault/internal/aof"
"github.com/echovault/echovault/internal/clock" "github.com/echovault/echovault/internal/clock"
@@ -38,7 +39,6 @@ import (
str "github.com/echovault/echovault/internal/modules/string" str "github.com/echovault/echovault/internal/modules/string"
"github.com/echovault/echovault/internal/raft" "github.com/echovault/echovault/internal/raft"
"github.com/echovault/echovault/internal/snapshot" "github.com/echovault/echovault/internal/snapshot"
"github.com/echovault/echovault/pkg/constants"
"io" "io"
"log" "log"
"net" "net"
@@ -185,6 +185,10 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) {
Config: echovault.config, Config: echovault.config,
EchoVault: echovault, EchoVault: echovault,
GetCommand: echovault.getCommand, GetCommand: echovault.getCommand,
CreateKeyAndLock: echovault.CreateKeyAndLock,
SetValue: echovault.SetValue,
SetExpiry: echovault.SetExpiry,
KeyUnlock: echovault.KeyUnlock,
DeleteKey: echovault.DeleteKey, DeleteKey: echovault.DeleteKey,
StartSnapshot: echovault.startSnapshot, StartSnapshot: echovault.startSnapshot,
FinishSnapshot: echovault.finishSnapshot, FinishSnapshot: echovault.finishSnapshot,

View File

@@ -18,8 +18,8 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"log" "log"
"math/rand" "math/rand"
"runtime" "runtime"

View File

@@ -18,8 +18,8 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"net" "net"
"strings" "strings"
) )

View File

@@ -19,8 +19,8 @@ import (
"errors" "errors"
"flag" "flag"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"log" "log"
"os" "os"
"path" "path"

View File

@@ -1,7 +1,7 @@
package config package config
import ( import (
"github.com/echovault/echovault/pkg/constants" "github.com/echovault/echovault/constants"
"time" "time"
) )

View File

@@ -20,9 +20,9 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/gobwas/glob" "github.com/gobwas/glob"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"log" "log"

View File

@@ -18,8 +18,8 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"log" "log"
"os" "os"

View File

@@ -17,8 +17,8 @@ package admin
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"github.com/gobwas/glob" "github.com/gobwas/glob"
"slices" "slices"
"strings" "strings"

View File

@@ -17,8 +17,8 @@ package connection
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func handlePing(params internal.HandlerFuncParams) ([]byte, error) { func handlePing(params internal.HandlerFuncParams) ([]byte, error) {

View File

@@ -17,8 +17,8 @@ package generic
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"log" "log"
"strconv" "strconv"
"strings" "strings"

View File

@@ -16,8 +16,8 @@ package generic
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func setKeyFunc(cmd []string) (internal.AccessKeys, error) { func setKeyFunc(cmd []string) (internal.AccessKeys, error) {

View File

@@ -17,8 +17,8 @@ package hash
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"math/rand" "math/rand"
"slices" "slices"
"strconv" "strconv"

View File

@@ -16,8 +16,8 @@ package hash
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func hsetKeyFunc(cmd []string) (internal.AccessKeys, error) { func hsetKeyFunc(cmd []string) (internal.AccessKeys, error) {

View File

@@ -17,8 +17,8 @@ package list
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"math" "math"
"slices" "slices"
"strings" "strings"

View File

@@ -16,8 +16,8 @@ package list
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func lpushKeyFunc(cmd []string) (internal.AccessKeys, error) { func lpushKeyFunc(cmd []string) (internal.AccessKeys, error) {

View File

@@ -17,8 +17,8 @@ package pubsub
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"strings" "strings"
) )

View File

@@ -17,8 +17,8 @@ package set
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"slices" "slices"
"strings" "strings"
) )

View File

@@ -16,8 +16,8 @@ package set
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"slices" "slices"
"strings" "strings"
) )

View File

@@ -18,8 +18,8 @@ import (
"cmp" "cmp"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"math" "math"
"slices" "slices"
"strconv" "strconv"

View File

@@ -16,8 +16,8 @@ package sorted_set
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
"slices" "slices"
"strings" "strings"
) )

View File

@@ -17,8 +17,8 @@ package str
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func handleSetRange(params internal.HandlerFuncParams) ([]byte, error) { func handleSetRange(params internal.HandlerFuncParams) ([]byte, error) {

View File

@@ -16,8 +16,8 @@ package str
import ( import (
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/pkg/constants"
) )
func setRangeKeyFunc(cmd []string) (internal.AccessKeys, error) { func setRangeKeyFunc(cmd []string) (internal.AccessKeys, error) {

View File

@@ -20,19 +20,22 @@ import (
"fmt" "fmt"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/types"
"github.com/hashicorp/raft" "github.com/hashicorp/raft"
"io" "io"
"log" "log"
"net" "net"
"strings" "strings"
"time"
) )
type FSMOpts struct { type FSMOpts struct {
Config config.Config Config config.Config
EchoVault types.EchoVault
GetState func() map[string]internal.KeyData GetState func() map[string]internal.KeyData
GetCommand func(command string) (internal.Command, error) GetCommand func(command string) (internal.Command, error)
CreateKeyAndLock func(ctx context.Context, key string) (bool, error)
SetValue func(ctx context.Context, key string, value interface{}) error
SetExpiry func(ctx context.Context, key string, expire time.Time, touch bool)
KeyUnlock func(ctx context.Context, key string)
DeleteKey func(ctx context.Context, key string) error DeleteKey func(ctx context.Context, key string) error
StartSnapshot func() StartSnapshot func()
FinishSnapshot func() FinishSnapshot func()
@@ -154,14 +157,14 @@ func (fsm *FSM) Restore(snapshot io.ReadCloser) error {
// Set state // Set state
ctx := context.Background() ctx := context.Background()
for k, v := range internal.FilterExpiredKeys(data.State) { for k, v := range internal.FilterExpiredKeys(data.State) {
if _, err = fsm.options.EchoVault.CreateKeyAndLock(ctx, k); err != nil { if _, err = fsm.options.CreateKeyAndLock(ctx, k); err != nil {
log.Fatal(err) log.Fatal(err)
} }
if err = fsm.options.EchoVault.SetValue(ctx, k, v.Value); err != nil { if err = fsm.options.SetValue(ctx, k, v.Value); err != nil {
log.Fatal(err) log.Fatal(err)
} }
fsm.options.EchoVault.SetExpiry(ctx, k, v.ExpireAt, false) fsm.options.SetExpiry(ctx, k, v.ExpireAt, false)
fsm.options.EchoVault.KeyUnlock(ctx, k) fsm.options.KeyUnlock(ctx, k)
} }
// Set latest snapshot milliseconds // Set latest snapshot milliseconds
fsm.options.SetLatestSnapshotTime(data.LatestSnapshotMilliseconds) fsm.options.SetLatestSnapshotTime(data.LatestSnapshotMilliseconds)

View File

@@ -27,7 +27,7 @@ import (
"path/filepath" "path/filepath"
"time" "time"
"github.com/echovault/echovault/pkg/types" "github.com/echovault/echovault/types"
"github.com/hashicorp/raft" "github.com/hashicorp/raft"
raftboltdb "github.com/hashicorp/raft-boltdb" raftboltdb "github.com/hashicorp/raft-boltdb"
) )
@@ -35,6 +35,10 @@ import (
type Opts struct { type Opts struct {
Config config.Config Config config.Config
EchoVault types.EchoVault EchoVault types.EchoVault
CreateKeyAndLock func(ctx context.Context, key string) (bool, error)
SetValue func(ctx context.Context, key string, value interface{}) error
SetExpiry func(ctx context.Context, key string, expire time.Time, touch bool)
KeyUnlock func(ctx context.Context, key string)
GetState func() map[string]internal.KeyData GetState func() map[string]internal.KeyData
GetCommand func(command string) (internal.Command, error) GetCommand func(command string) (internal.Command, error)
DeleteKey func(ctx context.Context, key string) error DeleteKey func(ctx context.Context, key string) error
@@ -114,9 +118,12 @@ func (r *Raft) RaftInit(ctx context.Context) {
raftConfig, raftConfig,
NewFSM(FSMOpts{ NewFSM(FSMOpts{
Config: r.options.Config, Config: r.options.Config,
EchoVault: r.options.EchoVault,
GetState: r.options.GetState, GetState: r.options.GetState,
GetCommand: r.options.GetCommand, GetCommand: r.options.GetCommand,
CreateKeyAndLock: r.options.CreateKeyAndLock,
SetValue: r.options.SetValue,
SetExpiry: r.options.SetExpiry,
KeyUnlock: r.options.KeyUnlock,
DeleteKey: r.options.DeleteKey, DeleteKey: r.options.DeleteKey,
StartSnapshot: r.options.StartSnapshot, StartSnapshot: r.options.StartSnapshot,
FinishSnapshot: r.options.FinishSnapshot, FinishSnapshot: r.options.FinishSnapshot,

View File

@@ -20,7 +20,7 @@ import (
"cmp" "cmp"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/pkg/constants" "github.com/echovault/echovault/constants"
"io" "io"
"log" "log"
"math/big" "math/big"

View File

@@ -1,11 +0,0 @@
package config
import (
"github.com/echovault/echovault/internal/config"
)
// DefaultConfig returns the default configuration.
// This should be used when using EchoVault as an embedded library.
func DefaultConfig() config.Config {
return config.DefaultConfig()
}

View File

@@ -17,10 +17,10 @@ package acl
import ( import (
"crypto/sha256" "crypto/sha256"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/acl" "github.com/echovault/echovault/internal/modules/acl"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -18,10 +18,10 @@ import (
"bytes" "bytes"
"context" "context"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -18,10 +18,10 @@ import (
"bytes" "bytes"
"context" "context"
"errors" "errors"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -16,10 +16,10 @@ package generic
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/clock" "github.com/echovault/echovault/internal/clock"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"reflect" "reflect"
"slices" "slices"
"strings" "strings"

View File

@@ -19,11 +19,11 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/clock" "github.com/echovault/echovault/internal/clock"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -16,8 +16,8 @@ package hash
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"reflect" "reflect"
"slices" "slices"
"testing" "testing"

View File

@@ -19,10 +19,10 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -16,8 +16,8 @@ package list
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"reflect" "reflect"
"testing" "testing"
) )

View File

@@ -19,10 +19,10 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -18,11 +18,11 @@ import (
"bytes" "bytes"
"context" "context"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/pubsub" "github.com/echovault/echovault/internal/modules/pubsub"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -16,9 +16,9 @@ package set
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/set" "github.com/echovault/echovault/internal/modules/set"
"github.com/echovault/echovault/pkg/echovault"
"reflect" "reflect"
"slices" "slices"
"testing" "testing"

View File

@@ -19,11 +19,11 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/set" "github.com/echovault/echovault/internal/modules/set"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"

View File

@@ -16,10 +16,10 @@ package sorted_set
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
ss "github.com/echovault/echovault/internal/modules/sorted_set" ss "github.com/echovault/echovault/internal/modules/sorted_set"
"github.com/echovault/echovault/pkg/echovault"
"math" "math"
"reflect" "reflect"
"strconv" "strconv"

View File

@@ -19,11 +19,11 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/sorted_set" "github.com/echovault/echovault/internal/modules/sorted_set"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"math" "math"
"net" "net"

View File

@@ -16,8 +16,8 @@ package str
import ( import (
"context" "context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"testing" "testing"
) )

View File

@@ -19,10 +19,10 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp" "github.com/tidwall/resp"
"net" "net"
"reflect" "reflect"