wip-flag-migration #28
@ -277,24 +277,11 @@ func codeFromCtx(ctx context.Context) string {
 | 
				
			|||||||
// SaveFirstname updates the first name in a JSON data file with the provided input.
 | 
					// SaveFirstname updates the first name in a JSON data file with the provided input.
 | 
				
			||||||
func (h *Handlers) SaveFirstname(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) SaveFirstname(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	if len(input) > 0 {
 | 
						if len(input) > 0 {
 | 
				
			||||||
		name := string(input)
 | 
							name := string(input)
 | 
				
			||||||
		//accountData["FirstName"] = name
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		key := []byte(FirstName)
 | 
							key := []byte(FirstName)
 | 
				
			||||||
		value := []byte(name)
 | 
							value := []byte(name)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		h.db.Store(key, value, true)
 | 
							h.db.Store(key, value, true)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// err = h.accountFileHandler.WriteAccountData(accountData)
 | 
					 | 
				
			||||||
		// if err != nil {
 | 
					 | 
				
			||||||
		// 	return res, err
 | 
					 | 
				
			||||||
		// }
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
@ -307,7 +294,6 @@ func (h *Handlers) SaveFamilyname(cxt context.Context, sym string, input []byte)
 | 
				
			|||||||
		secondname := string(input)
 | 
							secondname := string(input)
 | 
				
			||||||
		key := []byte(FamilyName)
 | 
							key := []byte(FamilyName)
 | 
				
			||||||
		value := []byte(secondname)
 | 
							value := []byte(secondname)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		h.db.Store(key, value, true)
 | 
							h.db.Store(key, value, true)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -317,19 +303,12 @@ func (h *Handlers) SaveFamilyname(cxt context.Context, sym string, input []byte)
 | 
				
			|||||||
// SaveYOB updates the Year of Birth(YOB) in a JSON data file with the provided input.
 | 
					// SaveYOB updates the Year of Birth(YOB) in a JSON data file with the provided input.
 | 
				
			||||||
func (h *Handlers) SaveYob(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) SaveYob(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	yob := string(input)
 | 
						yob := string(input)
 | 
				
			||||||
	if len(yob) == 4 {
 | 
						if len(yob) == 4 {
 | 
				
			||||||
		yob := string(input)
 | 
							yob := string(input)
 | 
				
			||||||
		//accountData["YOB"] = yob
 | 
					 | 
				
			||||||
		key := []byte(YearOfBirth)
 | 
							key := []byte(YearOfBirth)
 | 
				
			||||||
		value := []byte(yob)
 | 
							value := []byte(yob)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		h.db.Store(key, value, true)
 | 
							h.db.Store(key, value, true)
 | 
				
			||||||
		// err = h.accountFileHandler.WriteAccountData(accountData)
 | 
					 | 
				
			||||||
		// if err != nil {
 | 
					 | 
				
			||||||
		// 	return res, err
 | 
					 | 
				
			||||||
		// }
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
@ -338,12 +317,6 @@ func (h *Handlers) SaveYob(cxt context.Context, sym string, input []byte) (resou
 | 
				
			|||||||
// SaveLocation updates the location in a JSON data file with the provided input.
 | 
					// SaveLocation updates the location in a JSON data file with the provided input.
 | 
				
			||||||
func (h *Handlers) SaveLocation(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) SaveLocation(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(input) > 0 {
 | 
						if len(input) > 0 {
 | 
				
			||||||
		location := string(input)
 | 
							location := string(input)
 | 
				
			||||||
		key := []byte(Location)
 | 
							key := []byte(Location)
 | 
				
			||||||
@ -360,7 +333,6 @@ func (h *Handlers) SaveGender(ctx context.Context, sym string, input []byte) (re
 | 
				
			|||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
	if len(input) > 0 {
 | 
						if len(input) > 0 {
 | 
				
			||||||
		gender := string(input)
 | 
							gender := string(input)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		switch gender {
 | 
							switch gender {
 | 
				
			||||||
		case "1":
 | 
							case "1":
 | 
				
			||||||
			gender = "Male"
 | 
								gender = "Male"
 | 
				
			||||||
@ -369,16 +341,9 @@ func (h *Handlers) SaveGender(ctx context.Context, sym string, input []byte) (re
 | 
				
			|||||||
		case "3":
 | 
							case "3":
 | 
				
			||||||
			gender = "Unspecified"
 | 
								gender = "Unspecified"
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		//accountData["Gender"] = gender
 | 
					 | 
				
			||||||
		key := []byte(Gender)
 | 
							key := []byte(Gender)
 | 
				
			||||||
		value := []byte(gender)
 | 
							value := []byte(gender)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		h.db.Store(key, value, true)
 | 
							h.db.Store(key, value, true)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// err = h.accountFileHandler.WriteAccountData(accountData)
 | 
					 | 
				
			||||||
		// if err != nil {
 | 
					 | 
				
			||||||
		// 	return res, err
 | 
					 | 
				
			||||||
		// }
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -386,24 +351,11 @@ func (h *Handlers) SaveGender(ctx context.Context, sym string, input []byte) (re
 | 
				
			|||||||
// SaveOfferings updates the offerings(goods and services provided by the user) in a JSON data file with the provided input.
 | 
					// SaveOfferings updates the offerings(goods and services provided by the user) in a JSON data file with the provided input.
 | 
				
			||||||
func (h *Handlers) SaveOfferings(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) SaveOfferings(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(input) > 0 {
 | 
						if len(input) > 0 {
 | 
				
			||||||
		offerings := string(input)
 | 
							offerings := string(input)
 | 
				
			||||||
		//accountData["Offerings"] = offerings
 | 
					 | 
				
			||||||
		key := []byte(Offerings)
 | 
							key := []byte(Offerings)
 | 
				
			||||||
		value := []byte(offerings)
 | 
							value := []byte(offerings)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		h.db.Store(key, value, true)
 | 
							h.db.Store(key, value, true)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// err = h.accountFileHandler.WriteAccountData(accountData)
 | 
					 | 
				
			||||||
		// if err != nil {
 | 
					 | 
				
			||||||
		// 	return res, err
 | 
					 | 
				
			||||||
		// }
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -441,18 +393,11 @@ func (h *Handlers) ResetAccountAuthorized(ctx context.Context, sym string, input
 | 
				
			|||||||
// CheckIdentifier retrieves the PublicKey from the JSON data file.
 | 
					// CheckIdentifier retrieves the PublicKey from the JSON data file.
 | 
				
			||||||
func (h *Handlers) CheckIdentifier(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) CheckIdentifier(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	publicKey, err := h.db.Fetch([]byte(PublicKeyKey))
 | 
						publicKey, err := h.db.Fetch([]byte(PublicKeyKey))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, err
 | 
							return res, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	res.Content = string(publicKey)
 | 
						res.Content = string(publicKey)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -460,21 +405,12 @@ func (h *Handlers) CheckIdentifier(ctx context.Context, sym string, input []byte
 | 
				
			|||||||
// It sets the required flags that control the flow.
 | 
					// It sets the required flags that control the flow.
 | 
				
			||||||
func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Preload the required flags
 | 
						// Preload the required flags
 | 
				
			||||||
	flagKeys := []string{"flag_incorrect_pin", "flag_account_authorized", "flag_allow_update"}
 | 
						flagKeys := []string{"flag_incorrect_pin", "flag_account_authorized", "flag_allow_update"}
 | 
				
			||||||
	flags, err := h.PreloadFlags(flagKeys)
 | 
						flags, err := h.PreloadFlags(flagKeys)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, err
 | 
							return res, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// pin := string(input)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	storedpin, err := h.db.Fetch([]byte(AccountPin))
 | 
						storedpin, err := h.db.Fetch([]byte(AccountPin))
 | 
				
			||||||
	if err == nil {
 | 
						if err == nil {
 | 
				
			||||||
		if len(input) == 4 {
 | 
							if len(input) == 4 {
 | 
				
			||||||
@ -526,11 +462,6 @@ func (h *Handlers) CheckAccountStatus(ctx context.Context, sym string, input []b
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, err
 | 
							return res, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	trackingId, err := h.db.Fetch([]byte(TrackingIdKey))
 | 
						trackingId, err := h.db.Fetch([]byte(TrackingIdKey))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@ -545,9 +476,12 @@ func (h *Handlers) CheckAccountStatus(ctx context.Context, sym string, input []b
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//accountData["Status"] = status
 | 
						err = h.db.Store(toBytes(AccountStatus), toBytes(status), true)
 | 
				
			||||||
	err = h.db.Store(toBytes(TrackingIdKey), toBytes(status), true)
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return res, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = h.db.Store(toBytes(TrackingIdKey), toBytes(status), true)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, nil
 | 
							return res, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -828,39 +762,6 @@ func (h *Handlers) GetRecipient(ctx context.Context, sym string, input []byte) (
 | 
				
			|||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetProfileInfo retrieves and formats the profile information of a user from a JSON data file.
 | 
					 | 
				
			||||||
func (h *Handlers) GetProfileInfo(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					 | 
				
			||||||
	res := resource.Result{}
 | 
					 | 
				
			||||||
	var age string
 | 
					 | 
				
			||||||
	accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return res, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var name string
 | 
					 | 
				
			||||||
	if accountData["FirstName"] == "Not provided" || accountData["FamilyName"] == "Not provided" {
 | 
					 | 
				
			||||||
		name = "Not provided"
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		name = accountData["FirstName"] + " " + accountData["FamilyName"]
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	gender := accountData["Gender"]
 | 
					 | 
				
			||||||
	yob := accountData["YOB"]
 | 
					 | 
				
			||||||
	location := accountData["Location"]
 | 
					 | 
				
			||||||
	offerings := accountData["Offerings"]
 | 
					 | 
				
			||||||
	if yob == "Not provided" {
 | 
					 | 
				
			||||||
		age = "Not provided"
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		ageInt, err := strconv.Atoi(yob)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return res, nil
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		age = strconv.Itoa(utils.CalculateAgeWithYOB(ageInt))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	formattedData := fmt.Sprintf("Name: %s\nGender: %s\nAge: %s\nLocation: %s\nYou provide: %s\n", name, gender, age, location, offerings)
 | 
					 | 
				
			||||||
	res.Content = formattedData
 | 
					 | 
				
			||||||
	return res, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// GetSender retrieves the public key from a JSON data file.
 | 
					// GetSender retrieves the public key from a JSON data file.
 | 
				
			||||||
func (h *Handlers) GetSender(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) GetSender(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
@ -879,13 +780,10 @@ func (h *Handlers) GetSender(ctx context.Context, sym string, input []byte) (res
 | 
				
			|||||||
// GetAmount retrieves the amount from a JSON data file.
 | 
					// GetAmount retrieves the amount from a JSON data file.
 | 
				
			||||||
func (h *Handlers) GetAmount(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
					func (h *Handlers) GetAmount(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
	res := resource.Result{}
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	//accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	amount, err := h.db.Fetch([]byte(Amount))
 | 
						amount, err := h.db.Fetch([]byte(Amount))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, err
 | 
							return res, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	res.Content = string(amount)
 | 
						res.Content = string(amount)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
@ -906,10 +804,6 @@ func (h *Handlers) QuitWithBalance(ctx context.Context, sym string, input []byte
 | 
				
			|||||||
	code := codeFromCtx(ctx)
 | 
						code := codeFromCtx(ctx)
 | 
				
			||||||
	l := gotext.NewLocale(translationDir, code)
 | 
						l := gotext.NewLocale(translationDir, code)
 | 
				
			||||||
	l.AddDomain("default")
 | 
						l.AddDomain("default")
 | 
				
			||||||
	// accountData, err := h.accountFileHandler.ReadAccountData()
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	publicKey, err := h.db.Fetch([]byte(PublicKeyKey))
 | 
						publicKey, err := h.db.Fetch([]byte(PublicKeyKey))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return res, err
 | 
							return res, err
 | 
				
			||||||
@ -930,12 +824,6 @@ func (h *Handlers) InitiateTransaction(ctx context.Context, sym string, input []
 | 
				
			|||||||
	code := codeFromCtx(ctx)
 | 
						code := codeFromCtx(ctx)
 | 
				
			||||||
	l := gotext.NewLocale(translationDir, code)
 | 
						l := gotext.NewLocale(translationDir, code)
 | 
				
			||||||
	l.AddDomain("default")
 | 
						l.AddDomain("default")
 | 
				
			||||||
	// Preload the required flags
 | 
					 | 
				
			||||||
	// flagKeys := []string{"flag_invalid_recipient"}
 | 
					 | 
				
			||||||
	// flags, err := h.PreloadFlags(flagKeys)
 | 
					 | 
				
			||||||
	// if err != nil {
 | 
					 | 
				
			||||||
	// 	return res, err
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	// TODO
 | 
						// TODO
 | 
				
			||||||
	// Use the amount, recipient and sender to call the API and initialize the transaction
 | 
						// Use the amount, recipient and sender to call the API and initialize the transaction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -962,3 +850,66 @@ func (h *Handlers) InitiateTransaction(ctx context.Context, sym string, input []
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return res, nil
 | 
						return res, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetProfileInfo retrieves and formats the profile information of a user from a JSON data file.
 | 
				
			||||||
 | 
					func (h *Handlers) GetProfileInfo(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
				
			||||||
 | 
						res := resource.Result{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Define default values
 | 
				
			||||||
 | 
						defaultValue := "Not provided"
 | 
				
			||||||
 | 
						name := defaultValue
 | 
				
			||||||
 | 
						familyName := defaultValue
 | 
				
			||||||
 | 
						yob := defaultValue
 | 
				
			||||||
 | 
						gender := defaultValue
 | 
				
			||||||
 | 
						location := defaultValue
 | 
				
			||||||
 | 
						offerings := defaultValue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Fetch data using a map for better organization
 | 
				
			||||||
 | 
						dataKeys := map[string]*string{
 | 
				
			||||||
 | 
							FirstName:   &name,
 | 
				
			||||||
 | 
							FamilyName:  &familyName,
 | 
				
			||||||
 | 
							YearOfBirth: &yob,
 | 
				
			||||||
 | 
							Location:    &location,
 | 
				
			||||||
 | 
							Gender:      &gender,
 | 
				
			||||||
 | 
							Offerings:   &offerings,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Iterate over keys and fetch values
 | 
				
			||||||
 | 
						//iter := h.db.Iterator()
 | 
				
			||||||
 | 
						next := h.db.Iterator()
 | 
				
			||||||
 | 
						//defer iter.Close() // Ensure the iterator is closed
 | 
				
			||||||
 | 
						for key, err := next(); err == nil; key, err = next() {
 | 
				
			||||||
 | 
							if valuePointer, ok := dataKeys[string(key)]; ok {
 | 
				
			||||||
 | 
								value, fetchErr := h.db.Fetch(key)
 | 
				
			||||||
 | 
								if fetchErr == nil {
 | 
				
			||||||
 | 
									*valuePointer = string(value)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Construct the full name
 | 
				
			||||||
 | 
						if familyName != defaultValue {
 | 
				
			||||||
 | 
							if name == defaultValue {
 | 
				
			||||||
 | 
								name = familyName
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								name = name + " " + familyName
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Calculate age from year of birth
 | 
				
			||||||
 | 
						var age string
 | 
				
			||||||
 | 
						if yob != defaultValue {
 | 
				
			||||||
 | 
							yobInt, err := strconv.Atoi(yob)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return res, fmt.Errorf("invalid year of birth: %v", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							age = strconv.Itoa(utils.CalculateAgeWithYOB(yobInt))
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							age = defaultValue
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Format the result
 | 
				
			||||||
 | 
						formattedData := fmt.Sprintf("Name: %s\nGender: %s\nAge: %s\nLocation: %s\nYou provide: %s\n", name, gender, age, location, offerings)
 | 
				
			||||||
 | 
						res.Content = formattedData
 | 
				
			||||||
 | 
						return res, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user