models

package
v1.4.1-rc-340 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2022 License: GPL-2.0 Imports: 23 Imported by: 65

Documentation

Index

Constants

View Source
const (
	WindowYesterday       = 24 * 60 * 60
	Window1h              = 60 * 60
	Window7d              = 7 * 24 * 60 * 60
	Window14d             = 7 * 24 * 60 * 60
	Window30d             = 30 * 24 * 60 * 60
	Window2               = 24 * 60 * 60 * 8
	BufferTTL             = 60 * 60
	BiggestWindow         = Window2
	TimeOutRedis          = time.Duration(time.Second*BiggestWindow + time.Second*BufferTTL)
	TimeOutAssetQuotation = time.Duration(time.Second * WindowYesterday)
)
View Source
const (
	NfttradeCurrTable    = "nfttradecurrent"
	NfttradeSumeriaTable = "nfttradesumeria"
)
View Source
const (
	TimeLayoutRedis = "2006-01-02 15:04:05 +0000 UTC"
)
View Source
const (
	WindowVolume = 60 * 60 * 24
)

Variables

This section is empty.

Functions

func GetExchangeType added in v1.4.2

func GetExchangeType(exchange dia.Exchange) string

func StraightRates

func StraightRates(intRates []*InterestRate) map[time.Time]float64

StraightRates returns a map which maps a rate to each day in the time period. This includes (artificial) rate values for non-business days. intRates must be sorted by date in increasing order.

func WeightedRates

func WeightedRates(intRates []*InterestRate, dateInit, dateFinal time.Time, holidays []time.Time, startIndex int) (map[time.Time]float64, int)

WeightedRates returns a map which maps a rate to each business day in the time period given by @dateInit and @dateFinal. Rates are weighted by the rate factor. intRates must be sorted by date in increasing order.

Types

type AssetQuotation added in v1.2.0

type AssetQuotation struct {
	Asset  dia.Asset
	Price  float64
	Source string
	Time   time.Time
}

AssetQuotation is the most recent price point information on an asset.

func (*AssetQuotation) MarshalBinary added in v1.2.0

func (aq *AssetQuotation) MarshalBinary() ([]byte, error)

MarshalBinary for quotations

func (*AssetQuotation) UnmarshalBinary added in v1.2.0

func (aq *AssetQuotation) UnmarshalBinary(data []byte) error

UnmarshalBinary for quotations

type AssetQuotationFull added in v1.2.0

type AssetQuotationFull struct {
	Symbol             string
	Name               string
	Address            string
	Blockchain         string
	Price              float64
	PriceYesterday     float64
	VolumeYesterdayUSD float64
	Time               time.Time
	Source             string
}

func (*AssetQuotationFull) MarshalBinary added in v1.2.0

func (aq *AssetQuotationFull) MarshalBinary() ([]byte, error)

MarshalBinary for quotations

func (*AssetQuotationFull) UnmarshalBinary added in v1.2.0

func (aq *AssetQuotationFull) UnmarshalBinary(data []byte) error

UnmarshalBinary for quotations

type Author

type Author struct {
	Name  string
	Email string
}

type BenchmarkedIndex added in v1.2.0

type BenchmarkedIndex struct {
	Name   string
	Values []BenchmarkedIndexValue
}

type BenchmarkedIndexValue added in v1.2.0

type BenchmarkedIndexValue struct {
	CalculationTime time.Time
	Value           string
}

type Change

type Change struct {
	USD []CurrencyChange
}

func (*Change) MarshalBinary

func (e *Change) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*Change) UnmarshalBinary

func (e *Change) UnmarshalBinary(data []byte) error

UnmarshalBinary -

type Coin

type Coin struct {
	Symbol             string
	Name               string
	Price              float64
	PriceYesterday     *float64
	VolumeYesterdayUSD *float64
	Time               time.Time
	CirculatingSupply  *float64
	ITIN               string
}

func (*Coin) MarshalBinary

func (e *Coin) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*Coin) UnmarshalBinary

func (e *Coin) UnmarshalBinary(data []byte) error

type CoinSymbolAndName

type CoinSymbolAndName struct {
	Symbol string
	Name   string
}

type Coins

type Coins struct {
	CompleteCoinList []CoinSymbolAndName
	Change           *Change
	Coins            []Coin
}

func (*Coins) MarshalBinary

func (e *Coins) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*Coins) UnmarshalBinary

func (e *Coins) UnmarshalBinary(data []byte) error

UnmarshalBinary -

type CurrencyChange

type CurrencyChange struct {
	Symbol        string
	Rate          float64
	RateYesterday float64
}

type DB

type DB struct {
	// contains filtered or unexported fields
}

func NewDataStore

func NewDataStore() (*DB, error)

func NewDataStoreWithOptions

func NewDataStoreWithOptions(withRedis bool, withInflux bool) (*DB, error)

func NewDataStoreWithoutInflux

func NewDataStoreWithoutInflux() (*DB, error)

func NewDataStoreWithoutRedis

func NewDataStoreWithoutRedis() (*DB, error)

func NewInfluxDataStore

func NewInfluxDataStore() (*DB, error)

func NewRedisDataStore

func NewRedisDataStore() (*DB, error)

func (*DB) AddAssetQuotationsToBatch added in v1.2.0

func (datastore *DB) AddAssetQuotationsToBatch(quotations []*AssetQuotation) error

AddAssetQuotationsToBatch is a helper function that adds a slice of quotations to an influx batch.

func (*DB) CopyInfluxMeasurements added in v1.2.0

func (datastore *DB) CopyInfluxMeasurements(dbOrigin string, dbDestination string, tableOrigin string, tableDestination string, timeInit time.Time, timeFinal time.Time) (numCopiedRows int64, err error)

CopyInfluxMeasurements copies entries from measurement @tableOrigin in database @dbOrigin into @tableDestination in database @dbDestination. It takes into account all data ranging from @timeInit until @timeFinal.

func (*DB) DeleteInfluxMeasurement added in v1.4.0

func (datastore *DB) DeleteInfluxMeasurement(dbName string, tableName string, timeInit time.Time, timeFinal time.Time) (err error)

DeleteInfluxMeasurement deletes data from influx database @dbName and measurement @tableName in the given time range.

func (*DB) ExecuteRedisPipe added in v1.3.0

func (datastore *DB) ExecuteRedisPipe() (err error)

func (*DB) ExistInterestRate

func (datastore *DB) ExistInterestRate(symbol, date string) bool

ExistInterestRate returns true if a database entry with given date stamp exists, and false otherwise. @date should be a substring of a string formatted as "yyyy-mm-dd hh:mm:ss".

func (*DB) Flush

func (datastore *DB) Flush() error

func (*DB) FlushRedisPipe added in v1.3.0

func (datastore *DB) FlushRedisPipe() error

func (*DB) Get24HVolumePerExchange

func (datastore *DB) Get24HVolumePerExchange(asset dia.Asset) (exchangeVolume []dia.ExchangeVolume, err error)

Get24HVolumePerExchange returns the 24h volumes of @asset sorted by pairs.

func (*DB) GetAllTrades

func (datastore *DB) GetAllTrades(t time.Time, maxTrades int) ([]dia.Trade, error)

GetAllTrades returns at most @maxTrades trades from influx with timestamp > @t. Only used by replayInflux option.

func (*DB) GetAssetPriceUSD added in v1.2.0

func (datastore *DB) GetAssetPriceUSD(asset dia.Asset, timestamp time.Time) (price float64, err error)

GetAssetPriceUSD returns the latest USD price of @asset before @timestamp.

func (*DB) GetAssetPriceUSDCache added in v1.2.0

func (datastore *DB) GetAssetPriceUSDCache(asset dia.Asset) (price float64, err error)

GetAssetPriceUSDCache returns the latest price of @asset from the cache.

func (*DB) GetAssetPriceUSDLatest added in v1.2.0

func (datastore *DB) GetAssetPriceUSDLatest(asset dia.Asset) (price float64, err error)

GetAssetPriceUSDLatest returns the latest price of @asset.

func (*DB) GetAssetQuotation added in v1.2.0

func (datastore *DB) GetAssetQuotation(asset dia.Asset, timestamp time.Time) (*AssetQuotation, error)

GetAssetQuotation returns the latest full quotation for @asset before @timestamp.

func (*DB) GetAssetQuotationCache added in v1.2.0

func (datastore *DB) GetAssetQuotationCache(asset dia.Asset) (*AssetQuotation, error)

GetAssetQuotationCache returns the latest quotation for @asset from the redis cache.

func (*DB) GetAssetQuotationLatest added in v1.2.0

func (datastore *DB) GetAssetQuotationLatest(asset dia.Asset) (*AssetQuotation, error)

GetAssetQuotation returns the latest full quotation for @asset.

func (*DB) GetAssetQuotations added in v1.4.2

func (datastore *DB) GetAssetQuotations(asset dia.Asset, starttime time.Time, endtime time.Time) ([]AssetQuotation, error)

GetAssetQuotations returns all assetQuotations for @asset in the given time-range.

func (*DB) GetAssetsMarketCap added in v1.2.0

func (datastore *DB) GetAssetsMarketCap(asset dia.Asset) (float64, error)

GetAssetsMarketCap returns the actual market cap of @asset.

func (*DB) GetAssetsWithVOLInflux added in v1.2.0

func (datastore *DB) GetAssetsWithVOLInflux(timeInit time.Time) ([]dia.Asset, error)

GetAssetsWithVOLInflux returns all assets that have an entry in Influx's volumes table and hence have been traded since @timeInit.

func (*DB) GetAvailablePairs added in v1.2.0

func (datastore *DB) GetAvailablePairs(exchange string) ([]dia.ExchangePair, error)

GetAvailablePairs a slice of all pairs available in the exchange in the internal redis db

func (*DB) GetBenchmarkedIndexValuesInflux added in v1.2.0

func (datastore *DB) GetBenchmarkedIndexValuesInflux(symbol string, starttime time.Time, endtime time.Time) (BenchmarkedIndex, error)

func (*DB) GetCVIInflux

func (datastore *DB) GetCVIInflux(starttime time.Time, endtime time.Time, symbol string) ([]dia.CviDataPoint, error)

func (*DB) GetCommitByDate

func (datastore *DB) GetCommitByDate(user, repository string, date time.Time) (GithubCommit, error)

GetCommitByDate returns the latest commit from @repository of github user @user before @date.

func (*DB) GetCommitByHash

func (datastore *DB) GetCommitByHash(user, repository, hash string) (GithubCommit, error)

GetCommitByHash returns the commit from @repository of github user @user with hash @hash.

func (*DB) GetCompoundedAvg

func (datastore *DB) GetCompoundedAvg(symbol string, date time.Time, calDays, daysPerYear int, rounding int) (*InterestRate, error)

GetCompoundedAvg returns the compounded average of the index @symbol over rolling @calDays calendar days.

func (*DB) GetCompoundedAvgDIARange

func (datastore *DB) GetCompoundedAvgDIARange(symbol string, dateInit, dateFinal time.Time, calDays, daysPerYear int, rounding int) (values []*InterestRate, err error)

GetCompoundedAvgDIARange returns the compounded average DIA index of @symbol over rolling @calDays calendar days.

func (*DB) GetCompoundedAvgRange

func (datastore *DB) GetCompoundedAvgRange(symbol string, dateInit, dateFinal time.Time, calDays, daysPerYear int, rounding int) (values []*InterestRate, err error)

GetCompoundedAvgRange returns the compounded average of the index @symbol over rolling @calDays calendar days.

func (*DB) GetCompoundedIndex

func (datastore *DB) GetCompoundedIndex(symbol string, date time.Time, daysPerYear int, rounding int) (*InterestRate, error)

GetCompoundedIndex returns the compounded index over the maximal period of existence of @symbol

func (*DB) GetCompoundedIndexRange

func (datastore *DB) GetCompoundedIndexRange(symbol string, dateInit, dateFinal time.Time, daysPerYear int, rounding int) (values []*InterestRate, err error)

GetCompoundedIndexRange returns the compounded average of the index @symbol over rolling @calDays calendar days.

func (*DB) GetCompoundedRate

func (datastore *DB) GetCompoundedRate(symbol string, dateInit, date time.Time, daysPerYear int, rounding int) (*InterestRate, error)

GetCompoundedRate returns the compounded rate for the period @dateInit to @date. It computes the rate for all days for which an entry is present in the database. All other days are assumed to be holidays (or weekends).

func (*DB) GetCurrencyChange

func (datastore *DB) GetCurrencyChange() (*Change, error)

func (*DB) GetDefiProtocol

func (datastore *DB) GetDefiProtocol(name string) (dia.DefiProtocol, error)

GetDefiProtocol returns the die protocol struct by name

func (*DB) GetDefiProtocols

func (datastore *DB) GetDefiProtocols() ([]dia.DefiProtocol, error)

GetDefiProtocols returns a slice of all available DeFi protocols

func (*DB) GetDefiRateInflux

func (datastore *DB) GetDefiRateInflux(starttime time.Time, endtime time.Time, asset string, protocol string) ([]dia.DefiRate, error)

func (*DB) GetDefiStateInflux

func (datastore *DB) GetDefiStateInflux(starttime time.Time, endtime time.Time, protocol string) (retval []dia.DefiProtocolState, err error)

func (*DB) GetDiaCirculatingSupply added in v1.4.2

func (db *DB) GetDiaCirculatingSupply() (float64, error)

func (*DB) GetDiaTotalSupply added in v1.4.2

func (db *DB) GetDiaTotalSupply() (float64, error)

func (*DB) GetFilter added in v1.4.0

func (datastore *DB) GetFilter(filter string, topAsset dia.Asset, scale string, starttime time.Time, endtime time.Time) ([]dia.FilterPoint, error)

func (*DB) GetFilterPoints

func (datastore *DB) GetFilterPoints(filter string, exchange string, symbol string, scale string, starttime time.Time, endtime time.Time) (*Points, error)

GetFilterPoints returns filter points from either a specific exchange or all exchanges. symbol is mapped to the underlying asset with biggest market cap.

func (*DB) GetFilterPointsAsset added in v1.4.2

func (datastore *DB) GetFilterPointsAsset(filter string, exchange string, address string, blockchain string, starttime time.Time, endtime time.Time) (*Points, error)

func (*DB) GetFirstDate

func (datastore *DB) GetFirstDate(symbol string) (time.Time, error)

GetFirstDate returns the oldest date written in the database for the rate with symbol @symbol

func (*DB) GetFirstTradeDate added in v1.2.0

func (datastore *DB) GetFirstTradeDate(table string) (time.Time, error)

func (*DB) GetForeignPriceYesterday

func (datastore *DB) GetForeignPriceYesterday(symbol, source string) (float64, error)

GetForeignPriceYesterday returns the average price of @symbol on @source from yesterday

func (*DB) GetForeignQuotationInflux

func (datastore *DB) GetForeignQuotationInflux(symbol, source string, timestamp time.Time) (ForeignQuotation, error)

GetForeignQuotationInflux returns the last quotation of @symbol before @timestamp

func (*DB) GetForeignSymbolsInflux

func (datastore *DB) GetForeignSymbolsInflux(source string) (symbols []SymbolShort, err error)

GetForeignSymbolsInflux returns a list with all symbols available for quotation from @source, along with their ITIN.

func (*DB) GetInterestRate

func (datastore *DB) GetInterestRate(symbol, date string) (*InterestRate, error)

GetInterestRate returns the interest rate value for the last time stamp before @date. If @date is an empty string it returns the rate at the latest time stamp. @symbol is the shorthand symbol for the requested interest rate. @date is a string in the format yyyy-mm-dd.

func (*DB) GetInterestRateRange

func (datastore *DB) GetInterestRateRange(symbol, dateInit, dateFinal string) ([]*InterestRate, error)

GetInterestRateRange returns the interest rate values for a range of timestamps. @symbol is the shorthand symbol for the requested interest rate. @dateInit and @dateFinal are strings in the format yyyy-mm-dd.

func (*DB) GetIssuer

func (datastore *DB) GetIssuer(symbol string) (string, error)

GetIssuer returns the issuing entity of the rate given by @symbol

func (*DB) GetItinBySymbol

func (datastore *DB) GetItinBySymbol(symbol string) (dia.ItinToken, error)

func (*DB) GetLastPriceBefore

func (datastore *DB) GetLastPriceBefore(asset dia.Asset, filter string, exchange string, timestamp time.Time) (Price, error)

func (*DB) GetLastTradeTimeForExchange

func (datastore *DB) GetLastTradeTimeForExchange(asset dia.Asset, exchange string) (*time.Time, error)

func (*DB) GetLastTrades

func (datastore *DB) GetLastTrades(asset dia.Asset, exchange string, maxTrades int, fullAsset bool) ([]dia.Trade, error)

GetLastTrades returns the last @maxTrades of @asset on @exchange. If exchange is empty string it returns trades from all exchanges. If fullAsset=true, blockchain and address of both involved assets is returned as well

func (*DB) GetLatestCommit

func (datastore *DB) GetLatestCommit(user, repository string) (GithubCommit, error)

GetLatestCommit returns the latest commit from influx. Returns empty struct and nil if no commits are in the database.

func (*DB) GetLatestSupply

func (datastore *DB) GetLatestSupply(symbol string, relDB *RelDB) (*dia.Supply, error)

func (*DB) GetNumTrades added in v1.4.2

func (datastore *DB) GetNumTrades(exchange string) (numTrades int64, err error)

func (*DB) GetNumTradesSeries added in v1.4.2

func (datastore *DB) GetNumTradesSeries(
	exchange string,
	pair string,
	starttime time.Time,
	endtime time.Time,
	grouping string,
	quotetoken dia.Asset,
	basetoken dia.Asset,
) (numTrades []int, err error)

GetNumTradesSeries returns a time-series of number of trades in the respective time-ranges. If pair is the empty string, trades are identified by address/blockchain. @grouping defines the time-ranges in the notation of influx such as 30s, 40m, 2h,...

func (*DB) GetOldTradesFromInflux added in v1.2.0

func (datastore *DB) GetOldTradesFromInflux(table string, exchange string, verified bool, timeInit, timeFinal time.Time) ([]dia.Trade, error)

GetOldTradesFromInflux returns all recorded trades from @table done on @exchange between @timeInit and @timeFinal where the time interval is closed on the left and open on the right side. If @exchange is empty, trades across all exchanges are returned. If @verified is true, address and blockchain are also parsed for both assets.

func (*DB) GetOptionMeta

func (datastore *DB) GetOptionMeta(baseCurrency string) ([]dia.OptionMeta, error)

func (*DB) GetOptionOrderbookDataInflux

func (datastore *DB) GetOptionOrderbookDataInflux(t dia.OptionMeta) (dia.OptionOrderbookDatum, error)

func (*DB) GetPaxgQuotationGrams

func (datastore *DB) GetPaxgQuotationGrams() (*Quotation, error)

func (*DB) GetPaxgQuotationOunces

func (datastore *DB) GetPaxgQuotationOunces() (*Quotation, error)

func (*DB) GetPoolInflux added in v1.4.2

func (datastore *DB) GetPoolInflux(poolAddress string, starttime time.Time, endtime time.Time) ([]dia.Pool, error)

GetPoolInflux returns all info/liquidities of pool with @poolAddress in the time-range [starttime, endtime).

func (*DB) GetPrice

func (datastore *DB) GetPrice(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetPrice14d

func (datastore *DB) GetPrice14d(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetPrice1h

func (datastore *DB) GetPrice1h(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetPrice30d

func (datastore *DB) GetPrice30d(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetPrice7d

func (datastore *DB) GetPrice7d(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetPriceUSD

func (datastore *DB) GetPriceUSD(symbol string) (float64, error)

func (*DB) GetPriceYesterday

func (datastore *DB) GetPriceYesterday(asset dia.Asset, exchange string) (float64, error)

func (*DB) GetQuotation

func (datastore *DB) GetQuotation(symbol string) (*Quotation, error)

func (*DB) GetRates

func (datastore *DB) GetRates() []string

GetRates returns a (unique) slice of all rates that have been written into the database

func (*DB) GetRatesMeta

func (datastore *DB) GetRatesMeta() (RatesMeta []InterestRateMeta, err error)

GetRatesMeta returns a list of all available rate symbols along with their first timestamp in the database.

func (*DB) GetSortedAssetQuotations added in v1.2.0

func (datastore *DB) GetSortedAssetQuotations(assets []dia.Asset) ([]AssetQuotation, error)

GetSortedQuotations returns quotations for all assets in @assets, sorted by 24h volume in descending order.

func (*DB) GetStockQuotation added in v1.2.0

func (db *DB) GetStockQuotation(source string, symbol string, timeInit time.Time, timeFinal time.Time) ([]StockQuotation, error)

GetStockQuotationInflux returns the last quotation of @symbol before @timestamp.

func (*DB) GetStockSymbols added in v1.4.0

func (db *DB) GetStockSymbols() (map[Stock]string, error)

GetStockSymbols returns all symbols available from @source.

func (*DB) GetSupply

func (datastore *DB) GetSupply(symbol string, starttime, endtime time.Time, relDB *RelDB) ([]dia.Supply, error)

func (*DB) GetSupplyCache added in v1.4.2

func (datastore *DB) GetSupplyCache(asset dia.Asset) (supply dia.Supply, err error)

func (*DB) GetSupplyInflux

func (datastore *DB) GetSupplyInflux(asset dia.Asset, starttime time.Time, endtime time.Time) ([]dia.Supply, error)

GetSupplyInflux returns supply and circulating supply of @asset. Needs asset.Address and asset.Blockchain. If no time range is given it returns the latest supply.

func (*DB) GetSymbols

func (datastore *DB) GetSymbols(exchange string) ([]string, error)

func (*DB) GetTopAssetByMcap added in v1.2.0

func (datastore *DB) GetTopAssetByMcap(symbol string, relDB *RelDB) (topAsset dia.Asset, err error)

GetTopAssetByMcap returns the asset with highest market cap among all assets with symbol @symbol.

func (*DB) GetTopAssetByVolume added in v1.2.0

func (datastore *DB) GetTopAssetByVolume(symbol string, relDB *RelDB) (topAsset dia.Asset, err error)

GetTopAssetByVolume returns the asset with highest volume among all assets with symbol @symbol. This method allows us to use all API endpoints called on a symbol.

func (*DB) GetTradeInflux

func (datastore *DB) GetTradeInflux(asset dia.Asset, exchange string, endtime time.Time, window time.Duration) (*dia.Trade, error)

GetTradeInflux returns the latest trade of @asset on @exchange before @timestamp in the time-range [endtime-window, endtime].

func (*DB) GetTradePrice14d

func (datastore *DB) GetTradePrice14d(asset dia.Asset, exchange string) (*dia.Trade, error)

func (*DB) GetTradePrice1h

func (datastore *DB) GetTradePrice1h(asset dia.Asset, exchange string) (*dia.Trade, error)

func (*DB) GetTradePrice24h

func (datastore *DB) GetTradePrice24h(asset dia.Asset, exchange string) (*dia.Trade, error)

func (*DB) GetTradePrice30d

func (datastore *DB) GetTradePrice30d(asset dia.Asset, exchange string) (*dia.Trade, error)

func (*DB) GetTradePrice7d

func (datastore *DB) GetTradePrice7d(asset dia.Asset, exchange string) (*dia.Trade, error)

func (*DB) GetTradePriceBefore

func (datastore *DB) GetTradePriceBefore(asset dia.Asset, exchange string, timestamp time.Time, window time.Duration) (*dia.Trade, error)

func (*DB) GetTradesByExchanges added in v1.2.0

func (datastore *DB) GetTradesByExchanges(asset dia.Asset, baseassets []dia.Asset, exchanges []string, startTime, endTime time.Time) ([]dia.Trade, error)

func (*DB) GetTradesByExchangesAndBaseAssets added in v1.4.2

func (datastore *DB) GetTradesByExchangesAndBaseAssets(asset dia.Asset, baseassets []dia.Asset, exchanges []string, startTime, endTime time.Time) ([]dia.Trade, error)

func (*DB) GetTradesByExchangesBatched added in v1.3.5

func (datastore *DB) GetTradesByExchangesBatched(quoteasset dia.Asset, baseassets []dia.Asset, exchanges []string, startTimes, endTimes []time.Time) ([]dia.Trade, error)

GetTradesByExchangesBatched executes multiple select queries on the trades table in one batch. The time ranges of the queries are given by the intervals [startTimes[i], endTimes[i]].

func (*DB) GetTradesByExchangesBatchedFull added in v1.4.2

func (datastore *DB) GetTradesByExchangesBatchedFull(quoteasset dia.Asset, baseassets []dia.Asset, exchanges []string, returnBasetoken bool, startTimes, endTimes []time.Time) ([]dia.Trade, error)

GetTradesByExchangesBatchedFull executes multiple select queries on the trades table in one batch. The time ranges of the queries are given by the intervals [startTimes[i], endTimes[i]].

func (*DB) GetTradesByExchangesFull added in v1.4.2

func (datastore *DB) GetTradesByExchangesFull(asset dia.Asset, baseassets []dia.Asset, exchanges []string, returnBasetoken bool, startTime, endTime time.Time) ([]dia.Trade, error)

func (*DB) GetVWAPFirefly added in v1.4.2

func (datastore *DB) GetVWAPFirefly(foreignName string, starttime time.Time, endtime time.Time) (values []float64, timestamps []time.Time, err error)

func (*DB) GetVolume

func (datastore *DB) GetVolume(asset dia.Asset) (*float64, error)

GetVolume returns the 24h trading volume of @asset across exchanges.

func (*DB) GetVolumeInflux

func (datastore *DB) GetVolumeInflux(asset dia.Asset, starttime time.Time, endtime time.Time) (float64, error)

GetVolumeInflux returns the trade volume of @asset in the time range @starttime - @endtime. It uses the VOL filter from the filter services.

func (*DB) RemoveExpiredOptionMeta

func (datastore *DB) RemoveExpiredOptionMeta(baseCurrency string) error

func (*DB) SaveCVIInflux

func (datastore *DB) SaveCVIInflux(cviValue float64, observationTime time.Time) error

func (*DB) SaveETHCVIInflux

func (datastore *DB) SaveETHCVIInflux(cviValue float64, observationTime time.Time) error

func (*DB) SaveFilterInflux

func (datastore *DB) SaveFilterInflux(filter string, asset dia.Asset, exchange string, value float64, t time.Time) error

SaveFilterInflux stores a filter point in influx.

func (*DB) SaveForeignQuotationInflux

func (datastore *DB) SaveForeignQuotationInflux(fq ForeignQuotation) error

SaveForeignQuotationInflux stores a quotation which is not from DIA to an influx batch

func (*DB) SaveIndexEngineTimeInflux added in v1.2.0

func (datastore *DB) SaveIndexEngineTimeInflux(tags map[string]string, fields map[string]interface{}, timestamp time.Time) error

func (*DB) SaveOptionOrderbookDatumInflux

func (datastore *DB) SaveOptionOrderbookDatumInflux(t dia.OptionOrderbookDatum) error

func (*DB) SavePoolInflux added in v1.4.2

func (datastore *DB) SavePoolInflux(p dia.Pool) error

SavePoolInflux stores a DEX pool in influx.

func (*DB) SaveSupplyInflux

func (datastore *DB) SaveSupplyInflux(supply *dia.Supply) error

func (*DB) SaveTradeInflux

func (datastore *DB) SaveTradeInflux(t *dia.Trade) error

SaveTradeInflux stores a trade in influx. Flushed when more than maxPoints in batch. Wrapper around SaveTradeInfluxToTable.

func (*DB) SaveTradeInfluxToTable added in v1.2.0

func (datastore *DB) SaveTradeInfluxToTable(t *dia.Trade, table string) error

SaveTradeInfluxToTable stores a trade in influx into @table. Flushed when more than maxPoints in batch.

func (*DB) SetAssetPriceUSD added in v1.2.0

func (datastore *DB) SetAssetPriceUSD(asset dia.Asset, price float64, timestamp time.Time) error

SetAssetPriceUSD stores the price of @asset in influx and the caching layer. The latter only holds the most recent price point.

func (*DB) SetAssetQuotation added in v1.2.0

func (datastore *DB) SetAssetQuotation(quotation *AssetQuotation) error

SetAssetQuotation stores the full quotation of @asset into influx and cache.

func (*DB) SetAssetQuotationCache added in v1.2.0

func (datastore *DB) SetAssetQuotationCache(quotation *AssetQuotation, check bool) (bool, error)

SetAssetQuotationCache stores @quotation in redis cache. If @check is true, it checks for a more recent quotation first.

func (*DB) SetAvailablePairs added in v1.2.0

func (datastore *DB) SetAvailablePairs(exchange string, pairs []dia.ExchangePair) error

SetAvailablePairs stores @pairs in redis TO DO: Setter and getter should act on RelDB

func (*DB) SetBatchFiatPriceInflux added in v1.2.0

func (datastore *DB) SetBatchFiatPriceInflux(fiatQuotations []*FiatQuotation) error

func (*DB) SetCommit

func (datastore *DB) SetCommit(commit GithubCommit) error

SetCommit stores a github commit in influx

func (*DB) SetCurrencyChange

func (datastore *DB) SetCurrencyChange(cc *Change) error

func (*DB) SetDefiProtocol

func (datastore *DB) SetDefiProtocol(protocol dia.DefiProtocol) error

SetDefiProtocol writes @protocol into redis

func (*DB) SetDefiRateInflux

func (datastore *DB) SetDefiRateInflux(rate *dia.DefiRate) error

func (*DB) SetDefiStateInflux

func (datastore *DB) SetDefiStateInflux(state *dia.DefiProtocolState) error

func (*DB) SetDiaCirculatingSupply added in v1.4.2

func (db *DB) SetDiaCirculatingSupply(circulatingSupply float64) error

func (*DB) SetDiaTotalSupply added in v1.4.2

func (db *DB) SetDiaTotalSupply(totalSupply float64) error

func (*DB) SetFilter

func (datastore *DB) SetFilter(filter string, asset dia.Asset, exchange string, value float64, t time.Time) error

SetFilter stores a filter point

func (*DB) SetInfluxClient added in v1.2.0

func (datastore *DB) SetInfluxClient(url string)

SetInfluxClient resets influx's client url to @url.

func (*DB) SetInterestRate

func (datastore *DB) SetInterestRate(ir *InterestRate) error

SetInterestRate writes the interest rate struct ir into the Redis database and writes rate type into a set of all available rates (if not done yet).

func (*DB) SetItinData

func (datastore *DB) SetItinData(token dia.ItinToken) error

func (*DB) SetLastTradeTimeForExchange

func (datastore *DB) SetLastTradeTimeForExchange(asset dia.Asset, exchange string, t time.Time) error

func (*DB) SetOptionMeta

func (datastore *DB) SetOptionMeta(optionMeta *dia.OptionMeta) error

func (*DB) SetPriceEUR

func (datastore *DB) SetPriceEUR(symbol string, price float64) error

func (*DB) SetPriceUSD

func (datastore *DB) SetPriceUSD(symbol string, price float64) error

func (*DB) SetQuotation

func (datastore *DB) SetQuotation(quotation *Quotation) error

func (*DB) SetQuotationEUR

func (datastore *DB) SetQuotationEUR(quotation *Quotation) error

func (*DB) SetSingleFiatPriceRedis added in v1.2.0

func (datastore *DB) SetSingleFiatPriceRedis(fiatQuotation *FiatQuotation) error

func (*DB) SetStockQuotation added in v1.2.0

func (datastore *DB) SetStockQuotation(sq StockQuotation) error

SetStockQuotationInflux stores a stock quotation to an influx batch.

func (*DB) SetSupply

func (datastore *DB) SetSupply(supply *dia.Supply) error

func (*DB) SetVWAPFirefly added in v1.4.2

func (datastore *DB) SetVWAPFirefly(foreignName string, value float64, timestamp time.Time) error

func (*DB) Sum24HoursExchange

func (datastore *DB) Sum24HoursExchange(exchange string) (volume float64, err error)

Sum24HoursExchange returns 24h trade volume on @exchange using VOL120 filtered data from influx.

func (*DB) Sum24HoursInflux

func (datastore *DB) Sum24HoursInflux(asset dia.Asset, exchange string, filter string) (*float64, error)

Sum24HoursInflux returns the 24h volume of @asset on @exchange using the filter @filter.

func (*DB) WriteBatchInflux

func (datastore *DB) WriteBatchInflux() (err error)

type Datastore

type Datastore interface {
	SetInfluxClient(url string)
	Get24HVolumePerExchange(asset dia.Asset) ([]dia.ExchangeVolume, error)
	GetVolume(asset dia.Asset) (*float64, error)

	// Deprecating
	SetPriceUSD(symbol string, price float64) error
	SetPriceEUR(symbol string, price float64) error
	GetPriceUSD(symbol string) (float64, error)
	GetQuotation(symbol string) (*Quotation, error)
	SetQuotation(quotation *Quotation) error
	SetQuotationEUR(quotation *Quotation) error
	SetBatchFiatPriceInflux(fqs []*FiatQuotation) error
	SetSingleFiatPriceRedis(fiatQuotation *FiatQuotation) error

	GetLatestSupply(string, *RelDB) (*dia.Supply, error)
	GetSupplyCache(asset dia.Asset) (dia.Supply, error)
	GetSupply(string, time.Time, time.Time, *RelDB) ([]dia.Supply, error)
	SetSupply(supply *dia.Supply) error
	GetSupplyInflux(dia.Asset, time.Time, time.Time) ([]dia.Supply, error)

	SetDiaTotalSupply(totalSupply float64) error
	GetDiaTotalSupply() (float64, error)
	SetDiaCirculatingSupply(circulatingSupply float64) error
	GetDiaCirculatingSupply() (float64, error)

	GetSymbols(exchange string) ([]string, error)
	// Deprecating: GetExchangesForSymbol(symbol string) ([]string, error)
	// Deprecating: GetSymbolExchangeDetails(symbol string, exchange string) (*SymbolExchangeDetails, error)
	GetLastTradeTimeForExchange(asset dia.Asset, exchange string) (*time.Time, error)
	SetLastTradeTimeForExchange(asset dia.Asset, exchange string, t time.Time) error
	GetFirstTradeDate(table string) (time.Time, error)
	SaveTradeInflux(t *dia.Trade) error
	SaveTradeInfluxToTable(t *dia.Trade, table string) error
	GetTradeInflux(dia.Asset, string, time.Time, time.Duration) (*dia.Trade, error)
	SaveFilterInflux(filter string, asset dia.Asset, exchange string, value float64, t time.Time) error
	GetLastTrades(asset dia.Asset, exchange string, maxTrades int, fullAsset bool) ([]dia.Trade, error)
	GetAllTrades(t time.Time, maxTrades int) ([]dia.Trade, error)
	GetTradesByExchanges(asset dia.Asset, baseAssets []dia.Asset, exchange []string, startTime, endTime time.Time) ([]dia.Trade, error)
	GetTradesByExchangesFull(asset dia.Asset, baseAssets []dia.Asset, exchanges []string, returnBasetoken bool, startTime, endTime time.Time) ([]dia.Trade, error)
	GetTradesByExchangesBatched(asset dia.Asset, baseAssets []dia.Asset, exchanges []string, startTimes, endTimes []time.Time) ([]dia.Trade, error)
	GetTradesByExchangesBatchedFull(asset dia.Asset, baseAssets []dia.Asset, exchanges []string, returnBasetoken bool, startTimes, endTimes []time.Time) ([]dia.Trade, error)
	GetOldTradesFromInflux(table string, exchange string, verified bool, timeInit, timeFinal time.Time) ([]dia.Trade, error)
	CopyInfluxMeasurements(dbOrigin string, dbDestination string, tableOrigin string, tableDestination string, timeInit time.Time, timeFinal time.Time) (int64, error)
	DeleteInfluxMeasurement(dbName string, tableName string, timeInit time.Time, timeFinal time.Time) error

	Flush() error
	ExecuteRedisPipe() error
	FlushRedisPipe() error
	GetFilterPoints(filter string, exchange string, symbol string, scale string, starttime time.Time, endtime time.Time) (*Points, error)
	GetFilterPointsAsset(filter string, exchange string, address string, blockchain string, starttime time.Time, endtime time.Time) (*Points, error)
	SetFilter(filterName string, asset dia.Asset, exchange string, value float64, t time.Time) error
	GetLastPriceBefore(asset dia.Asset, filter string, exchange string, timestamp time.Time) (Price, error)
	SetAvailablePairs(exchange string, pairs []dia.ExchangePair) error
	GetAvailablePairs(exchange string) ([]dia.ExchangePair, error)
	SetCurrencyChange(cc *Change) error
	GetCurrencyChange() (*Change, error)

	SetOptionMeta(optionMeta *dia.OptionMeta) error
	GetOptionMeta(baseCurrency string) ([]dia.OptionMeta, error)
	SaveCVIInflux(float64, time.Time) error
	GetCVIInflux(time.Time, time.Time, string) ([]dia.CviDataPoint, error)
	GetVolumeInflux(dia.Asset, time.Time, time.Time) (float64, error)
	// Get24Volume(symbol string, exchange string) (float64, error)
	// Get24VolumeExchange(exchange string) (float64, error)
	Sum24HoursInflux(asset dia.Asset, exchange string, filter string) (*float64, error)
	Sum24HoursExchange(exchange string) (float64, error)
	GetNumTrades(exchange string) (int64, error)
	GetNumTradesSeries(
		exchange string,
		pair string,
		starttime time.Time,
		endtime time.Time,
		grouping string,
		quotetoken dia.Asset,
		basetoken dia.Asset,
	) ([]int, error)

	// New Asset pricing methods: 23/02/2021
	SetAssetPriceUSD(asset dia.Asset, price float64, timestamp time.Time) error
	GetAssetPriceUSD(asset dia.Asset, timestamp time.Time) (float64, error)
	GetAssetPriceUSDLatest(asset dia.Asset) (price float64, err error)
	SetAssetQuotation(quotation *AssetQuotation) error
	GetAssetQuotation(asset dia.Asset, timestamp time.Time) (*AssetQuotation, error)
	GetAssetQuotations(asset dia.Asset, starttime time.Time, endtime time.Time) ([]AssetQuotation, error)
	GetAssetQuotationLatest(asset dia.Asset) (*AssetQuotation, error)
	GetSortedAssetQuotations(assets []dia.Asset) ([]AssetQuotation, error)
	AddAssetQuotationsToBatch(quotations []*AssetQuotation) error
	SetAssetQuotationCache(quotation *AssetQuotation, check bool) (bool, error)
	GetAssetQuotationCache(asset dia.Asset) (*AssetQuotation, error)
	GetAssetPriceUSDCache(asset dia.Asset) (price float64, err error)
	GetTopAssetByMcap(symbol string, relDB *RelDB) (dia.Asset, error)
	GetTopAssetByVolume(symbol string, relDB *RelDB) (topAsset dia.Asset, err error)
	GetAssetsWithVOLInflux(timeInit time.Time) ([]dia.Asset, error)

	// DEX Pool  methods
	SavePoolInflux(p dia.Pool) error
	GetPoolInflux(poolAddress string, starttime time.Time, endtime time.Time) ([]dia.Pool, error)

	// Market Measures
	GetAssetsMarketCap(asset dia.Asset) (float64, error)

	// Interest rates' methods
	SetInterestRate(ir *InterestRate) error
	GetInterestRate(symbol, date string) (*InterestRate, error)
	GetInterestRateRange(symbol, dateInit, dateFinal string) ([]*InterestRate, error)
	GetRatesMeta() (RatesMeta []InterestRateMeta, err error)
	GetCompoundedIndex(symbol string, date time.Time, daysPerYear int, rounding int) (*InterestRate, error)
	GetCompoundedIndexRange(symbol string, dateInit, dateFinal time.Time, daysPerYear int, rounding int) ([]*InterestRate, error)
	GetCompoundedAvg(symbol string, date time.Time, calDays, daysPerYear int, rounding int) (*InterestRate, error)
	GetCompoundedAvgRange(symbol string, dateInit, dateFinal time.Time, calDays, daysPerYear int, rounding int) ([]*InterestRate, error)
	GetCompoundedAvgDIARange(symbol string, dateInit, dateFinal time.Time, calDays, daysPerYear int, rounding int) ([]*InterestRate, error)

	// Itin methods
	SetItinData(token dia.ItinToken) error
	GetItinBySymbol(symbol string) (dia.ItinToken, error)

	// Defi rates
	SetDefiProtocol(dia.DefiProtocol) error
	GetDefiProtocol(string) (dia.DefiProtocol, error)
	GetDefiProtocols() ([]dia.DefiProtocol, error)

	GetDefiRateInflux(time.Time, time.Time, string, string) ([]dia.DefiRate, error)
	SetDefiRateInflux(rate *dia.DefiRate) error

	GetDefiStateInflux(time.Time, time.Time, string) ([]dia.DefiProtocolState, error)
	SetDefiStateInflux(state *dia.DefiProtocolState) error

	// Foreign quotation methods
	SaveForeignQuotationInflux(fq ForeignQuotation) error
	GetForeignQuotationInflux(symbol, source string, timestamp time.Time) (ForeignQuotation, error)
	GetForeignPriceYesterday(symbol, source string) (float64, error)
	GetForeignSymbolsInflux(source string) (symbols []SymbolShort, err error)

	SetVWAPFirefly(foreignName string, value float64, timestamp time.Time) error
	GetVWAPFirefly(foreignName string, starttime time.Time, endtime time.Time) ([]float64, []time.Time, error)

	// Gold token methods
	GetPaxgQuotationOunces() (*Quotation, error)
	GetPaxgQuotationGrams() (*Quotation, error)

	SaveIndexEngineTimeInflux(map[string]string, map[string]interface{}, time.Time) error
	GetBenchmarkedIndexValuesInflux(string, time.Time, time.Time) (BenchmarkedIndex, error)

	// Github methods
	SetCommit(commit GithubCommit) error
	GetCommitByDate(user, repository string, date time.Time) (GithubCommit, error)
	GetCommitByHash(user, repository, hash string) (GithubCommit, error)
	GetLatestCommit(user, repository string) (GithubCommit, error)

	// Stock methods
	SetStockQuotation(sq StockQuotation) error
	GetStockQuotation(source string, symbol string, timeInit time.Time, timeFinal time.Time) ([]StockQuotation, error)
	GetStockSymbols() (map[Stock]string, error)
}

type DefiScore

type DefiScore struct {
	Protocol        string
	Symbol          string
	Score           float64
	LiquidityIndex  float64
	CollateralIndex float64
}

type FiatQuotation added in v1.2.0

type FiatQuotation struct {
	QuoteCurrency string
	BaseCurrency  string
	Price         float64
	Source        string
	Time          time.Time
}

func (*FiatQuotation) MarshalBinary added in v1.2.0

func (fq *FiatQuotation) MarshalBinary() ([]byte, error)

MarshalBinary for fiat quotations

func (*FiatQuotation) UnmarshalBinary added in v1.2.0

func (fq *FiatQuotation) UnmarshalBinary(data []byte) error

UnmarshalBinary for fiat quotations

type ForeignQuotation

type ForeignQuotation struct {
	Symbol             string
	Name               string
	Price              float64
	PriceYesterday     float64
	VolumeYesterdayUSD float64
	Source             string
	Time               time.Time
	ITIN               string
}

func (*ForeignQuotation) MarshalBinary

func (fq *ForeignQuotation) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*ForeignQuotation) UnmarshalBinary

func (fq *ForeignQuotation) UnmarshalBinary(data []byte) error

UnmarshalBinary -

type GithubCommit

type GithubCommit struct {
	User            string
	Repository      string
	Hash            string
	Timestamp       time.Time
	Author          Author
	NumAdditions    int
	NumDeletions    int
	NumChangedFiles int
	Message         string
}

type InterestRate

type InterestRate struct {
	Symbol          string
	Value           float64
	PublicationTime time.Time
	EffectiveDate   time.Time
	Source          string
}

func (*InterestRate) MarshalBinary

func (e *InterestRate) MarshalBinary() ([]byte, error)

MarshalBinary for interest rates

func (*InterestRate) UnmarshalBinary

func (e *InterestRate) UnmarshalBinary(data []byte) error

UnmarshalBinary for interest rates

type InterestRateMeta

type InterestRateMeta struct {
	Symbol    string
	FirstDate time.Time
	Decimals  int
	Issuer    string
}

type Pairs

type Pairs struct {
	Pairs []dia.ExchangePair
}

type Point

type Point struct {
	UnixTime int64
	Value    float64
}

Point is used exclusively for chart points in the API

type Points

type Points struct {
	DataPoints []clientInfluxdb.Result
}

func (*Points) MarshalBinary

func (e *Points) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*Points) UnmarshalBinary

func (e *Points) UnmarshalBinary(data []byte) error

type Price

type Price struct {
	Symbol string
	Name   string
	Price  float64
	Time   time.Time
}

type Quotation

type Quotation struct {
	Symbol             string
	Name               string
	Price              float64
	PriceYesterday     *float64
	VolumeYesterdayUSD *float64
	Source             string
	Time               time.Time
	ITIN               string
}

Quotation is deprecating. Going to be substituted by AssetQuotation

func (*Quotation) MarshalBinary

func (e *Quotation) MarshalBinary() ([]byte, error)

MarshalBinary for quotations

func (*Quotation) UnmarshalBinary

func (e *Quotation) UnmarshalBinary(data []byte) error

UnmarshalBinary for quotations

type RelDB

type RelDB struct {
	URI string
	// contains filtered or unexported fields
}

RelDB is a relative database with redis caching layer.

func NewCachingLayer

func NewCachingLayer() (*RelDB, error)

NewCachingLayer returns a datastore with redis caching layer and without postgres client.

func NewPostgresDataStore

func NewPostgresDataStore() (*RelDB, error)

NewPostgresDataStore returns a datastore with postgres client and without redis caching layer.

func NewRelDataStore

func NewRelDataStore() (*RelDB, error)

NewRelDataStore returns a datastore with postgres client and redis cache.

func NewRelDataStoreWithOptions

func NewRelDataStoreWithOptions(withPostgres bool, withRedis bool) (*RelDB, error)

NewRelDataStoreWithOptions returns a postgres datastore and/or redis caching layer.

func (*RelDB) Count added in v1.2.0

func (rdb *RelDB) Count() (count uint32, err error)

Count returns the number of assets stored in postgres

func (*RelDB) CountCache added in v1.2.0

func (rdb *RelDB) CountCache() (uint32, error)

CountCache returns the number of assets in the cache

func (*RelDB) GetActiveAsset added in v1.2.0

func (rdb *RelDB) GetActiveAsset(limit, skip int) (assets []dia.Asset, assetIds []string, err error)

func (*RelDB) GetActiveAssetCount added in v1.2.0

func (rdb *RelDB) GetActiveAssetCount() (count int, err error)

func (*RelDB) GetAggVolumesByExchange added in v1.4.2

func (rdb *RelDB) GetAggVolumesByExchange(asset dia.Asset, starttime time.Time, endtime time.Time) (exchVolumes []dia.ExchangeVolumesList, err error)

GetAggVolumesByExchange returns all aggregated volumes in the time-range @starttime - @endtime, sorted by exchanges.

func (*RelDB) GetAggVolumesByPair added in v1.4.2

func (rdb *RelDB) GetAggVolumesByPair(asset dia.Asset, starttime time.Time, endtime time.Time) (allPairVolumes []dia.PairVolumesList, err error)

GetAggVolumesByPair returns all aggregated volumes in the time-range @starttime - @endtime, sorted by pairs. Asset should be given fully.

func (*RelDB) GetAggregatedVolumes added in v1.4.2

func (rdb *RelDB) GetAggregatedVolumes(asset dia.Asset, starttime time.Time, endtime time.Time) (aggVolumes []dia.AggregatedVolume, err error)

GetAggregatedVolume returns all aggregated volumes in the time-range @starttime - @endtime.

func (*RelDB) GetAllAssets added in v1.2.0

func (rdb *RelDB) GetAllAssets(blockchain string) (assets []dia.Asset, err error)

GetAllAssets returns all assets on @blockchain from asset table.

func (*RelDB) GetAllAssetsBlockchains added in v1.4.2

func (rdb *RelDB) GetAllAssetsBlockchains() ([]string, error)

GetAllAssetsBlockchains returns all blockchain names existent in the asset table.

func (*RelDB) GetAllBlockchains added in v1.2.0

func (rdb *RelDB) GetAllBlockchains(fullAsset bool) ([]dia.BlockChain, error)

GetAllBlockchains returns all blockchains from the blockchain table. If fullAsset=true it returns the complete native token as asset, otherwise only its symbol string.

func (*RelDB) GetAllChainConfig added in v1.4.2

func (rdb *RelDB) GetAllChainConfig() (chainconfigs []dia.ChainConfig, err error)

func (*RelDB) GetAllExchanges added in v1.4.2

func (rdb *RelDB) GetAllExchanges() (exchanges []dia.Exchange, err error)

GetAllExchanges returns all exchanges existent in the exchange table.

func (*RelDB) GetAllNFTClasses

func (rdb *RelDB) GetAllNFTClasses(blockchain string) (nftClasses []dia.NFTClass, err error)

GetAllNFTClasses returns all NFT classes on @blockchain.

func (*RelDB) GetAllPoolAddrsExchange added in v1.4.2

func (rdb *RelDB) GetAllPoolAddrsExchange(exchange string) (addresses []string, err error)

GetAllPoolAddrsExchange returns all pool addresses available for @exchange.

func (*RelDB) GetAsset added in v1.2.0

func (rdb *RelDB) GetAsset(address, blockchain string) (asset dia.Asset, err error)

GetAsset is the standard method in order to uniquely retrieve an asset from asset table.

func (*RelDB) GetAssetByGroupID added in v1.4.2

func (rdb *RelDB) GetAssetByGroupID(group_id string) (assets []dia.Asset, err error)

func (*RelDB) GetAssetByID added in v1.2.0

func (rdb *RelDB) GetAssetByID(assetID string) (asset dia.Asset, err error)

GetAssetByID returns an asset by its uuid

func (*RelDB) GetAssetCache added in v1.2.0

func (rdb *RelDB) GetAssetCache(assetID string) (dia.Asset, error)

GetAssetCache returns an asset by its asset_id as defined in asset table in postgres

func (*RelDB) GetAssetExchange added in v1.2.0

func (rdb *RelDB) GetAssetExchange(symbol string) (exchnages []string, err error)

GetAssetExchnage returns all assets which share the symbol ticker @symbol.

func (*RelDB) GetAssetID added in v1.2.0

func (rdb *RelDB) GetAssetID(asset dia.Asset) (ID string, err error)

GetAssetID returns the unique identifier of @asset in postgres table asset, if the entry exists.

func (*RelDB) GetAssetMap added in v1.4.2

func (rdb *RelDB) GetAssetMap(asset_id string) (ID string, err error)

func (*RelDB) GetAssetSource added in v1.4.2

func (rdb *RelDB) GetAssetSource(asset dia.Asset, onlycex bool) (exchanges []string, err error)

func (*RelDB) GetAssetVolume24H added in v1.2.0

func (rdb *RelDB) GetAssetVolume24H(asset dia.Asset) (volume float64, err error)

func (*RelDB) GetAssets added in v1.2.0

func (rdb *RelDB) GetAssets(symbol string) (assets []dia.Asset, err error)

GetAssets returns all assets which share the symbol ticker @symbol.

func (*RelDB) GetAssetsByAddress added in v1.4.2

func (rdb *RelDB) GetAssetsByAddress(address string) (assets []dia.Asset, err error)

GetAssetsByAddress returns a (possibly multiple) dia.Asset by its address from postgres.

func (*RelDB) GetAssetsBySymbolName added in v1.2.0

func (rdb *RelDB) GetAssetsBySymbolName(symbol, name string) (assets []dia.Asset, err error)

GetAssetsBySymbolName returns a (possibly multiple) dia.Asset by its symbol and name from postgres. If @name is an empty string, it returns all assets with @symbol. If @symbol is an empty string, it returns all assets with @name.

func (*RelDB) GetAssetsWithVOL added in v1.2.0

func (rdb *RelDB) GetAssetsWithVOL(numAssets int64, skip int64, onlycex bool, substring string) (volumeSortedAssets []dia.AssetVolume, err error)

GetAssetsWithVOL returns the first @numAssets assets with entry in the assetvolume table, sorted by volume in descending order. If @numAssets==0, all assets are returned. If @substring is not the empty string, results are filtered by the first letters being @substring.

func (*RelDB) GetAssetsWithVOLRange added in v1.4.2

func (rdb *RelDB) GetAssetsWithVOLRange(starttime time.Time, endtime time.Time) (assets []dia.AssetVolume, err error)

GetAssetsWithVOLRange returns all assets from assetvolume table that have a timestamp in the time-range (@starttime,@endtime].

func (*RelDB) GetBlockData added in v1.2.0

func (rdb *RelDB) GetBlockData(blockchain string, blocknumber int64) (dia.BlockData, error)

GetBlockData returns information on the block with @blocknumber on @blockchain.

func (*RelDB) GetBlockchain added in v1.2.0

func (rdb *RelDB) GetBlockchain(name string) (blockchain dia.BlockChain, err error)

func (*RelDB) GetByLimit added in v1.2.0

func (rdb *RelDB) GetByLimit(limit, skip uint32) (assets []dia.Asset, assetIds []string, err error)

func (*RelDB) GetExchange added in v1.4.2

func (rdb *RelDB) GetExchange(name string) (exchange dia.Exchange, err error)

func (*RelDB) GetExchangeNames added in v1.4.2

func (rdb *RelDB) GetExchangeNames() (allExchanges []string, err error)

GetExchangeNames returns the names of all available exchanges.

func (*RelDB) GetExchangePair added in v1.2.0

func (rdb *RelDB) GetExchangePair(exchange string, foreignname string) (dia.ExchangePair, error)

GetExchangePair returns the unique exchange pair given by @exchange and @foreignname from postgres. It also returns the underlying pair if existent.

func (*RelDB) GetExchangePairCache added in v1.2.0

func (rdb *RelDB) GetExchangePairCache(exchange string, foreignName string) (dia.ExchangePair, error)

GetExchangePairCache returns an exchange pair by @exchange and @foreigName

func (*RelDB) GetExchangePairSymbols added in v1.2.0

func (rdb *RelDB) GetExchangePairSymbols(exchange string) (pairs []dia.ExchangePair, err error)

GetExchangePairSymbols returns all foreign names on @exchange from exchangepair table.

func (*RelDB) GetExchangeSymbolAssetID added in v1.2.0

func (rdb *RelDB) GetExchangeSymbolAssetID(exchange string, symbol string) (assetID string, verified bool, err error)

GetExchangeSymbolAssetID returns the ID of the unique asset associated to @symbol on @exchange in case the symbol is verified. An empty string if not.

func (*RelDB) GetExchangeSymbols added in v1.2.0

func (rdb *RelDB) GetExchangeSymbols(exchange string, substring string) (symbols []string, err error)

GetExchangeSymbols returns all symbols traded on @exchange. If @exchange is the empty string, all symbols are returned. If @substring is not the empty string, all symbols that begin with @substring (case insensitive) are returned.

func (*RelDB) GetExchangesForSymbol added in v1.2.0

func (rdb *RelDB) GetExchangesForSymbol(symbol string) (exchanges []string, err error)

func (*RelDB) GetFiatAssetBySymbol added in v1.2.0

func (rdb *RelDB) GetFiatAssetBySymbol(symbol string) (asset dia.Asset, err error)

GetFiatAssetBySymbol returns a fiat asset by its symbol. This is possible as fiat currencies are uniquely defined by their symbol.

func (*RelDB) GetKeyAsset added in v1.2.0

func (rdb *RelDB) GetKeyAsset(asset dia.Asset) (string, error)

GetKeyAsset returns an asset's key in the redis cache of the asset table. @assetID refers to the primary key asset_id in the asset table.

func (*RelDB) GetKeys

func (rdb *RelDB) GetKeys(table string) (keys []string, err error)

GetKeys returns a slice of strings holding the names of the keys of @table in postgres

func (*RelDB) GetLastBlockBlockscraper added in v1.2.0

func (rdb *RelDB) GetLastBlockBlockscraper(blockchain string) (blockNumber int64, err error)

GetLastBlockBlockscraper returns the last scraped block on @blockchain for block data scrapers.

func (*RelDB) GetLastBlockNFTBid added in v1.2.0

func (rdb *RelDB) GetLastBlockNFTBid(nftclass dia.NFTClass) (blocknumber uint64, err error)

GetLastBlockNFTBid returns the last blocknumber that was scraped for bids in @nftclass.

func (*RelDB) GetLastBlockNFTOffer added in v1.4.2

func (rdb *RelDB) GetLastBlockNFTOffer(nftclass dia.NFTClass) (blocknumber uint64, err error)

GetLastBlockNFTOffer returns the last blocknumber that was scraped for offers in @nftclass.

func (*RelDB) GetLastBlockNFTTrade

func (rdb *RelDB) GetLastBlockNFTTrade(nftclass dia.NFTClass) (blocknumber uint64, err error)

GetLastBlockNFTTtrade returns the last blocknumber that was scraped for trades in @nftclass.

func (*RelDB) GetLastBlockheightTopshot added in v1.2.0

func (rdb *RelDB) GetLastBlockheightTopshot(upperBound time.Time) (uint64, error)

GetLastBlockheightTopshot returns the last block number before timestamp given by @upperBound.

func (*RelDB) GetLastNFTBid added in v1.2.0

func (rdb *RelDB) GetLastNFTBid(address string, blockchain string, tokenID string, blockNumber uint64, blockPosition uint) (nftBid dia.NFTBid, err error)

GetLastNFTBid returns the last bid on the nft with @address and @tokenID. Here, 'last' refers to block number and block position smaller or equal (in the case of block number) than @blockNumber and @blockPosition resp.

func (*RelDB) GetLastNFTOffer added in v1.2.0

func (rdb *RelDB) GetLastNFTOffer(address string, blockchain string, tokenID string, blockNumber uint64, blockPosition uint) (offer dia.NFTOffer, err error)

GetLastNFTOffer returns the last offer on the nft with @address and @tokenID. Here, 'last' refers to block number and block position smaller or equal (in the case of block number) than @blockNumber and @blockPosition resp.

func (*RelDB) GetNFT

func (rdb *RelDB) GetNFT(address string, blockchain string, tokenID string) (dia.NFT, error)

func (*RelDB) GetNFTBids added in v1.4.2

func (rdb *RelDB) GetNFTBids(address string, blockchain string, tokenID string) (bids []dia.NFTBid, err error)

GetNFTBids returns all bids done on the nft given by @address, @blockchain and @tokenID.

func (*RelDB) GetNFTCategories

func (rdb *RelDB) GetNFTCategories() (categories []string, err error)

GetNFTCategories returns all available NFT categories.

func (*RelDB) GetNFTClass

func (rdb *RelDB) GetNFTClass(address string, blockchain string) (nftclass dia.NFTClass, err error)

func (*RelDB) GetNFTClassByID

func (rdb *RelDB) GetNFTClassByID(id string) (nftclass dia.NFTClass, err error)

func (*RelDB) GetNFTClassID

func (rdb *RelDB) GetNFTClassID(address string, blockchain string) (ID string, err error)

func (*RelDB) GetNFTClasses

func (rdb *RelDB) GetNFTClasses(limit, offset uint64) (nftClasses []dia.NFTClass, err error)

GetNFTClassPage returns @limit NFT classes with @offset.

func (*RelDB) GetNFTFloor added in v1.4.2

func (rdb *RelDB) GetNFTFloor(nftclass dia.NFTClass, timestamp time.Time, floorWindowSeconds time.Duration, noBundles bool) (floor float64, err error)

GetNFTFloor returns the floor price of @nftclass w.r.t. the last 24h.

func (*RelDB) GetNFTFloorLevel added in v1.4.2

func (rdb *RelDB) GetNFTFloorLevel(
	nftclass dia.NFTClass,
	timestamp time.Time,
	floorWindowSeconds time.Duration,
	currencies []dia.Asset,
	level float64,
	noBundles bool,
) (floor float64, err error)

GetNFTFloorLevel returns the floor price of @nftclass w.r.t. the last 24h. Here, floor is w.r.t the lower bound @level. For Ethereum, only trades with @currencies are taken into account.

func (*RelDB) GetNFTFloorRange added in v1.4.2

func (rdb *RelDB) GetNFTFloorRange(nftClass dia.NFTClass, starttime time.Time, endtime time.Time, floorWindowSeconds time.Duration, stepBackLimit int, noBundles bool) (floorPrices []float64, err error)

GetNFTFloorRange returns a slice of floor prices in the given time range @starttime -- @endtime.

func (*RelDB) GetNFTFloorRecursive added in v1.4.2

func (rdb *RelDB) GetNFTFloorRecursive(nftClass dia.NFTClass, timestamp time.Time, floorWindowSeconds time.Duration, stepBackLimit int, noBundles bool) (floor float64, err error)

GetNFTFloorRecursive returns the floor price of @nftclass. If necessary, it iterates back in time until it finds a floor price.

func (*RelDB) GetNFTID added in v1.2.0

func (rdb *RelDB) GetNFTID(address string, blockchain string, tokenID string) (ID string, err error)

func (*RelDB) GetNFTOffers added in v1.4.2

func (rdb *RelDB) GetNFTOffers(address string, blockchain string, tokenID string) (offers []dia.NFTOffer, err error)

GetNFTOffers returns all offers done on the nft given by @address, @blockchain and @tokenID.

func (*RelDB) GetNFTTrades added in v1.2.0

func (rdb *RelDB) GetNFTTrades(address string, blockchain string, tokenID string, starttime time.Time, endtime time.Time) (trades []dia.NFTTrade, err error)

GetNFTTrades returns all trades done on the nft given by @address, @blockchain and @tokenID.

func (*RelDB) GetNFTTradesCollection added in v1.4.2

func (rdb *RelDB) GetNFTTradesCollection(address string, blockchain string, starttime time.Time, endtime time.Time) (trades []dia.NFTTrade, err error)

GetNFTTradesCollection returns all trades done on the nft collection given by @address and @blockchain.

func (*RelDB) GetNFTVolume added in v1.4.2

func (rdb *RelDB) GetNFTVolume(address string, blockchain string, starttime time.Time, endtime time.Time) (float64, error)

GetNFTVolume returns the trade volume of a collection in the time-range (@starttime, @endtime].

func (*RelDB) GetNumNFTTrades added in v1.4.2

func (rdb *RelDB) GetNumNFTTrades(address string, blockchain string, starttime time.Time, endtime time.Time) (int, error)

GetNumNFTTrades returns the number of trades recorded in [@starttime,@endtime] on the collection on @blockchain with @address.

func (*RelDB) GetNumPairs added in v1.4.2

func (rdb *RelDB) GetNumPairs(exchange dia.Exchange) (numPairs int, err error)

GetPairs returns the number of exchangepairs/pools on @exchange.

func (*RelDB) GetPage added in v1.2.0

func (rdb *RelDB) GetPage(pageNumber uint32) (assets []dia.Asset, hasNextPage bool, err error)

GetPage returns assets per page number. @hasNext is true iff there is a non-empty next page.

func (*RelDB) GetScraperConfig added in v1.2.0

func (rdb *RelDB) GetScraperConfig(ctx context.Context, scraperName string, config ScraperConfig) error

func (*RelDB) GetScraperState added in v1.2.0

func (rdb *RelDB) GetScraperState(ctx context.Context, scraperName string, state ScraperState) error

func (*RelDB) GetSynthAssetSupply

func (rdb *RelDB) GetSynthAssetSupply(address string, blockchain string, timestamp time.Time) (synthAssetSupply dia.SynthAssetSupply, err error)

func (*RelDB) GetTopAssetByVolume added in v1.2.0

func (rdb *RelDB) GetTopAssetByVolume(symbol string) (assets []dia.Asset, err error)

func (*RelDB) GetTopNFTsEth added in v1.4.2

func (rdb *RelDB) GetTopNFTsEth(numCollections int, exchanges []string, starttime time.Time, endtime time.Time) (nftVolumes []struct {
	Name       string
	Address    string
	Blockchain string
	Volume     float64
}, err error)

GetTopNFTsEth returns a list of @numCollections NFT collections sorted by trading volume in [@starttime, @endtime] in descending order. Only takes into account trades done with ETH.

func (*RelDB) GetTradesDistribution added in v1.4.2

func (rdb *RelDB) GetTradesDistribution(asset dia.Asset, starttime time.Time, endtime time.Time) (tradesDistributions []dia.TradesDistribution, err error)

GetTradesDistribution returns all trades distribution parameters in the time-range @starttime - @endtime.

func (*RelDB) GetUnverifiedExchangeSymbols added in v1.2.0

func (rdb *RelDB) GetUnverifiedExchangeSymbols(exchange string) (symbols []string, err error)

GetUnverifiedExchangeSymbols returns all symbols from @exchange which haven't been verified yet.

func (*RelDB) IdentifyAsset added in v1.2.0

func (rdb *RelDB) IdentifyAsset(asset dia.Asset) (assets []dia.Asset, err error)

IdentifyAsset looks for all assets in postgres which match the non-null fields in @asset Comment 1: The only critical field is @Decimals, as this is initialized with 0, while an asset is allowed to have zero decimals as well (for instance sngls, trxc). Comment 2: Should we add a preprocessing step in which notation is corrected corresponding to the notation in the underlying contract on the blockchain? Comment 3: Can we improve this? How to treat cases like CoinBase emitting symbol name 'Wrapped Bitcoin' instead of the correct 'Wrapped BTC', or 'United States Dollar' instead of 'United States dollar'? On idea would be to add a table with alternative names for symbol tickers, so WBTC -> [Wrapped Bitcoin, Wrapped bitcoin, Wrapped BTC,...]

func (*RelDB) InsertAssetMap added in v1.4.2

func (rdb *RelDB) InsertAssetMap(group_id string, asset_id string) error

SetAsset stores an asset into postgres.

func (*RelDB) InsertNewAssetMap added in v1.4.2

func (rdb *RelDB) InsertNewAssetMap(asset_id string) error

func (*RelDB) SearchNFT

func (rdb *RelDB) SearchNFT(searchstring string) (nfts []dia.NFT, err error)

SearchNFT returns the nft by name, or symbol, or address

func (*RelDB) SetAggregatedVolume added in v1.4.2

func (rdb *RelDB) SetAggregatedVolume(aggVol dia.AggregatedVolume) error

SetAggregatedVolume sets the aggregated volume @aggVol in postgres.

func (*RelDB) SetAsset added in v1.2.0

func (rdb *RelDB) SetAsset(asset dia.Asset) error

SetAsset stores an asset into postgres.

func (*RelDB) SetAssetCache added in v1.2.0

func (rdb *RelDB) SetAssetCache(asset dia.Asset) error

SetAssetCache stores @asset in redis, using its primary key in postgres as key. As a consequence, @asset is only cached iff it exists in postgres.

func (*RelDB) SetAssetVolume24H added in v1.2.0

func (rdb *RelDB) SetAssetVolume24H(asset dia.Asset, volume float64, timestamp time.Time) error

func (*RelDB) SetBlockData added in v1.2.0

func (rdb *RelDB) SetBlockData(blockdata dia.BlockData) error

SetBlockData stores @blockdata in postgres.

func (*RelDB) SetBlockchain added in v1.4.0

func (rdb *RelDB) SetBlockchain(blockchain dia.BlockChain) (err error)

func (*RelDB) SetChainConfig added in v1.4.2

func (rdb *RelDB) SetChainConfig(chainconfig dia.ChainConfig) (err error)

func (*RelDB) SetExchange added in v1.4.2

func (rdb *RelDB) SetExchange(exchange dia.Exchange) (err error)

func (*RelDB) SetExchangePair added in v1.2.0

func (rdb *RelDB) SetExchangePair(exchange string, pair dia.ExchangePair, cache bool) error

SetExchangePair adds @pair to exchangepair table. If cache==true, it is also cached into redis

func (*RelDB) SetExchangePairCache added in v1.2.0

func (rdb *RelDB) SetExchangePairCache(exchange string, pair dia.ExchangePair) error

SetExchangePairCache stores @pairs in redis

func (*RelDB) SetExchangeSymbol added in v1.2.0

func (rdb *RelDB) SetExchangeSymbol(exchange string, symbol string) error

SetExchangeSymbol writes unique data into exchangesymbol table if not yet in there.

func (*RelDB) SetNFT

func (rdb *RelDB) SetNFT(nft dia.NFT) error

func (*RelDB) SetNFTBid added in v1.2.0

func (rdb *RelDB) SetNFTBid(bid dia.NFTBid) error

SetNFTBid stores @bid.

func (*RelDB) SetNFTClass

func (rdb *RelDB) SetNFTClass(nftClass dia.NFTClass) error

SetNFTClass stores @nftClass in postgres.

func (*RelDB) SetNFTOffer added in v1.2.0

func (rdb *RelDB) SetNFTOffer(offer dia.NFTOffer) error

SetNFTOffer stores @offer in postgres.

func (*RelDB) SetNFTTrade

func (rdb *RelDB) SetNFTTrade(trade dia.NFTTrade) error

SetNFTTTrade is a wrapper for SetNFTTradeToTable that stores @trade into the main nfttrade table.

func (*RelDB) SetNFTTradeToTable added in v1.4.2

func (rdb *RelDB) SetNFTTradeToTable(trade dia.NFTTrade, table string) error

SetNFTTradeToTable stores into @table.

func (*RelDB) SetPool added in v1.4.2

func (rdb *RelDB) SetPool(pool dia.Pool) error

SetPool writes pool data into pool table and the underlying asset and liquidity data into the poolasset table.

func (*RelDB) SetScraperConfig added in v1.2.0

func (rdb *RelDB) SetScraperConfig(ctx context.Context, scraperName string, config ScraperConfig) error

func (*RelDB) SetScraperState added in v1.2.0

func (rdb *RelDB) SetScraperState(ctx context.Context, scraperName string, state ScraperState) error

func (*RelDB) SetSynthAssetSupply

func (rdb *RelDB) SetSynthAssetSupply(synthData dia.SynthAssetSupply) error

SetSynthAssetSupply stores a synth asset along with the underlying data into postgres.

func (*RelDB) SetTradesDistribution added in v1.4.2

func (rdb *RelDB) SetTradesDistribution(tradesDist dia.TradesDistribution) error

SetTradesDistribution sets the trades distribution parameter for @asset in postgres.

func (*RelDB) UpdateNFTClassCategory

func (rdb *RelDB) UpdateNFTClassCategory(nftclassID string, category string) (bool, error)

func (*RelDB) VerifyExchangeSymbol added in v1.2.0

func (rdb *RelDB) VerifyExchangeSymbol(exchange string, symbol string, assetID string) (bool, error)

VerifyExchangeSymbol verifies @symbol on @exchange and maps it uniquely to @assetID in asset table. It returns true if symbol,exchange is present and succesfully updated.

type RelDatastore

type RelDatastore interface {

	// --- Assets methods ---
	// --------- Persistent ---------
	SetAsset(asset dia.Asset) error
	GetAsset(address, blockchain string) (dia.Asset, error)
	GetAssetByID(ID string) (dia.Asset, error)
	GetAssetsBySymbolName(symbol, name string) ([]dia.Asset, error)
	GetAllAssets(blockchain string) ([]dia.Asset, error)
	GetFiatAssetBySymbol(symbol string) (asset dia.Asset, err error)
	IdentifyAsset(asset dia.Asset) ([]dia.Asset, error)
	GetAssetID(asset dia.Asset) (string, error)
	GetPage(pageNumber uint32) ([]dia.Asset, bool, error)
	Count() (uint32, error)
	SetAssetVolume24H(asset dia.Asset, volume float64, timestamp time.Time) error
	GetAssetVolume24H(asset dia.Asset) (float64, error)
	GetAssetsWithVOL(numAssets int64, skip int64, onlycex bool, substring string) ([]dia.AssetVolume, error)
	GetAssetSource(asset dia.Asset, onlycex bool) ([]string, error)
	GetAssetsWithVOLRange(starttime time.Time, endtime time.Time) ([]dia.AssetVolume, error)
	SetAggregatedVolume(aggVol dia.AggregatedVolume) error
	GetAggregatedVolumes(asset dia.Asset, starttime time.Time, endtime time.Time) ([]dia.AggregatedVolume, error)
	GetAggVolumesByExchange(asset dia.Asset, starttime time.Time, endtime time.Time) ([]dia.ExchangeVolumesList, error)
	GetAggVolumesByPair(asset dia.Asset, starttime time.Time, endtime time.Time) ([]dia.PairVolumesList, error)
	SetTradesDistribution(tradesDist dia.TradesDistribution) error
	GetTradesDistribution(asset dia.Asset, starttime time.Time, endtime time.Time) ([]dia.TradesDistribution, error)

	// --------------- asset methods for exchanges ---------------
	SetExchangePair(exchange string, pair dia.ExchangePair, cache bool) error
	GetExchangePair(exchange string, foreignname string) (exchangepair dia.ExchangePair, err error)
	GetExchangePairSymbols(exchange string) ([]dia.ExchangePair, error)
	GetNumPairs(exchange dia.Exchange) (int, error)
	SetExchangeSymbol(exchange string, symbol string) error
	GetExchangeSymbols(exchange string, substring string) ([]string, error)
	GetUnverifiedExchangeSymbols(exchange string) ([]string, error)
	VerifyExchangeSymbol(exchange string, symbol string, assetID string) (bool, error)
	GetExchangeSymbolAssetID(exchange string, symbol string) (string, bool, error)

	// ----------------- exchange methods -------------------
	SetExchange(exchange dia.Exchange) error
	GetExchange(name string) (dia.Exchange, error)
	GetAllExchanges() ([]dia.Exchange, error)
	GetExchangeNames() ([]string, error)

	// ----------------- pool methods -------------------
	SetPool(pool dia.Pool) error
	GetAllPoolAddrsExchange(exchange string) ([]string, error)

	// ----------------- blockchain methods -------------------
	SetBlockchain(blockchain dia.BlockChain) error
	GetBlockchain(name string) (dia.BlockChain, error)
	GetAllAssetsBlockchains() ([]string, error)
	GetAllBlockchains(fullAsset bool) ([]dia.BlockChain, error)

	// ------ Caching ------
	SetAssetCache(asset dia.Asset) error
	GetAssetCache(assetID string) (dia.Asset, error)
	SetExchangePairCache(exchange string, pair dia.ExchangePair) error
	GetExchangePairCache(exchange string, foreignName string) (dia.ExchangePair, error)
	CountCache() (uint32, error)

	// ---------------- NFT methods -------------------
	// NFT class methods
	SetNFTClass(nftClass dia.NFTClass) error
	GetAllNFTClasses(blockchain string) (nftClasses []dia.NFTClass, err error)
	GetNFTClasses(limit, offset uint64) (nftClasses []dia.NFTClass, err error)
	GetNFTClass(address string, blockchain string) (nftclass dia.NFTClass, err error)
	GetNFTClassID(address string, blockchain string) (ID string, err error)
	GetNFTClassByID(id string) (nftclass dia.NFTClass, err error)
	UpdateNFTClassCategory(nftclassID string, category string) (bool, error)
	GetNFTCategories() ([]string, error)

	// NFT methods
	SetNFT(nft dia.NFT) error
	GetNFT(address string, blockchain string, tokenID string) (dia.NFT, error)
	GetNFTID(address string, blockchain string, tokenID string) (string, error)

	// NFT trading and bidding methods
	SetNFTTrade(trade dia.NFTTrade) error
	SetNFTTradeToTable(trade dia.NFTTrade, table string) error
	GetNFTTrades(address string, blockchain string, tokenID string, starttime time.Time, endtime time.Time) ([]dia.NFTTrade, error)
	GetNFTTradesCollection(address string, blockchain string, starttime time.Time, endtime time.Time) ([]dia.NFTTrade, error)
	GetNFTOffers(address string, blockchain string, tokenID string) ([]dia.NFTOffer, error)
	GetNFTBids(address string, blockchain string, tokenID string) ([]dia.NFTBid, error)
	GetNFTFloor(nftclass dia.NFTClass, timestamp time.Time, floorWindowSeconds time.Duration, noBundles bool) (float64, error)
	GetNFTFloorLevel(nftclass dia.NFTClass, timestamp time.Time, floorWindowSeconds time.Duration, currencies []dia.Asset, level float64, noBundles bool) (float64, error)
	GetNFTFloorRecursive(nftClass dia.NFTClass, timestamp time.Time, floorWindowSeconds time.Duration, stepBackLimit int, noBundles bool) (float64, error)
	GetNFTFloorRange(nftClass dia.NFTClass, starttime time.Time, endtime time.Time, floorWindowSeconds time.Duration, stepBackLimit int, noBundles bool) ([]float64, error)
	GetLastBlockheightTopshot(upperBound time.Time) (uint64, error)
	SetNFTBid(bid dia.NFTBid) error
	GetLastNFTBid(address string, blockchain string, tokenID string, blockNumber uint64, blockPosition uint) (dia.NFTBid, error)
	GetLastBlockNFTBid(nftclass dia.NFTClass) (uint64, error)
	GetLastBlockNFTOffer(nftclass dia.NFTClass) (uint64, error)
	GetLastBlockNFTTrade(nftclass dia.NFTClass) (uint64, error)
	SetNFTOffer(offer dia.NFTOffer) error
	GetLastNFTOffer(address string, blockchain string, tokenID string, blockNumber uint64, blockPosition uint) (offer dia.NFTOffer, err error)

	// NFT stats
	GetTopNFTsEth(numCollections int, exchanges []string, starttime time.Time, endtime time.Time) ([]struct {
		Name       string
		Address    string
		Blockchain string
		Volume     float64
	}, error)
	GetNumNFTTrades(address string, blockchain string, starttime time.Time, endtime time.Time) (int, error)
	GetNFTVolume(address string, blockchain string, starttime time.Time, endtime time.Time) (float64, error)

	// General methods
	GetKeys(table string) ([]string, error)

	// Scraper config and state
	GetScraperState(ctx context.Context, scraperName string, state ScraperState) error
	SetScraperState(ctx context.Context, scraperName string, state ScraperState) error
	GetScraperConfig(ctx context.Context, scraperName string, config ScraperConfig) error
	SetScraperConfig(ctx context.Context, scraperName string, config ScraperConfig) error

	// Blockchain data
	SetBlockData(dia.BlockData) error
	GetBlockData(blockchain string, blocknumber int64) (dia.BlockData, error)
	GetLastBlockBlockscraper(blockchain string) (int64, error)

	// Synthetic assets.
	SetSynthAssetSupply(synthData dia.SynthAssetSupply) error
	GetSynthAssetSupply(address string, blockchain string, timestamp time.Time) (dia.SynthAssetSupply, error)
}

RelDatastore is a (persistent) relational database with an additional redis caching layer

type ScraperConfig added in v1.2.0

type ScraperConfig interface{}

ScraperConfig is a JSON compatible struct to keep the configuration of a scraper

type ScraperState added in v1.2.0

type ScraperState interface{}

ScraperState is a JSON compatible struct to keep the state of a scraper

type Stock added in v1.4.0

type Stock struct {
	Symbol string
	Name   string
	ISIN   string
}

type StockQuotation added in v1.2.0

type StockQuotation struct {
	Symbol     string
	Name       string
	PriceAsk   float64
	PriceBid   float64
	SizeAskLot float64
	SizeBidLot float64
	Source     string
	Time       time.Time
	ISIN       string
}

type SymbolDetails

type SymbolDetails struct {
	Change    *Change
	Coin      Coin
	Rank      int
	Exchanges []SymbolExchangeDetails
	Gfx1      *Points
}

SymbolDetails is used for API return values

func (*SymbolDetails) MarshalBinary

func (e *SymbolDetails) MarshalBinary() ([]byte, error)

MarshalBinary -

func (*SymbolDetails) UnmarshalBinary

func (e *SymbolDetails) UnmarshalBinary(data []byte) error

UnmarshalBinary -

type SymbolExchangeDetails

type SymbolExchangeDetails struct {
	Name               string
	Price              float64
	PriceYesterday     *float64
	VolumeYesterdayUSD *float64
	Time               *time.Time
	LastTrades         []dia.Trade
}

type SymbolShort

type SymbolShort struct {
	Symbol string
	ITIN   string
}

SymbolShort is used in ForeignQuotation. TO DO: Switch from ITIN to Address/Identifier

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL