Documentation
¶
Index ¶
- Variables
- func DBConfigFromEnv() (uri, user, password, dbName string)
- func NewEphemeralSQLiteConnection(name string) gorm.Dialector
- func NewMySQLConnection(user, password, addr, dbName string) gorm.Dialector
- func NewSQLLogger(l *zap.Logger, config LoggerConfig) logger.Interface
- func NewSQLiteConnection(path string) gorm.Dialector
- type ContractCommon
- type LoggerConfig
- type Model
- type SQLStore
- func (s *SQLStore) Accounts(ctx context.Context) ([]api.Account, error)
- func (s *SQLStore) AddContract(ctx context.Context, c rhpv2.ContractRevision, totalCost types.Currency, ...) (_ api.ContractMetadata, err error)
- func (s *SQLStore) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, ...) ([]object.PartialSlab, error)
- func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, totalCost types.Currency, ...) (api.ContractMetadata, error)
- func (s *SQLStore) AddWebhook(wb webhooks.Webhook) error
- func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error)
- func (s *SQLStore) ArchiveAllContracts(ctx context.Context, reason string) error
- func (s *SQLStore) ArchiveContract(ctx context.Context, id types.FileContractID, reason string) error
- func (s *SQLStore) ArchiveContracts(ctx context.Context, toArchive map[types.FileContractID]string) error
- func (s *SQLStore) Autopilot(ctx context.Context, id string) (api.Autopilot, error)
- func (s *SQLStore) Autopilots(ctx context.Context) ([]api.Autopilot, error)
- func (s *SQLStore) Close() error
- func (s *SQLStore) Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error)
- func (s *SQLStore) ContractRoots(ctx context.Context, id types.FileContractID) (roots []types.Hash256, err error)
- func (s *SQLStore) ContractSetContracts(ctx context.Context, set string) ([]api.ContractMetadata, error)
- func (s *SQLStore) ContractSets(ctx context.Context) ([]string, error)
- func (s *SQLStore) ContractSize(ctx context.Context, id types.FileContractID) (api.ContractSize, error)
- func (s *SQLStore) ContractSizes(ctx context.Context) (map[types.FileContractID]api.ContractSize, error)
- func (s *SQLStore) Contracts(ctx context.Context) ([]api.ContractMetadata, error)
- func (s *SQLStore) DeleteSetting(ctx context.Context, key string) error
- func (s *SQLStore) DeleteWebhook(wb webhooks.Webhook) error
- func (s *SQLStore) FetchPartialSlab(ctx context.Context, ec object.EncryptionKey, offset, length uint32) ([]byte, error)
- func (s *SQLStore) Height() uint64
- func (ss *SQLStore) Host(ctx context.Context, hostKey types.PublicKey) (hostdb.HostInfo, error)
- func (ss *SQLStore) HostAllowlist(ctx context.Context) (allowlist []types.PublicKey, err error)
- func (ss *SQLStore) HostBlocklist(ctx context.Context) (blocklist []string, err error)
- func (ss *SQLStore) Hosts(ctx context.Context, offset, limit int) ([]hostdb.Host, error)
- func (ss *SQLStore) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]hostdb.HostAddress, error)
- func (s *SQLStore) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab, ...) error
- func (s *SQLStore) Object(ctx context.Context, path string) (api.Object, error)
- func (s *SQLStore) ObjectEntries(ctx context.Context, path, prefix string, offset, limit int) ([]api.ObjectMetadata, error)
- func (s *SQLStore) ObjectsBySlabKey(ctx context.Context, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error)
- func (s *SQLStore) ObjectsStats(ctx context.Context) (api.ObjectsStatsResponse, error)
- func (s *SQLStore) PackedSlabsForUpload(ctx context.Context, lockingDuration time.Duration, ...) ([]api.PackedSlab, error)
- func (ss *SQLStore) ProcessConsensusChange(cc modules.ConsensusChange)
- func (s *SQLStore) RecordContractSpending(ctx context.Context, records []api.ContractSpendingRecord) error
- func (ss *SQLStore) RecordHostScans(ctx context.Context, scans []hostdb.HostScan) error
- func (ss *SQLStore) RecordPriceTables(ctx context.Context, priceTableUpdate []hostdb.PriceTableUpdate) error
- func (s *SQLStore) RefreshHealth(ctx context.Context) error
- func (s *SQLStore) RemoveContractSet(ctx context.Context, name string) error
- func (s *SQLStore) RemoveObject(ctx context.Context, key string) error
- func (s *SQLStore) RemoveObjects(ctx context.Context, prefix string) error
- func (ss *SQLStore) RemoveOfflineHosts(ctx context.Context, minRecentFailures uint64, maxDowntime time.Duration) (removed uint64, err error)
- func (s *SQLStore) RenameObject(ctx context.Context, keyOld, keyNew string) error
- func (s *SQLStore) RenameObjects(ctx context.Context, prefixOld, prefixNew string) error
- func (s *SQLStore) RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (_ api.ContractMetadata, err error)
- func (s *SQLStore) ResetConsensusSubscription() error
- func (s *SQLStore) SaveAccounts(ctx context.Context, accounts []api.Account) error
- func (ss *SQLStore) SearchHosts(ctx context.Context, filterMode, addressContains string, ...) ([]hostdb.Host, error)
- func (s *SQLStore) SearchObjects(ctx context.Context, substring string, offset, limit int) ([]api.ObjectMetadata, error)
- func (s *SQLStore) SetContractSet(ctx context.Context, name string, contractIds []types.FileContractID) error
- func (s *SQLStore) Setting(ctx context.Context, key string) (string, error)
- func (s *SQLStore) Settings(ctx context.Context) ([]string, error)
- func (s *SQLStore) Slab(ctx context.Context, key object.EncryptionKey) (object.Slab, error)
- func (s *SQLStore) SlabBuffers(ctx context.Context) ([]api.SlabBuffer, error)
- func (s *SQLStore) Transactions(before, since time.Time, offset, limit int) ([]wallet.Transaction, error)
- func (s *SQLStore) UnhealthySlabs(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, error)
- func (s *SQLStore) UnspentSiacoinElements(matured bool) ([]wallet.SiacoinElement, error)
- func (s *SQLStore) UpdateAutopilot(ctx context.Context, ap api.Autopilot) error
- func (ss *SQLStore) UpdateHostAllowlistEntries(ctx context.Context, add, remove []types.PublicKey, clear bool) (err error)
- func (ss *SQLStore) UpdateHostBlocklistEntries(ctx context.Context, add, remove []string, clear bool) (err error)
- func (s *SQLStore) UpdateObject(ctx context.Context, path, contractSet string, o object.Object, ...) error
- func (s *SQLStore) UpdateSetting(ctx context.Context, key, value string) error
- func (ss *SQLStore) UpdateSlab(ctx context.Context, s object.Slab, contractSet string, ...) error
- func (s *SQLStore) Webhooks() ([]webhooks.Webhook, error)
- type SlabBuffer
- type SlabBufferManager
- func (mgr *SlabBufferManager) AddPartialSlab(ctx context.Context, data []byte, minShards, totalShards uint8, ...) ([]object.PartialSlab, error)
- func (mgr *SlabBufferManager) Close() error
- func (mgr *SlabBufferManager) FetchPartialSlab(ctx context.Context, ec object.EncryptionKey, offset, length uint32) ([]byte, error)
- func (mgr *SlabBufferManager) RemoveBuffers(fileNames ...string)
- func (mgr *SlabBufferManager) SlabBuffers() (sbs []api.SlabBuffer)
- func (mgr *SlabBufferManager) SlabsForUpload(ctx context.Context, lockingDuration time.Duration, ...) (slabs []api.PackedSlab, _ error)
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func DBConfigFromEnv ¶
func DBConfigFromEnv() (uri, user, password, dbName string)
func NewEphemeralSQLiteConnection ¶
NewEphemeralSQLiteConnection creates a connection to an in-memory SQLite DB. NOTE: Use simple names such as a random hex identifier or the filepath.Base of a test's name. Certain symbols will break the cfg string and cause a file to be created on disk.
mode: set to memory for in-memory database cache: set to shared which is required for in-memory databases _foreign_keys: enforce foreign_key relations
func NewMySQLConnection ¶
NewMySQLConnection creates a connection to a MySQL database.
func NewSQLLogger ¶
func NewSQLLogger(l *zap.Logger, config LoggerConfig) logger.Interface
func NewSQLiteConnection ¶
NewSQLiteConnection opens a sqlite db at the given path.
_busy_timeout: set to prevent concurrent transactions from failing and instead have them block _foreign_keys: enforce foreign_key relations _journal_mode: set to WAL instead of delete since it's usually the fastest. Only downside is that the db won't work on network drives. In that case this should be made configurable and set to TRUNCATE or any of the other options. For reference see https://github.com/mattn/go-sqlite3#connection-string.
Types ¶
type ContractCommon ¶
type ContractCommon struct { FCID fileContractID `gorm:"unique;index;NOT NULL;column:fcid;size:32"` RenewedFrom fileContractID `gorm:"index;size:32"` TotalCost currency ProofHeight uint64 `gorm:"index;default:0"` RevisionHeight uint64 `gorm:"index;default:0"` RevisionNumber string `gorm:"NOT NULL;default:'0'"` // string since db can't store math.MaxUint64 Size uint64 StartHeight uint64 `gorm:"index;NOT NULL"` WindowStart uint64 `gorm:"index;NOT NULL;default:0"` WindowEnd uint64 `gorm:"index;NOT NULL;default:0"` // spending fields UploadSpending currency DownloadSpending currency FundAccountSpending currency DeleteSpending currency ListSpending currency }
type LoggerConfig ¶
type Model ¶
Model defines the common fields of every table. Same as Model but excludes soft deletion since it breaks cascading deletes.
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(conn gorm.Dialector, alerts alerts.Alerter, partialSlabDir string, migrate bool, persistInterval time.Duration, walletAddress types.Address, slabBufferCompletionThreshold int64, logger *zap.SugaredLogger, gormLogger glogger.Interface) (*SQLStore, modules.ConsensusChangeID, 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) AddContract ¶
func (*SQLStore) AddPartialSlab ¶
func (*SQLStore) AddRenewedContract ¶
func (s *SQLStore) AddRenewedContract(ctx context.Context, c rhpv2.ContractRevision, totalCost types.Currency, startHeight uint64, renewedFrom types.FileContractID) (api.ContractMetadata, 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) AncestorContracts ¶
func (s *SQLStore) AncestorContracts(ctx context.Context, id types.FileContractID, startHeight uint64) ([]api.ArchivedContract, error)
func (*SQLStore) ArchiveAllContracts ¶
func (*SQLStore) ArchiveContract ¶
func (*SQLStore) ArchiveContracts ¶
func (*SQLStore) Autopilots ¶
func (*SQLStore) Contract ¶
func (s *SQLStore) Contract(ctx context.Context, id types.FileContractID) (api.ContractMetadata, error)
func (*SQLStore) ContractRoots ¶
func (*SQLStore) ContractSetContracts ¶
func (*SQLStore) ContractSets ¶
func (*SQLStore) ContractSize ¶
func (s *SQLStore) ContractSize(ctx context.Context, id types.FileContractID) (api.ContractSize, error)
func (*SQLStore) ContractSizes ¶
func (s *SQLStore) ContractSizes(ctx context.Context) (map[types.FileContractID]api.ContractSize, error)
func (*SQLStore) DeleteSetting ¶
DeleteSetting implements the bus.SettingStore interface.
func (*SQLStore) FetchPartialSlab ¶
func (*SQLStore) HostAllowlist ¶
func (*SQLStore) HostBlocklist ¶
func (*SQLStore) HostsForScanning ¶
func (ss *SQLStore) HostsForScanning(ctx context.Context, maxLastScan time.Time, offset, limit int) ([]hostdb.HostAddress, error)
HostsForScanning returns the address of hosts for scanning.
func (*SQLStore) MarkPackedSlabsUploaded ¶
func (s *SQLStore) MarkPackedSlabsUploaded(ctx context.Context, slabs []api.UploadedPackedSlab, usedContracts map[types.PublicKey]types.FileContractID) error
MarkPackedSlabsUploaded marks the given slabs as uploaded and deletes them from the buffer.
func (*SQLStore) ObjectEntries ¶
func (*SQLStore) ObjectsBySlabKey ¶
func (s *SQLStore) ObjectsBySlabKey(ctx context.Context, slabKey object.EncryptionKey) ([]api.ObjectMetadata, error)
func (*SQLStore) ObjectsStats ¶
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) ProcessConsensusChange ¶
func (ss *SQLStore) ProcessConsensusChange(cc modules.ConsensusChange)
ProcessConsensusChange implements consensus.Subscriber.
func (*SQLStore) RecordContractSpending ¶
func (*SQLStore) RecordHostScans ¶
func (*SQLStore) RecordPriceTables ¶
func (*SQLStore) RemoveContractSet ¶
func (*SQLStore) RemoveObject ¶
func (*SQLStore) RemoveObjects ¶
func (*SQLStore) RemoveOfflineHosts ¶
func (*SQLStore) RenameObject ¶
func (*SQLStore) RenameObjects ¶
func (*SQLStore) RenewedContract ¶
func (s *SQLStore) RenewedContract(ctx context.Context, renewedFrom types.FileContractID) (_ api.ContractMetadata, err error)
func (*SQLStore) ResetConsensusSubscription ¶
func (*SQLStore) SaveAccounts ¶
SaveAccounts saves the given accounts in the db, overwriting any existing ones.
func (*SQLStore) SearchHosts ¶
func (*SQLStore) SearchObjects ¶
func (*SQLStore) SetContractSet ¶
func (*SQLStore) SlabBuffers ¶
func (*SQLStore) Transactions ¶
func (s *SQLStore) Transactions(before, since time.Time, offset, limit int) ([]wallet.Transaction, error)
Transactions implements wallet.SingleAddressStore.
func (*SQLStore) UnhealthySlabs ¶
func (s *SQLStore) UnhealthySlabs(ctx context.Context, healthCutoff float64, set string, limit int) ([]api.UnhealthySlab, 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(matured bool) ([]wallet.SiacoinElement, error)
UnspentSiacoinElements implements wallet.SingleAddressStore.
func (*SQLStore) UpdateAutopilot ¶
func (*SQLStore) UpdateHostAllowlistEntries ¶
func (*SQLStore) UpdateHostBlocklistEntries ¶
func (*SQLStore) UpdateObject ¶
func (*SQLStore) UpdateSetting ¶
UpdateSetting implements the bus.SettingStore interface.
func (*SQLStore) UpdateSlab ¶
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 uint) ([]object.PartialSlab, error)
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)