package kv;

import common.Constant;
import config.Config;
import util.Tools;
import util.ZxlSDKUtil;

import java.util.UUID;
import java.util.concurrent.TimeUnit;

//todo 仅供参考，实际开发的需要自行封装各个接口
public class Test {
    public static void main(String[] args) throws Exception {
        // step1：kv存证
        String pubKey = Config.platformPubKey;
        //kvKey的格式为：地址_自定义的key，地址可以直接存储，不用每次都调用公钥转地址的方法
        String kvKey = ZxlSDKUtil.pubKey2Address(pubKey) +"_test3";
        String operateId = UUID.randomUUID().toString();

        KvSave kvSave = new KvSave(Config.platformPubKey, kvKey, "{\"pic\":\"https://test-zgc-public.oss-cn-beijing.aliyuncs.com/cert20240429001.png\"}", operateId);
        kvSave.save(Config.platformPrivateKey);

        // step2：查询kv存证，状态0：没有查到存证记录 2：上链中 3：存证成功，4：存证失败
        // 这里推荐sleep 2-3s 后再去查存证信息，防止查询不到
        TimeUnit.SECONDS.sleep(2);
        long startTime = System.currentTimeMillis();
        KvQuery kvQuery = new KvQuery(kvKey, true);
        KvQueryResp kvQueryResp = new KvQueryResp();
        while (Tools.checkTimeout(startTime, Constant.DEFAULT_TIMEOUT) && kvQueryResp.getKvStatus() < 3) {
            kvQueryResp = kvQuery.query();
            TimeUnit.SECONDS.sleep(1);
        }
        System.out.println(kvQueryResp);
    }
}
