/*
Package storage contains contract that puts a set of values inside the storage on
deploy. The contract has a single method returning iterator over these values.
The contract is aimed to test iterator sessions RPC API.
*/
package storage

import (
	"git.marketally.com/tutus-one/tutus-chain/pkg/interop/iterator"
	"git.marketally.com/tutus-one/tutus-chain/pkg/interop/storage"
)

// valuesCount is the amount of stored values.
const valuesCount = 255

// valuesPrefix is the prefix values are stored by.
var valuesPrefix = []byte{0x01}

func _deploy(data any, isUpdate bool) {
	if !isUpdate {
		ctx := storage.GetContext()
		for i := 0; i < valuesCount; i++ {
			key := append(valuesPrefix, byte(i))
			storage.Put(ctx, key, i)
		}
	}

}

// IterateOverValues returns iterator over contract storage values stored during deploy.
func IterateOverValues() iterator.Iterator {
	ctx := storage.GetContext()
	return storage.Find(ctx, valuesPrefix, storage.ValuesOnly)
}
