4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

USAGE EOS CLEOS - EASY #3

HOW USE DATABASE ON CONTRACT

MULTY INDEX USAGE

CONTRACT SAMPLE

#include <utility>
#include <vector>
#include <string>
#include <eosiolib/crypto.h>
#include <eosiolib/types.hpp>
#include <eosiolib/print.hpp>
#include <eosiolib/action.hpp>
#include <eosiolib/multi_index.hpp>
#include <eosiolib/contract.hpp>

#include <eosio.system/eosio.system.hpp>
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

9 upvotes $0.01

Replies (10)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: