stores

package
v1.1.0-beta.1 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2024 License: MIT Imports: 23 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNegativeMaxDowntime = errors.New("max downtime can not be negative")
)

Functions

This section is empty.

Types

type Config added in v1.0.1

type Config struct {
	DB                            sql.Database
	DBMetrics                     sql.MetricsDatabase
	Alerts                        alerts.Alerter
	PartialSlabDir                string
	Migrate                       bool
	AnnouncementMaxAge            time.Duration
	WalletAddress                 types.Address
	SlabBufferCompletionThreshold int64
	Logger                        *zap.Logger
	RetryTransactionIntervals     []time.Duration
	LongQueryDuration             time.Duration
	LongTxDuration                time.Duration
}

Config contains all params for creating a SQLStore

type SQLStore

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

SQLStore is a helper type for interacting with a SQL-based backend.

func NewSQLStore

func NewSQLStore(cfg Config) (*SQLStore, error)

NewSQLStore uses a given Dialector to connect to a SQL database. NOTE: Only pass migrate=true for the first instance of SQLHostDB if you connect via the same Dialector multiple times.

func (*SQLStore) AbortMultipartUpload added in v0.6.0

func (s *SQLStore) AbortMultipartUpload(ctx context.Context, bucket, path string, uploadID string) error

func (*SQLStore) Accounts

func (s *SQLStore) Accounts(ctx context.Context) (accounts []api.Account, err error)

Accounts returns all accounts from the db.

func (*SQLStore) AddContract

func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, state string) (_ api.ContractMetadata, err error)

func (*SQLStore) AddMultipartPart added in v0.6.0

func (s *SQLStore) AddMultipartPart(ctx context.Context, bucket, path, contractSet, eTag, uploadID string, partNumber int, slices []object.SlabSlice) (err error)

func (*SQLStore) AddPartialSlab

func (s *SQLStore) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, contractSet string) ([]object.SlabSlice, int64, error)

func (*SQLStore) AddPeer added in v1.1.0

func (s *SQLStore) AddPeer(addr string) error

AddPeer adds a peer to the store. If the peer already exists, nil should be returned.

func (*SQLStore) AddRenewedContract

func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, contractPrice, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID, state string) (renewed api.ContractMetadata, err error)

AddRenewedContract adds a new contract which was created as the result of a renewal to the store. The old contract specified as 'renewedFrom' will be deleted from the active contracts and moved to the archive. Both new and old contract will be linked to each other through the RenewedFrom and RenewedTo fields respectively.

func (*SQLStore) AddWebhook

func (s *SQLStore) AddWebhook(ctx context.Context, wh webhooks.Webhook) error

func (*SQLStore) AncestorContracts

func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) (ancestors []api.ArchivedContract, err error)

func (*SQLStore) ArchiveAllContracts

func (s *SQLStore) ArchiveAllContracts(ctx context.Context, reason string) error

func (*SQLStore) ArchiveContract

func (s *SQLStore) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error

func (*SQLStore) ArchiveContracts

func (s *SQLStore) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error

func (*SQLStore) Autopilot

func (s *SQLStore) Autopilot(ctx context.Context, id string) (ap api.Autopilot, _ error)

func (*SQLStore) Autopilots

func (s *SQLStore) Autopilots(ctx context.Context) (aps []api.Autopilot, _ error)

func (*SQLStore) Ban added in v1.1.0

func (s *SQLStore) Ban(addr string, duration time.Duration, reason string) error

Ban temporarily bans one or more IPs. The addr should either be a single IP with port (e.g. 1.2.3.4:5678) or a CIDR subnet (e.g. 1.2.3.4/16).

func (*SQLStore) Banned added in v1.1.0

func (s *SQLStore) Banned(addr string) (banned bool, err error)

Banned returns true, nil if the peer is banned.

func (*SQLStore) Bucket added in v0.6.0

func (s *SQLStore) Bucket(ctx context.Context, bucket string) (b api.Bucket, err error)

func (*SQLStore) ChainIndex added in v1.1.0

func (s *SQLStore) ChainIndex(ctx context.Context) (ci types.ChainIndex, err error)

ChainIndex returns the last stored chain index.

func (*SQLStore) Close

func (s *SQLStore) Close() error

Close closes the underlying database connection of the store.

func (*SQLStore) CompleteMultipartUpload added in v0.6.0

func (s *SQLStore) CompleteMultipartUpload(ctx context.Context, bucket, path string, uploadID string, parts []api.MultipartCompletedPart, opts api.CompleteMultipartOptions) (_ api.MultipartCompleteResponse, err error)

func (*SQLStore) Contract

func (s *SQLStore) Contract(ctx context.Context, id types.FileContractID) (cm api.ContractMetadata, err error)

func (*SQLStore) ContractMetrics added in v0.7.0

func (s *SQLStore) ContractMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.ContractMetricsQueryOpts) (metrics []api.ContractMetric, err error)

func (*SQLStore) ContractPruneMetrics added in v0.7.0

func (s *SQLStore) ContractPruneMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.ContractPruneMetricsQueryOpts) (metrics []api.ContractPruneMetric, err error)

func (*SQLStore) ContractRoots

func (s *SQLStore) ContractRoots(ctx context.Context, id types.FileContractID) (roots []types.Hash256, err error)

func (*SQLStore) ContractSetChurnMetrics added in v0.7.0

func (s *SQLStore) ContractSetChurnMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.ContractSetChurnMetricsQueryOpts) (metrics []api.ContractSetChurnMetric, err error)

func (*SQLStore) ContractSetMetrics added in v0.7.0

func (s *SQLStore) ContractSetMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.ContractSetMetricsQueryOpts) (metrics []api.ContractSetMetric, err error)

func (*SQLStore) ContractSets

func (s *SQLStore) ContractSets(ctx context.Context) (sets []string, err error)

func (*SQLStore) ContractSize

func (s *SQLStore) ContractSize(ctx context.Context, id types.FileContractID) (cs api.ContractSize, err error)

func (*SQLStore) ContractSizes

func (s *SQLStore) ContractSizes(ctx context.Context) (sizes map[types.FileContractID]api.ContractSize, err error)

func (*SQLStore) Contracts

func (s *SQLStore) Contracts(ctx context.Context, opts api.ContractsOpts) ([]api.ContractMetadata, error)

func (*SQLStore) CopyObject added in v0.6.0

func (s *SQLStore) CopyObject(ctx context.Context, srcBucket, dstBucket, srcPath, dstPath, mimeType string, metadata api.ObjectUserMetadata) (om api.ObjectMetadata, err error)

func (*SQLStore) CreateBucket added in v0.6.0

func (s *SQLStore) CreateBucket(ctx context.Context, bucket string, policy api.BucketPolicy) error

func (*SQLStore) CreateMultipartUpload added in v0.6.0

func (s *SQLStore) CreateMultipartUpload(ctx context.Context, bucket, path string, ec object.EncryptionKey, mimeType string, metadata api.ObjectUserMetadata) (api.MultipartCreateResponse, error)

func (*SQLStore) DeleteBucket added in v0.6.0

func (s *SQLStore) DeleteBucket(ctx context.Context, bucket string) error

func (*SQLStore) DeleteHostSector added in v0.7.0

func (s *SQLStore) DeleteHostSector(ctx context.Context, hk types.PublicKey, root types.Hash256) (deletedSectors int, err error)

func (*SQLStore) DeleteSetting

func (s *SQLStore) DeleteSetting(ctx context.Context, key string) error

DeleteSetting implements the bus.SettingStore interface.

func (*SQLStore) DeleteWebhook

func (s *SQLStore) DeleteWebhook(ctx context.Context, wh webhooks.Webhook) error

func (*SQLStore) FetchPartialSlab

func (s *SQLStore) FetchPartialSlab(ctx context.Context, ec object.EncryptionKey, offset, length uint32) ([]byte, error)

func (*SQLStore) Host

func (s *SQLStore) Host(ctx context.Context, hostKey types.PublicKey) (api.Host, error)

Host returns information about a host.

func (*SQLStore) HostAllowlist

func (s *SQLStore) HostAllowlist(ctx context.Context) (allowlist []types.PublicKey, err error)

func (*SQLStore) HostBlocklist

func (s *SQLStore) HostBlocklist(ctx context.Context) (blocklist []string, err error)

func (*SQLStore) Hosts

func (s *SQLStore) Hosts(ctx context.Context, offset, limit int) ([]api.Host, error)

Hosts returns non-blocked hosts at given offset and limit.

func (*SQLStore) HostsForScanning

func (s *SQLStore) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) (hosts []api.HostAddress, err error)

HostsForScanning returns the address of hosts for scanning.

func (*SQLStore) ListBuckets added in v0.6.0

func (s *SQLStore) ListBuckets(ctx context.Context) (buckets []api.Bucket, err error)

func (*SQLStore) ListObjects added in v0.6.0

func (s *SQLStore) ListObjects(ctx context.Context, bucket, prefix, sortBy, sortDir, marker string, limit int) (resp api.ObjectsListResponse, err error)

TODO: we can use ObjectEntries instead of ListObject if we want to use '/' as a delimiter for now (see backend.go) but it would be interesting to have arbitrary 'delim' support in ListObjects.

func (*SQLStore) MarkPackedSlabsUploaded

func (s *SQLStore) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab) error

MarkPackedSlabsUploaded marks the given slabs as uploaded and deletes them from the buffer.

func (*SQLStore) MultipartUpload added in v0.6.0

func (s *SQLStore) MultipartUpload(ctx context.Context, uploadID string) (resp api.MultipartUpload, err error)

func (*SQLStore) MultipartUploadParts added in v0.6.0

func (s *SQLStore) MultipartUploadParts(ctx context.Context, bucket, object string, uploadID string, marker int, limit int64) (resp api.MultipartListPartsResponse, _ error)

func (*SQLStore) MultipartUploads added in v0.6.0

func (s *SQLStore) MultipartUploads(ctx context.Context, bucket, prefix, keyMarker, uploadIDMarker string, limit int) (resp api.MultipartListUploadsResponse, err error)

func (*SQLStore) Object

func (s *SQLStore) Object(ctx context.Context, bucket, path string) (obj api.Object, err error)

func (*SQLStore) ObjectEntries

func (s *SQLStore) ObjectEntries(ctx context.Context, bucket, path, prefix, sortBy, sortDir, marker string, offset, limit int) (metadata []api.ObjectMetadata, hasMore bool, err error)

func (*SQLStore) ObjectMetadata added in v1.0.6

func (s *SQLStore) ObjectMetadata(ctx context.Context, bucket, path string) (obj api.Object, err error)

ObjectMetadata returns an object's metadata

func (*SQLStore) ObjectsBySlabKey

func (s *SQLStore) ObjectsBySlabKey(ctx context.Context, bucket string, slabKey object.EncryptionKey) (metadata []api.ObjectMetadata, err error)

func (*SQLStore) ObjectsStats

func (s *SQLStore) ObjectsStats(ctx context.Context, opts api.ObjectsStatsOpts) (resp api.ObjectsStatsResponse, _ error)

ObjectsStats returns some info related to the objects stored in the store. To reduce locking and make sure all results are consistent, everything is done within a single transaction.

func (*SQLStore) PackedSlabsForUpload

func (s *SQLStore) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, set string, limit int) ([]api.PackedSlab, error)

PackedSlabsForUpload returns up to 'limit' packed slabs that are ready for uploading. They are locked for 'lockingDuration' time before being handed out again.

func (*SQLStore) PeerInfo added in v1.1.0

func (s *SQLStore) PeerInfo(addr string) (info syncer.PeerInfo, err error)

PeerInfo returns the metadata for the specified peer or ErrPeerNotFound if the peer wasn't found in the store.

func (*SQLStore) Peers added in v1.1.0

func (s *SQLStore) Peers() (peers []syncer.PeerInfo, err error)

Peers returns the set of known peers.

func (*SQLStore) PerformanceMetrics added in v0.7.0

func (s *SQLStore) PerformanceMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.PerformanceMetricsQueryOpts) (metrics []api.PerformanceMetric, err error)

func (*SQLStore) ProcessChainUpdate added in v1.1.0

func (s *SQLStore) ProcessChainUpdate(ctx context.Context, applyFn func(sql.ChainUpdateTx) error) error

ProcessChainUpdate returns a callback function that process a chain update inside a transaction.

func (*SQLStore) PruneMetrics added in v0.7.0

func (s *SQLStore) PruneMetrics(ctx context.Context, metric string, cutoff time.Time) error

func (*SQLStore) RecordContractMetric added in v0.7.0

func (s *SQLStore) RecordContractMetric(ctx context.Context, metrics ...api.ContractMetric) error

func (*SQLStore) RecordContractPruneMetric added in v0.7.0

func (s *SQLStore) RecordContractPruneMetric(ctx context.Context, metrics ...api.ContractPruneMetric) error

func (*SQLStore) RecordContractSetChurnMetric added in v0.7.0

func (s *SQLStore) RecordContractSetChurnMetric(ctx context.Context, metrics ...api.ContractSetChurnMetric) error

func (*SQLStore) RecordContractSetMetric added in v0.7.0

func (s *SQLStore) RecordContractSetMetric(ctx context.Context, metrics ...api.ContractSetMetric) error

func (*SQLStore) RecordContractSpending

func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error

func (*SQLStore) RecordHostScans

func (s *SQLStore) RecordHostScans(ctx context.Context, scans []api.HostScan) error

func (*SQLStore) RecordPerformanceMetric added in v0.7.0

func (s *SQLStore) RecordPerformanceMetric(ctx context.Context, metrics ...api.PerformanceMetric) error

func (*SQLStore) RecordPriceTables

func (s *SQLStore) RecordPriceTables(ctx context.Context, priceTableUpdate []api.HostPriceTableUpdate) error

func (*SQLStore) RecordWalletMetric added in v0.7.0

func (s *SQLStore) RecordWalletMetric(ctx context.Context, metrics ...api.WalletMetric) error

func (*SQLStore) RefreshHealth

func (s *SQLStore) RefreshHealth(ctx context.Context) error

func (*SQLStore) RemoveContractSet

func (s *SQLStore) RemoveContractSet(ctx context.Context, name string) error

func (*SQLStore) RemoveObject

func (s *SQLStore) RemoveObject(ctx context.Context, bucket, path string) error

func (*SQLStore) RemoveObjects

func (s *SQLStore) RemoveObjects(ctx context.Context, bucket, prefix string) error

func (*SQLStore) RemoveOfflineHosts

func (s *SQLStore) RemoveOfflineHosts(ctx context.Context, minRecentFailures uint64, maxDowntime time.Duration) (removed uint64, err error)

func (*SQLStore) RenameObject

func (s *SQLStore) RenameObject(ctx context.Context, bucket, keyOld, keyNew string, force bool) error

func (*SQLStore) RenameObjects

func (s *SQLStore) RenameObjects(ctx context.Context, bucket, prefixOld, prefixNew string, force bool) error

func (*SQLStore) RenewedContract

func (s *SQLStore) RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (cm api.ContractMetadata, err error)

func (*SQLStore) ResetChainState added in v1.1.0

func (s *SQLStore) ResetChainState(ctx context.Context) error

ResetChainState deletes all chain data in the database.

func (*SQLStore) ResetLostSectors added in v0.7.0

func (s *SQLStore) ResetLostSectors(ctx context.Context, hk types.PublicKey) error

func (*SQLStore) SaveAccounts

func (s *SQLStore) SaveAccounts(ctx context.Context, accounts []api.Account) error

SaveAccounts saves the given accounts in the db, overwriting any existing ones.

func (*SQLStore) SearchHosts

func (s *SQLStore) SearchHosts(ctx context.Context, autopilotID, filterMode, usabilityMode, addressContains string, keyIn []types.PublicKey, offset, limit int) ([]api.Host, error)

func (*SQLStore) SearchObjects

func (s *SQLStore) SearchObjects(ctx context.Context, bucket, substring string, offset, limit int) (objects []api.ObjectMetadata, err error)

func (*SQLStore) SetContractSet

func (s *SQLStore) SetContractSet(ctx context.Context, name string, contractIds []types.FileContractID) error

func (*SQLStore) SetUncleanShutdown added in v0.6.0

func (s *SQLStore) SetUncleanShutdown(ctx context.Context) error

SetUncleanShutdown sets the clean shutdown flag on the accounts to 'false' and also sets the 'requires_sync' flag. That way, the autopilot will know to sync all accounts after an unclean shutdown and the bus will know not to apply drift.

func (*SQLStore) Setting

func (s *SQLStore) Setting(ctx context.Context, key string) (string, error)

Setting implements the bus.SettingStore interface.

func (*SQLStore) Settings

func (s *SQLStore) Settings(ctx context.Context) (settings []string, err error)

Settings implements the bus.SettingStore interface.

func (*SQLStore) Slab

func (s *SQLStore) Slab(ctx context.Context, key object.EncryptionKey) (slab object.Slab, err error)

func (*SQLStore) SlabBuffers

func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error)

func (*SQLStore) Tip added in v1.1.0

func (s *SQLStore) Tip() (ci types.ChainIndex, err error)

Tip returns the consensus change ID and block height of the last wallet change.

func (*SQLStore) UnhealthySlabs

func (s *SQLStore) UnhealthySlabs(ctx context.Context, healthCutoff float64, set string, limit int) (slabs []api.UnhealthySlab, err error)

UnhealthySlabs returns up to 'limit' slabs that do not reach full redundancy in the given contract set. These slabs need to be migrated to good contracts so they are restored to full health.

func (*SQLStore) UnspentSiacoinElements

func (s *SQLStore) UnspentSiacoinElements() (elements []types.SiacoinElement, err error)

UnspentSiacoinElements returns a list of all unspent siacoin outputs

func (*SQLStore) UpdateAutopilot

func (s *SQLStore) UpdateAutopilot(ctx context.Context, ap api.Autopilot) error

func (*SQLStore) UpdateBucketPolicy added in v0.6.0

func (s *SQLStore) UpdateBucketPolicy(ctx context.Context, bucket string, policy api.BucketPolicy) error

func (*SQLStore) UpdateHostAllowlistEntries

func (s *SQLStore) UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) (err error)

func (*SQLStore) UpdateHostBlocklistEntries

func (s *SQLStore) UpdateHostBlocklistEntries(ctx context.Context, add, remove []string, clear bool) (err error)

func (*SQLStore) UpdateHostCheck added in v1.0.7

func (s *SQLStore) UpdateHostCheck(ctx context.Context, autopilotID string, hk types.PublicKey, hc api.HostCheck) (err error)

func (*SQLStore) UpdateObject

func (s *SQLStore) UpdateObject(ctx context.Context, bucket, path, contractSet, eTag, mimeType string, metadata api.ObjectUserMetadata, o object.Object) error

func (*SQLStore) UpdatePeerInfo added in v1.1.0

func (s *SQLStore) UpdatePeerInfo(addr string, fn func(*syncer.PeerInfo)) error

UpdatePeerInfo updates the metadata for the specified peer. If the peer is not found, the error should be ErrPeerNotFound.

func (*SQLStore) UpdateSetting

func (s *SQLStore) UpdateSetting(ctx context.Context, key, value string) error

UpdateSetting implements the bus.SettingStore interface.

func (*SQLStore) UpdateSlab

func (s *SQLStore) UpdateSlab(ctx context.Context, slab object.Slab, contractSet string) error

func (*SQLStore) WalletEventCount added in v1.1.0

func (s *SQLStore) WalletEventCount() (count uint64, err error)

WalletEventCount returns the number of events relevant to the wallet.

func (*SQLStore) WalletEvents added in v1.1.0

func (s *SQLStore) WalletEvents(offset, limit int) (events []wallet.Event, err error)

WalletEvents returns a paginated list of events, ordered by maturity height, descending. If no more events are available, (nil, nil) is returned.

func (*SQLStore) WalletMetrics added in v0.7.0

func (s *SQLStore) WalletMetrics(ctx context.Context, start time.Time, n uint64, interval time.Duration, opts api.WalletMetricsQueryOpts) (metrics []api.WalletMetric, err error)

func (*SQLStore) Webhooks

func (s *SQLStore) Webhooks(ctx context.Context) (whs []webhooks.Webhook, err error)

type SlabBuffer

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

type SlabBufferManager

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

func (*SlabBufferManager) AddPartialSlab

func (mgr *SlabBufferManager) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, contractSet string) ([]object.SlabSlice, int64, error)

func (*SlabBufferManager) BufferSize added in v0.6.0

func (mgr *SlabBufferManager) BufferSize(gid bufferGroupID) (total int64)

func (*SlabBufferManager) Close

func (mgr *SlabBufferManager) Close() error

func (*SlabBufferManager) FetchPartialSlab

func (mgr *SlabBufferManager) FetchPartialSlab(ctx context.Context, ec object.EncryptionKey, offset, length uint32) ([]byte, error)

func (*SlabBufferManager) RemoveBuffers

func (mgr *SlabBufferManager) RemoveBuffers(fileNames ...string)

func (*SlabBufferManager) SlabBuffers

func (mgr *SlabBufferManager) SlabBuffers() (sbs []api.SlabBuffer)

func (*SlabBufferManager) SlabsForUpload

func (mgr *SlabBufferManager) SlabsForUpload(ctx context.Context, lockingDuration time.Duration, minShards, totalShards uint8, contractSet string, limit int) (slabs []api.PackedSlab, _ error)

Directories

Path Synopsis
sql

Jump to

Keyboard shortcuts

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