I made an SDK for HBD Related Queries

in HiveDevs2 days ago

image.png
(Photo generated with PeakD image generator)

I initially needed a tool to interact with the blockchain and retrieve various HBD-related operations for my practice project.

HBD Wallet

I've been working on a website where users can manage their HBD savings and perform various transactions related to HBD. This is essentially a practice project as I am studying the Next.js full-stack framework. Here's my latest progress:

image.png

It currently displays a dashboard of balances, deposits, interst, and a chart of accumulated HBD and deposits over time.

The website isn't public yet!

HBD Repo

To build this website, I need to rely heavily on blockchain historical data. To make things easier, clean, and easy to maintain, I created HBD Repo. It is initially using HiveSQL however, I just discovered yesterday that it isn't funded anymore and will not be free to use. Mannnn, I just can't afford a 5HBD/day.

Now, I just migrated it to use HafSQL. Which works similarly with some differences in tables schema.

If you are like me who is working on a project involving HBD, feel free to contribute to my code and suggest features.

The source code is here: sauce

How to use

It is written in typescript btw, so I it requires you to be familiar to it.

Optionally, you have to install the Postgres library

npm install pg

You need the HafSQL public credentials, thanks to @mahdiyari :

const poolConfig: PoolConfig = {
  user: `hafsql_public`,
  host: `hafsql-sql.mahdiyari.info`,
  database: `haf_block_log`,
  password: `hafsql_public`,
  port: 5432, 
};

Then you are good to go with this example:

dont forget to change 'your-username'


import { PoolConfig } from 'pg';
import { HBDRepo } from 'hbd-sql/dist';

const poolConfig: PoolConfig = {
  user: `hafsql_public`,
  host: `hafsql-sql.mahdiyari.info`,
  database: `haf_block_log`,
  password: `hafsql_public`,
  port: 5432, 
};

async function main() {
  try {
    // Get the singleton instance of HBDRepo
    const repo = HBDRepo.getInstance(poolConfig);

   console.log('Deposits');
    const deposits = await repo.deposits('your-username');
    console.log('Deposits:', deposits);

    console.log('Withdrawals');
    const withdrawals = await repo.withdrawals('your-username');
    console.log('Withdrawals:', withdrawals);

    console.log('Total Deposit');
    const totalDeposit = await repo.totalDeposit('your-username');
      console.log('Total Deposit:', totalDeposit);

    console.log('Total Withdrawals');
    const totalWithdrawal = await repo.totalWithdrawal('your-username');
    console.log('Total Withdrawal:', totalWithdrawal);

    console.log('Total Interest');
    const totalInterest = await repo.totalInterest('your-username');
    console.log('Total Interest:', totalInterest);

    console.log('Interest Rate');
    const interestRate = await repo.interestRate();
    console.log('Interest Rate:', interestRate ? 'success' : 'failed');

    console.log('Savings Details');
    const savingsDetails = await repo.savingsDetails('your-username');
    console.log('Savings Details:', savingsDetails);

    console.log('Interest Payments');
    const interestPayments = await repo.interestPayments('your-username');
    console.log({ interestPayments });

  } catch (error) {
    console.error('An error occurred:', error);
  }
}

main();

Let me know what functions would be useful for you, I would be happy to include it!