db

package
v0.0.0-...-a41a74f Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2024 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = pgx.ErrNoRows

ErrNotFound indicate the record doesn't exist in DB

Functions

This section is empty.

Types

type Acquireable

type Acquireable interface {
	Acquire(ctx context.Context) (*pgxpool.Conn, error)
}

type ArkeoContract

type ArkeoContract struct {
	Entity
	ContractID          int64       `json:"contract_id" db:"id"`
	Provider            string      `json:"provider" db:"provider"`
	Service             string      `json:"service" db:"service"`
	DelegatePubkey      string      `json:"delegate_pubkey" db:"delegate_pubkey"`
	ClientPubkey        string      `json:"client_pubkey" db:"client_pubkey"`
	Height              int64       `json:"height" db:"height"`
	ContractType        string      `json:"contract_type" db:"contract_type"`
	Duration            int64       `json:"duration" db:"duration"`
	RateAsset           string      `json:"-" db:"rate_asset"`
	RateAmount          int64       `json:"-" db:"rate_amount"`
	Rate                cosmos.Coin `json:"rate" db:"-"`
	OpenCost            int64       `json:"open_cost" db:"open_cost"`
	ClosedHeight        int64       `json:"closed_height" db:"closed_height"`
	ProviderID          int64       `json:"-" db:"provider_id"`
	Deposit             int64       `json:"deposit" db:"deposit"`
	Authorization       string      `json:"authorization" db:"auth"`
	QueriesPerMinute    int64       `json:"queries_per_minute" db:"queries_per_minute"`
	Nonce               int64       `json:"nonce" db:"nonce"`
	Paid                int64       `json:"paid" db:"paid"`
	SettlementDurtion   int64       `json:"settlement_duration" db:"settlement_duration"`
	ReserveContribAsset int64       `json:"reserve_contrib_asset" db:"reserve_contrib_asset"`
	ReserveContribUSD   int64       `json:"reserve_contrib_usd" db:"reserve_contrib_usd"`
}

TODO: missing provider pubkey and service, need to expand ProviderID TODO: add paid TODO: add settlement duration TODO: add nonce TODO: reserve contributions, both in asset and USD terms

type ArkeoProvider

type ArkeoProvider struct {
	Entity  `json:"-"`
	Pubkey  string `json:"pubkey" db:"pubkey"`
	Service string `json:"service" db:"service"`
	// this is a DECIMAL type in the db
	Bond                string       `json:"bond" db:"bond"`
	MetadataURI         string       `json:"metadata_uri" db:"metadata_uri"`
	MetadataNonce       uint64       `json:"metadata_nonce" db:"metadata_nonce"`
	Status              string       `json:"status" db:"status,text"`
	MinContractDuration int64        `json:"min_contract_duration" db:"min_contract_duration"`
	MaxContractDuration int64        `json:"max_contract_duration" db:"max_contract_duration"`
	SettlementDuration  int64        `json:"settlement_duration" db:"settlement_duration"`
	SubscriptionRate    cosmos.Coins `json:"subscription_rates" db:"-"`
	PayAsYouGoRate      cosmos.Coins `json:"paygo_rates" db:"-"`
}

type Block

type Block struct {
	Entity
	Height    int64     `db:"height"`
	Hash      string    `db:"hash"`
	BlockTime time.Time `db:"block_time"`
}

type BlockGap

type BlockGap struct {
	Start int64 `db:"gap_start"`
	End   int64 `db:"gap_end"`
}

func (BlockGap) String

func (g BlockGap) String() string

type DBConfig

type DBConfig struct {
	Host                    string `mapstructure:"host" json:"host"`
	Port                    uint   `mapstructure:"port" json:"port"`
	User                    string `mapstructure:"user" json:"user"`
	Pass                    string `mapstructure:"pass" json:"pass"`
	DBName                  string `mapstructure:"name" json:"name"`
	PoolMaxConns            int    `mapstructure:"pool_max_conns" json:"pool_max_conns"`
	PoolMinConns            int    `mapstructure:"pool_min_conns" json:"pool_min_conns"`
	SSLMode                 string `mapstructure:"ssl_mode" json:"ssl_mode"`
	ConnectionTimeoutSecond int    `mapstructure:"connection_timeout" json:"connection_timeout"`
}

type DirectoryDB

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

func New

func New(config DBConfig) (*DirectoryDB, error)

func (*DirectoryDB) CloseContract

func (d *DirectoryDB) CloseContract(ctx context.Context, contractID uint64, height int64) (*Entity, error)

func (*DirectoryDB) FindLatestBlock

func (d *DirectoryDB) FindLatestBlock(ctx context.Context) (*Block, error)

func (*DirectoryDB) FindProvider

func (d *DirectoryDB) FindProvider(ctx context.Context, pubkey, service string) (*ArkeoProvider, error)

func (*DirectoryDB) GetArkeoNetworkStats

func (d *DirectoryDB) GetArkeoNetworkStats(ctx context.Context) (*types.ArkeoStats, error)

func (*DirectoryDB) GetContract

func (d *DirectoryDB) GetContract(ctx context.Context, contractId uint64) (*ArkeoContract, error)

GetContract query db to find contract that match the given contract id

func (*DirectoryDB) InsertBlock

func (d *DirectoryDB) InsertBlock(ctx context.Context, b *Block) (*Entity, error)

func (*DirectoryDB) InsertBondProviderEvent

func (d *DirectoryDB) InsertBondProviderEvent(ctx context.Context, providerID int64, evt atypes.EventBondProvider, height int64, txID string) (*Entity, error)

func (*DirectoryDB) InsertModProviderEvent

func (d *DirectoryDB) InsertModProviderEvent(ctx context.Context, providerID int64, evt types.ModProviderEvent) (*Entity, error)

func (*DirectoryDB) InsertProvider

func (d *DirectoryDB) InsertProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)

func (*DirectoryDB) SearchProviders

func (d *DirectoryDB) SearchProviders(ctx context.Context, criteria types.ProviderSearchParams) ([]*ArkeoProvider, error)

func (*DirectoryDB) UpdateProvider

func (d *DirectoryDB) UpdateProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)

func (*DirectoryDB) UpsertContract

func (d *DirectoryDB) UpsertContract(ctx context.Context, providerID int64, evt atypes.EventOpenContract) (*Entity, error)

UpsertContract update database with the given open contract event, if the contract doesn't exist , it will create a new one

func (*DirectoryDB) UpsertContractSettlementEvent

func (d *DirectoryDB) UpsertContractSettlementEvent(ctx context.Context, evt atypes.EventSettleContract) (*Entity, error)

func (*DirectoryDB) UpsertOpenContractEvent

func (d *DirectoryDB) UpsertOpenContractEvent(ctx context.Context, contractID int64, evt atypes.EventOpenContract) (*Entity, error)

func (*DirectoryDB) UpsertProviderMetadata

func (d *DirectoryDB) UpsertProviderMetadata(ctx context.Context, providerID, nonce int64, data sentinel.Metadata) (*Entity, error)

func (*DirectoryDB) UpsertValidatorPayoutEvent

func (d *DirectoryDB) UpsertValidatorPayoutEvent(ctx context.Context, evt atypes.EventValidatorPayout, height int64) (*Entity, error)

type Entity

type Entity struct {
	ID      int64     `db:"id"`
	Created time.Time `db:"created"`
	Updated time.Time `db:"updated"`
}

Entity base entity for db types

type IConnection

type IConnection interface {
	pgxscan.Querier
	QueryRow(ctx context.Context, sql string, args ...any) pgx.Row
	Release()
	Begin(ctx context.Context) (pgx.Tx, error)
}

type IDataStorage

type IDataStorage interface {
	FindLatestBlock(ctx context.Context) (*Block, error)
	InsertBlock(ctx context.Context, b *Block) (*Entity, error)
	UpsertValidatorPayoutEvent(ctx context.Context, evt atypes.EventValidatorPayout, height int64) (*Entity, error)
	FindProvider(ctx context.Context, pubkey, service string) (*ArkeoProvider, error)
	UpsertContract(ctx context.Context, providerID int64, evt atypes.EventOpenContract) (*Entity, error)
	GetContract(ctx context.Context, contractId uint64) (*ArkeoContract, error)
	CloseContract(ctx context.Context, contractID uint64, height int64) (*Entity, error)
	UpdateProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)
	UpsertContractSettlementEvent(ctx context.Context, evt atypes.EventSettleContract) (*Entity, error)
	UpsertProviderMetadata(ctx context.Context, providerID, nonce int64, data sentinel.Metadata) (*Entity, error)
	InsertBondProviderEvent(ctx context.Context, providerID int64, evt atypes.EventBondProvider, height int64, txID string) (*Entity, error)
	InsertProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)
}

type MockDataStorage

type MockDataStorage struct {
	mock.Mock
}

func (*MockDataStorage) CloseContract

func (s *MockDataStorage) CloseContract(ctx context.Context, contractID uint64, height int64) (*Entity, error)

func (*MockDataStorage) FindLatestBlock

func (s *MockDataStorage) FindLatestBlock(ctx context.Context) (*Block, error)

func (*MockDataStorage) FindProvider

func (s *MockDataStorage) FindProvider(ctx context.Context, pubkey, service string) (*ArkeoProvider, error)

func (*MockDataStorage) GetContract

func (s *MockDataStorage) GetContract(ctx context.Context, contractId uint64) (*ArkeoContract, error)

func (*MockDataStorage) InsertBlock

func (s *MockDataStorage) InsertBlock(ctx context.Context, b *Block) (*Entity, error)

func (*MockDataStorage) InsertBondProviderEvent

func (s *MockDataStorage) InsertBondProviderEvent(ctx context.Context, providerID int64, evt atypes.EventBondProvider, height int64, txID string) (*Entity, error)

func (*MockDataStorage) InsertProvider

func (s *MockDataStorage) InsertProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)

func (*MockDataStorage) UpdateProvider

func (s *MockDataStorage) UpdateProvider(ctx context.Context, provider *ArkeoProvider) (*Entity, error)

func (*MockDataStorage) UpsertContract

func (s *MockDataStorage) UpsertContract(ctx context.Context, providerID int64, evt atypes.EventOpenContract) (*Entity, error)

func (*MockDataStorage) UpsertContractSettlementEvent

func (s *MockDataStorage) UpsertContractSettlementEvent(ctx context.Context, evt atypes.EventSettleContract) (*Entity, error)

func (*MockDataStorage) UpsertProviderMetadata

func (s *MockDataStorage) UpsertProviderMetadata(ctx context.Context, providerID, nonce int64, data sentinel.Metadata) (*Entity, error)

func (*MockDataStorage) UpsertValidatorPayoutEvent

func (s *MockDataStorage) UpsertValidatorPayoutEvent(ctx context.Context, evt atypes.EventValidatorPayout, height int64) (*Entity, error)

Jump to

Keyboard shortcuts

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