Add transactional vise db ability #11
							
								
								
									
										24
									
								
								debug/db.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								debug/db.go
									
									
									
									
									
								
							| @ -32,18 +32,17 @@ func (k KeyInfo) String() string { | |||||||
| 
 | 
 | ||||||
| func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { | func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { | ||||||
| 	o := KeyInfo{} | 	o := KeyInfo{} | ||||||
| 	b := []byte(sessionId) | 	//b := []byte(sessionId)
 | ||||||
| 
 | 
 | ||||||
| 	if len(k) <= len(b) { | //	if len(k) <= len(b) {
 | ||||||
| 		return o, fmt.Errorf("storage key missing") | //		return o, fmt.Errorf("storage key missing")
 | ||||||
| 	} | //	}
 | ||||||
| 
 | 
 | ||||||
| 	o.SessionId = sessionId | 	o.SessionId = sessionId | ||||||
| 
 |  | ||||||
| 	o.Typ = uint8(k[0]) | 	o.Typ = uint8(k[0]) | ||||||
| 	k = k[1:] | 	k = k[1:] | ||||||
| 	o.SessionId = string(k[:len(b)]) | 	//o.SessionId = string(k[:len(b)])
 | ||||||
| 	k = k[len(b):] | 	//k = k[len(b):]
 | ||||||
| 
 | 
 | ||||||
| 	if o.Typ == visedb.DATATYPE_USERDATA { | 	if o.Typ == visedb.DATATYPE_USERDATA { | ||||||
| 		if len(k) == 0 { | 		if len(k) == 0 { | ||||||
| @ -53,13 +52,14 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { | |||||||
| 		o.SubTyp = storedb.DataTyp(v) | 		o.SubTyp = storedb.DataTyp(v) | ||||||
| 		o.Label = subTypToString(o.SubTyp) | 		o.Label = subTypToString(o.SubTyp) | ||||||
| 		k = k[2:] | 		k = k[2:] | ||||||
|  | 		if len(k) != 0 { | ||||||
|  | 			return o, fmt.Errorf("excess key information: %x", k) | ||||||
|  | 		} | ||||||
| 	} else { | 	} else { | ||||||
| 		o.Label = typToString(o.Typ) | 		o.Label = typToString(o.Typ) | ||||||
|  | 		k = k[2:] | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if len(k) != 0 { |  | ||||||
| 		return o, fmt.Errorf("excess key information") |  | ||||||
| 	} |  | ||||||
| 	 | 	 | ||||||
| 	return o, nil | 	return o, nil | ||||||
| } | } | ||||||
| @ -67,8 +67,8 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { | |||||||
| func FromKey(k []byte) (KeyInfo, error) { | func FromKey(k []byte) (KeyInfo, error) { | ||||||
| 	o := KeyInfo{} | 	o := KeyInfo{} | ||||||
| 
 | 
 | ||||||
| 	if len(k) < 4 { | 	if len(k) < 3 { | ||||||
| 		return o, fmt.Errorf("insufficient key length") | 		return o, fmt.Errorf("insufficient key length: %d", len(k)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sessionIdBytes := k[1:len(k)-2] | 	sessionIdBytes := k[1:len(k)-2] | ||||||
|  | |||||||
| @ -29,6 +29,9 @@ func init() { | |||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_PUBLIC_KEY_REVERSE] = "public_key_reverse" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_PUBLIC_KEY_REVERSE] = "public_key_reverse" | ||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_DECIMAL] = "active decimal" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_DECIMAL] = "active decimal" | ||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_ADDRESS] = "active address" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_ADDRESS] = "active address" | ||||||
|  | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INCORRECT_PIN_ATTEMPTS] = "incorrect pin attempts" | ||||||
|  | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_SELECTED_LANGUAGE_CODE] = "selected language" | ||||||
|  | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INITIAL_LANGUAGE_CODE] = "initial language" | ||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_SYMBOLS] = "voucher symbols" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_SYMBOLS] = "voucher symbols" | ||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_BALANCES] = "voucher balances" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_BALANCES] = "voucher balances" | ||||||
| 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_DECIMALS] = "voucher decimals" | 	dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_DECIMALS] = "voucher decimals" | ||||||
|  | |||||||
| @ -19,8 +19,9 @@ var ( | |||||||
| 	scriptDir = path.Join("services", "registration") | 	scriptDir = path.Join("services", "registration") | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func formatItem(k []byte, v []byte) (string, error) { | func formatItem(k []byte, v []byte, sessionId string) (string, error) { | ||||||
| 	o, err := debug.FromKey(k) | 	//o, err := debug.FromKey(k)
 | ||||||
|  | 	o, err := debug.ToKeyInfo(k, sessionId) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
| 	} | 	} | ||||||
| @ -38,16 +39,16 @@ func main() { | |||||||
| 	var err error | 	var err error | ||||||
| 
 | 
 | ||||||
| 	flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") | 	flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") | ||||||
| 	flag.StringVar(&connStr, "c", ".state", "connection string") | 	flag.StringVar(&connStr, "c", "", "connection string") | ||||||
| 	flag.BoolVar(&engineDebug, "d", false, "use engine debug output") | 	flag.BoolVar(&engineDebug, "d", false, "use engine debug output") | ||||||
| 	flag.Parse() | 	flag.Parse() | ||||||
| 
 | 
 | ||||||
| 	if connStr != "" { | 	if connStr == "" { | ||||||
| 		connStr = config.DbConn() | 		connStr = config.DbConn() | ||||||
| 	} | 	} | ||||||
| 	connData, err := storage.ToConnData(connStr) | 	connData, err := storage.ToConnData(connStr) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, "connstr err: %v", err) | 		fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -65,9 +66,10 @@ func main() { | |||||||
| 		fmt.Fprintf(os.Stderr, "get userdata db: %v\n", err.Error()) | 		fmt.Fprintf(os.Stderr, "get userdata db: %v\n", err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
|  | 	store.SetSession(sessionId) | ||||||
| 	store.SetPrefix(db.DATATYPE_USERDATA) | 	store.SetPrefix(db.DATATYPE_USERDATA) | ||||||
| 
 | 
 | ||||||
| 	d, err := store.Dump(ctx, []byte(sessionId)) | 	d, err := store.Dump(ctx, []byte("")) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, "store dump fail: %v\n", err.Error()) | 		fmt.Fprintf(os.Stderr, "store dump fail: %v\n", err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| @ -78,9 +80,9 @@ func main() { | |||||||
| 		if k == nil { | 		if k == nil { | ||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 		r, err := formatItem(k, v) | 		r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			fmt.Fprintf(os.Stderr, "format db item error: %v", err) | 			fmt.Fprintf(os.Stderr, "format db item error: %v\n", err) | ||||||
| 			os.Exit(1) | 			os.Exit(1) | ||||||
| 		} | 		} | ||||||
| 		fmt.Printf(r) | 		fmt.Printf(r) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user