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 (
"context"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/echovault"
"log"
"os"
"os/signal"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -20,19 +20,22 @@ import (
"fmt"
"github.com/echovault/echovault/internal"
"github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/pkg/types"
"github.com/hashicorp/raft"
"io"
"log"
"net"
"strings"
"time"
)
type FSMOpts struct {
Config config.Config
EchoVault types.EchoVault
GetState func() map[string]internal.KeyData
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
StartSnapshot func()
FinishSnapshot func()
@@ -154,14 +157,14 @@ func (fsm *FSM) Restore(snapshot io.ReadCloser) error {
// Set state
ctx := context.Background()
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)
}
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)
}
fsm.options.EchoVault.SetExpiry(ctx, k, v.ExpireAt, false)
fsm.options.EchoVault.KeyUnlock(ctx, k)
fsm.options.SetExpiry(ctx, k, v.ExpireAt, false)
fsm.options.KeyUnlock(ctx, k)
}
// Set latest snapshot milliseconds
fsm.options.SetLatestSnapshotTime(data.LatestSnapshotMilliseconds)

View File

@@ -27,7 +27,7 @@ import (
"path/filepath"
"time"
"github.com/echovault/echovault/pkg/types"
"github.com/echovault/echovault/types"
"github.com/hashicorp/raft"
raftboltdb "github.com/hashicorp/raft-boltdb"
)
@@ -35,6 +35,10 @@ import (
type Opts struct {
Config config.Config
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
GetCommand func(command string) (internal.Command, error)
DeleteKey func(ctx context.Context, key string) error
@@ -114,9 +118,12 @@ func (r *Raft) RaftInit(ctx context.Context) {
raftConfig,
NewFSM(FSMOpts{
Config: r.options.Config,
EchoVault: r.options.EchoVault,
GetState: r.options.GetState,
GetCommand: r.options.GetCommand,
CreateKeyAndLock: r.options.CreateKeyAndLock,
SetValue: r.options.SetValue,
SetExpiry: r.options.SetExpiry,
KeyUnlock: r.options.KeyUnlock,
DeleteKey: r.options.DeleteKey,
StartSnapshot: r.options.StartSnapshot,
FinishSnapshot: r.options.FinishSnapshot,

View File

@@ -20,7 +20,7 @@ import (
"cmp"
"errors"
"fmt"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/constants"
"io"
"log"
"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 (
"crypto/sha256"
"fmt"
"github.com/echovault/echovault/constants"
"github.com/echovault/echovault/echovault"
"github.com/echovault/echovault/internal/config"
"github.com/echovault/echovault/internal/modules/acl"
"github.com/echovault/echovault/pkg/constants"
"github.com/echovault/echovault/pkg/echovault"
"github.com/tidwall/resp"
"net"
"reflect"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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