This post is from a low-reputation account and contains an unverified outbound link. Be cautious before clicking external links.

USAGE EOS CLEOS - EASY #3

riccotz(27)
Published in
#eos
Words
76
Reading
1 min
Listen
Play
8y

HOW USE DATABASE ON CONTRACT

MULTY INDEX USAGE

CONTRACT SAMPLE

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
using namespace eosio;

using eosio::indexed_by;
using eosio::const_mem_fun;
using eosio::asset;

class usagedbc : public eosio::contract {
    public:
    
    usagedbc( account_name self )
        :contract(self),
        dbusage(_self, _self)
    {}

    //@abi action
    void actionget( const uint64_t unique_id, const uint64_t delrow ) {
        std::string valv1 = "testval1";
        std::string valv2 = "testval2";
        
        auto dbusage_itr = dbusage.find(unique_id);

        if(dbusage_itr == dbusage.end()){
            print("TRY Row not found\n");
            // Store new data
            auto new_dbusage_itr = dbusage.emplace(_self, [&](auto& db_struct){
                db_struct.id = unique_id;//dbusage.available_primary_key();
                db_struct.val1 = valv1;
                db_struct.val2 = valv2;
                db_struct.date_create = now() + FIVE_MINUTES;
            });
            dbusage_itr = dbusage.find(unique_id);
            if(dbusage_itr == dbusage.end()){
                print("GET Row not found\n");
            }
            if(dbusage_itr->id == unique_id){
                print("GET Row founded\n");
                if(delrow == 1){
                    dbusage.erase(dbusage_itr);
                }
            }
        }
        else if(dbusage_itr->id == unique_id){
            print("TRY Row founded\n");
            if(delrow == 1){
                dbusage.erase(dbusage_itr);
            }
        }
    }
    private:
        //@abi table dbtablename i64
        struct db_struct {
            uint64_t id;
            std::string val1;
            std::string val2;
            time date_create;
            uint64_t primary_key()const { return id; }
            EOSLIB_SERIALIZE( db_struct, (id)(val1)(val2)(date_create) )
        };
    typedef eosio::multi_index< N(dbtablename), db_struct> db_index;
    db_index dbusage;
};
EOSIO_ABI( usagedbc, (actionget) )

WE GENERATE WAST

eosiocpp -o /root/eos/contracts/usagedbc/usagedbc.wast /root/eos/contracts/usagedbc/usagedbc.cpp

WE GENERATE ABI

eosiocpp -g /root/eos/contracts/usagedbc/usagedbc.abi /root/eos/contracts/usagedbc/usagedbc.cpp

WE PUBLISH CONTRACT

cleos set contract myaccount /root/eos/contracts/usagedbc/ -p myaccount

USAGE THIS CONTRACT

#ARG unique_id -> unique id on database, delrow -> if 0 - not deleted row, if 1 - founded row deleted

cleos/cleos push action myaccount actionget '{"unique_id":100, "delrow":0}' -p myaccount --json

READ TABLE

cleos get table myaccount myaccount dbtablename

USAGE EOS CLEOS - EASY #3 | Ecency