102 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"flag"
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"path"
 | |
| 
 | |
| 	"git.defalsify.org/vise.git/db"
 | |
| 	"git.defalsify.org/vise.git/logging"
 | |
| 	"git.grassecon.net/grassrootseconomics/sarafu-vise/config"
 | |
| 	"git.grassecon.net/grassrootseconomics/sarafu-vise/debug"
 | |
| 	"git.grassecon.net/grassrootseconomics/visedriver/storage"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	logg      = logging.NewVanilla()
 | |
| 	scriptDir = path.Join("services", "registration")
 | |
| )
 | |
| 
 | |
| func formatItem(k []byte, v []byte, sessionId string) (string, error) {
 | |
| 	o, err := debug.ToKeyInfo(k, sessionId)
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	s := fmt.Sprintf("%v\t%v\n", o.Label, string(v))
 | |
| 
 | |
| 	return s, nil
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	config.LoadConfig()
 | |
| 
 | |
| 	override := config.NewOverride()
 | |
| 	var sessionId string
 | |
| 	var database string
 | |
| 	var engineDebug bool
 | |
| 	var err error
 | |
| 	var first bool
 | |
| 
 | |
| 	flag.StringVar(&sessionId, "session-id", "075xx2123", "session id")
 | |
| 	flag.StringVar(&override.DbConn, "c", "?", "default connection string (replaces all unspecified strings)")
 | |
| 	flag.StringVar(&override.ResourceConn, "resource", "?", "resource data directory")
 | |
| 	flag.StringVar(&override.UserConn, "userdata", "?", "userdata store connection string")
 | |
| 	flag.StringVar(&override.StateConn, "state", "?", "state store connection string")
 | |
| 	flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
 | |
| 	flag.Parse()
 | |
| 
 | |
| 	config.Apply(override)
 | |
| 	conns, err := config.GetConns()
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(os.Stderr, "conn specification error: %v\n", err)
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| 
 | |
| 	logg.Infof("start command", "conn", conns)
 | |
| 
 | |
| 	ctx := context.Background()
 | |
| 	ctx = context.WithValue(ctx, "SessionId", sessionId)
 | |
| 	ctx = context.WithValue(ctx, "Database", database)
 | |
| 
 | |
| 	menuStorageService := storage.NewMenuStorageService(conns)
 | |
| 
 | |
| 	store, err := menuStorageService.GetUserdataDb(ctx)
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(os.Stderr, "get userdata db: %v\n", err.Error())
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| 	store.SetSession(sessionId)
 | |
| 	store.SetPrefix(db.DATATYPE_USERDATA)
 | |
| 
 | |
| 	d, err := store.Dump(ctx, []byte(""))
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(os.Stderr, "store dump fail: %v\n", err.Error())
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| 
 | |
| 	for true {
 | |
| 		k, v := d.Next(ctx)
 | |
| 		if k == nil {
 | |
| 			break
 | |
| 		}
 | |
| 		if !first {
 | |
| 			fmt.Printf("Session ID: %s\n---\n", sessionId)
 | |
| 			first = true
 | |
| 		}
 | |
| 		r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId)
 | |
| 		if err != nil {
 | |
| 			fmt.Fprintf(os.Stderr, "format db item error: %v\n", err)
 | |
| 			os.Exit(1)
 | |
| 		}
 | |
| 		fmt.Printf(r)
 | |
| 	}
 | |
| 
 | |
| 	err = store.Close(ctx)
 | |
| 	if err != nil {
 | |
| 		fmt.Fprintf(os.Stderr, err.Error())
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| }
 |