Bisonai/orakl

(OraklNode) Refactor object get & set using redis

Closed this issue · 0 comments

Reduces duplicated codes and improves code readability
Following example codes only includes get and set, but it could be also implemented in mSet and mGet

SET

AS - IS

func insertProofRdb(ctx context.Context, configId int32, round int32, proofs [][]byte) error {
	concatProof := bytes.Join(proofs, nil)
	key := "proof:" + strconv.Itoa(int(configId)) + "|round:" + strconv.Itoa(int(round))
	data, err := json.Marshal(Proof{ConfigID: configId, Round: round, Proof: concatProof})
	if err != nil {
		log.Error().Str("Player", "Aggregator").Err(err).Msg("failed to marshal proofs")
		return err
	}
	return db.Set(ctx, key, string(data), time.Duration(5*time.Minute))
}

TO - BE

func insertProofRdb(ctx context.Context, configId int32, round int32, proofs [][]byte) error {
	concatProof := bytes.Join(proofs, nil)
	key := "proof:" + strconv.Itoa(int(configId)) + "|round:" + strconv.Itoa(int(round))
        obj := Proof{ConfigID: configId, Round: round, Proof: concatProof}
	return db.SetObject(ctx, key, obj, time.Duration(5*time.Minute))
}

GET

AS - IS

func getProofFromRdb(ctx context.Context, configId int32, round int32) (Proof, error) {
	key := "proof:" + strconv.Itoa(int(configId)) + "|round:" + strconv.Itoa(int(round))
	var proofs Proof
	data, err := db.Get(ctx, key)
	if err != nil {
		return proofs, err
	}

	err = json.Unmarshal([]byte(data), &proofs)
	if err != nil {
		return proofs, err
	}
	return proofs, nil
}

TO - BE

func getProofFromRdb(ctx context.Context, configId int32, round int32) (Proof, error) {
	key := "proof:" + strconv.Itoa(int(configId)) + "|round:" + strconv.Itoa(int(round))
         return db.getObject[Proof](ctx, key)
}