Documentation
¶
Overview ¶
Package models provides the models used by Temporal's databases
Index ¶
- Variables
- type Blockchain
- type EnterpriseUpload
- type HostedIPFSPrivateNetwork
- type IPFSNetworkManager
- func (im *IPFSNetworkManager) CreateHostedPrivateNetwork(name, apiURL, swarmKey string, arrayParameters map[string][]string, ...) (*HostedIPFSPrivateNetwork, error)
- func (im *IPFSNetworkManager) GetAPIURLByName(name string) (string, error)
- func (im *IPFSNetworkManager) GetNetworkByName(name string) (*HostedIPFSPrivateNetwork, error)
- type IPNS
- type IpnsManager
- func (im *IpnsManager) CreateEntry(ipnsHash, ipfsHash, key, networkName string, lifetime, ttl time.Duration) (*IPNS, error)
- func (im *IpnsManager) FindByIPNSHash(ipnsHash string) (*IPNS, error)
- func (im *IpnsManager) UpdateIPNSEntry(ipnsHash, ipfsHash, key, networkName string, lifetime, ttl time.Duration) (*IPNS, error)
- type PaymentManager
- func (pm *PaymentManager) ConfirmPayment(txHash string) (*Payments, error)
- func (pm *PaymentManager) FindPaymentByTxHash(txHash string) (*Payments, error)
- func (pm *PaymentManager) MarkPaymentAsProcessing(txHash string) (*Payments, error)
- func (pm *PaymentManager) NewPayment(depositAddress string, txHash string, usdValue float64, blockchain string, ...) (*Payments, error)
- type Payments
- type Upload
- type UploadManager
- func (um *UploadManager) FindUploadByHashAndNetwork(hash, networkName string) (*Upload, error)
- func (um *UploadManager) FindUploadsByHash(hash string) *[]Upload
- func (um *UploadManager) FindUploadsByNetwork(networkName string) (*[]Upload, error)
- func (um *UploadManager) GetUploadByHashForUser(hash string, username string) []*Upload
- func (um *UploadManager) GetUploads() (*[]Upload, error)
- func (um *UploadManager) GetUploadsForUser(username string) (*[]Upload, error)
- func (um *UploadManager) NewUpload(contentHash, uploadType, networkName, username string, holdTimeInMonths int64) (*Upload, error)
- func (um *UploadManager) RunDatabaseGarbageCollection() (*[]Upload, error)
- func (um *UploadManager) RunTestDatabaseGarbageCollection() (*[]Upload, error)
- func (um *UploadManager) UpdateUpload(holdTimeInMonths int64, username, contentHash, networkName string) (*Upload, error)
- type User
- type UserManager
- func (um *UserManager) AddCredits(username string, credits float64) (*User, error)
- func (um *UserManager) AddIPFSKeyForUser(username, keyName, keyID string) error
- func (um *UserManager) AddIPFSNetworkForUser(username, networkName string) error
- func (um *UserManager) ChangePassword(username, currentPassword, newPassword string) (bool, error)
- func (um *UserManager) CheckIfAdmin(username string) (bool, error)
- func (um *UserManager) CheckIfKeyOwnedByUser(username, keyName string) (bool, error)
- func (um *UserManager) CheckIfUserAccountEnabled(username string) (bool, error)
- func (um *UserManager) CheckIfUserHasAccessToNetwork(username, networkName string) (bool, error)
- func (um *UserManager) ComparePlaintextPasswordToHash(username, password string) (bool, error)
- func (um *UserManager) FindByUserName(username string) (*User, error)
- func (um *UserManager) FindEmailByUserName(username string) (map[string]string, error)
- func (um *UserManager) GetCredits(username string) (float64, error)
- func (um *UserManager) GetKeyIDByName(username, keyName string) (string, error)
- func (um *UserManager) GetKeysForUser(username string) (map[string][]string, error)
- func (um *UserManager) GetPrivateIPFSNetworksForUser(username string) ([]string, error)
- func (um *UserManager) NewUserAccount(username, password, email string, enterpriseEnabled bool) (*User, error)
- func (um *UserManager) RemoveCredits(username string, credits float64) (*User, error)
- func (um *UserManager) SignIn(username, password string) (bool, error)
Constants ¶
This section is empty.
Variables ¶
var AdminAddress = "0xC6C35f43fDD71f86a2D8D4e3cA1Ce32564c38bd9"
AdminAddress is the eth address of the admin account
Functions ¶
This section is empty.
Types ¶
type Blockchain ¶
type Blockchain struct {
Name string `gorm:"type:varchar(255);not null"`
IPCPath string `gorm:"type:varchar(255);not null"`
RPCPath string `gorm:"type:varchar(255);not null"`
}
Blockchain lists our available to different blockchains We do not store administration, or keys in the database.
type EnterpriseUpload ¶
type HostedIPFSPrivateNetwork ¶
type HostedIPFSPrivateNetwork struct {
gorm.Model
Name string `gorm:"type:varchar(255)"`
APIURL string `gorm:"type:varchar(255)"`
SwarmKey string `gorm:"type:varchar(255)"`
Users pq.StringArray `gorm:"type:text[]"` // these are the users to which this IPFS network connection applies to specified by eth address
LocalNodePeerAddresses pq.StringArray `gorm:"type:text[]"` // these are the nodes whichwe run, and can connect to
LocalNodePeerIDs pq.StringArray `gorm:"type:text[];column:local_node_peer_ids"`
BootstrapPeerAddresses pq.StringArray `gorm:"type:text[]"`
BootstrapPeerIDs pq.StringArray `gorm:"type:text[];column:bootstrap_peer_ids"`
}
type IPFSNetworkManager ¶
func NewHostedIPFSNetworkManager ¶
func NewHostedIPFSNetworkManager(db *gorm.DB) *IPFSNetworkManager
func (*IPFSNetworkManager) CreateHostedPrivateNetwork ¶
func (im *IPFSNetworkManager) CreateHostedPrivateNetwork(name, apiURL, swarmKey string, arrayParameters map[string][]string, users []string) (*HostedIPFSPrivateNetwork, error)
TODO: Validate swarm key and API url
func (*IPFSNetworkManager) GetAPIURLByName ¶
func (im *IPFSNetworkManager) GetAPIURLByName(name string) (string, error)
func (*IPFSNetworkManager) GetNetworkByName ¶
func (im *IPFSNetworkManager) GetNetworkByName(name string) (*HostedIPFSPrivateNetwork, error)
type IPNS ¶
type IPNS struct {
gorm.Model
Sequence int64 `gorm:"type:integer;not null;default:0" json:"sequence"`
// the ipns hash, is the peer id of the peer used to sign the entry
IPNSHash string `gorm:"type:varchar(255);unique;column:ipns_hash" json:"ipns_hash"`
// List of content hashes this IPNS entry has pointed to
IPFSHashes pq.StringArray `gorm:"type:text[];column:ipfs_hash" json:"ipfs_hashes"`
CurrentIPFSHash string `gorm:"type:varchar(255);column:current_ipfs_hash" json:"current_ipfs_hash"`
LifeTime string `gorm:"type:varchar(255)" json:"life_time"`
TTL string `gorm:"type:varchar(255)" json:"ttl"`
Key string `gorm:"type:varchar(255)" json:"key"`
NetworkName string `gorm:"type:varchar(255)" json:"network_name"`
}
IPNS will hold all of the IPNS entries in our system
type IpnsManager ¶
func NewIPNSManager ¶
func NewIPNSManager(db *gorm.DB) *IpnsManager
func (*IpnsManager) CreateEntry ¶
func (*IpnsManager) FindByIPNSHash ¶
func (im *IpnsManager) FindByIPNSHash(ipnsHash string) (*IPNS, error)
func (*IpnsManager) UpdateIPNSEntry ¶
type PaymentManager ¶
PaymentManager is used to interact with payment information in our database
func NewPaymentManager ¶
func NewPaymentManager(db *gorm.DB) *PaymentManager
NewPaymentManager is used to generate our payment manager helper
func (*PaymentManager) ConfirmPayment ¶ added in v1.0.2
func (pm *PaymentManager) ConfirmPayment(txHash string) (*Payments, error)
ConfirmPayment is used to mark a payment as confirmed
func (*PaymentManager) FindPaymentByTxHash ¶ added in v1.0.2
func (pm *PaymentManager) FindPaymentByTxHash(txHash string) (*Payments, error)
FindPaymentByTxHash is used to find a payment by its TxHash
func (*PaymentManager) MarkPaymentAsProcessing ¶ added in v1.0.2
func (pm *PaymentManager) MarkPaymentAsProcessing(txHash string) (*Payments, error)
MarkPaymentAsProcessing is sued to mark a payment as being processed
type Payments ¶ added in v1.0.2
type Payments struct {
gorm.Model
DepositAddress string `gorm:"type:varchar(255)"`
TxHash string `gorm:"type:varchar(255)"`
USDValue float64 `gorm:"type:varchar(255)"` // USDValue is also a "Credit" value, since 1 USD -> 1 Credit
Blockchain string `gorm:"type:varchar(255)"`
Type string `gorm:"type:varchar(255)"` // ETH, RTC, XMR, BTC, LTC
UserName string `gorm:"type:varchar(255)"`
Confirmed bool `gorm:"type:varchar(255)"`
Processing bool `gorm:"type:varchar(255)"`
}
Payments is our payment model
type Upload ¶
type Upload struct {
gorm.Model
Hash string `gorm:"type:varchar(255);not null;"`
Type string `gorm:"type:varchar(255);not null;"` // file, pin
NetworkName string `gorm:"type:varchar(255)"`
HoldTimeInMonths int64 `gorm:"type:integer;not null;"`
UserName string `gorm:"type:varchar(255);not null;"`
GarbageCollectDate time.Time
UserNames pq.StringArray `gorm:"type:text[];not null;"`
}
type UploadManager ¶
func NewUploadManager ¶
func NewUploadManager(db *gorm.DB) *UploadManager
NewUploadManager is used to generate an upload manager interface
func (*UploadManager) FindUploadByHashAndNetwork ¶
func (um *UploadManager) FindUploadByHashAndNetwork(hash, networkName string) (*Upload, error)
func (*UploadManager) FindUploadsByHash ¶
func (um *UploadManager) FindUploadsByHash(hash string) *[]Upload
FindUploadsByHash is used to return all instances of uploads matching the given hash
func (*UploadManager) FindUploadsByNetwork ¶
func (um *UploadManager) FindUploadsByNetwork(networkName string) (*[]Upload, error)
func (*UploadManager) GetUploadByHashForUser ¶
func (um *UploadManager) GetUploadByHashForUser(hash string, username string) []*Upload
GetUploadByHashForUser is used to retrieve the last (most recent) upload for a user
func (*UploadManager) GetUploads ¶
func (um *UploadManager) GetUploads() (*[]Upload, error)
GetUploads is used to return all uploads
func (*UploadManager) GetUploadsForUser ¶
func (um *UploadManager) GetUploadsForUser(username string) (*[]Upload, error)
GetUploadsForUser is used to retrieve all uploads by a user name
func (*UploadManager) NewUpload ¶
func (um *UploadManager) NewUpload(contentHash, uploadType, networkName, username string, holdTimeInMonths int64) (*Upload, error)
NewUpload is used to create a new upload in the database
func (*UploadManager) RunDatabaseGarbageCollection ¶
func (um *UploadManager) RunDatabaseGarbageCollection() (*[]Upload, error)
RunDatabaseGarbageCollection is used to parse through the database and delete all objects whose GCD has passed TODO: Maybe move this to the database file?
func (*UploadManager) RunTestDatabaseGarbageCollection ¶
func (um *UploadManager) RunTestDatabaseGarbageCollection() (*[]Upload, error)
RunTestDatabaseGarbageCollection is used to run a test garbage collection run. NOTE that this will delete literally every single object it detects.
func (*UploadManager) UpdateUpload ¶
func (um *UploadManager) UpdateUpload(holdTimeInMonths int64, username, contentHash, networkName string) (*Upload, error)
UpdateUpload is used to upadte an already existing upload
type User ¶
type User struct {
gorm.Model
UserName string `gorm:"type:varchar(255);unique"`
EmailAddress string `gorm:"type:varchar(255);unique"`
EnterpriseEnabled bool `gorm:"type:boolean"`
AccountEnabled bool `gorm:"type:boolean"`
APIAccess bool `gorm:"type:boolean"`
EmailEnabled bool `gorm:"type:boolean"`
AdminAccess bool `gorm:"type:boolean"`
HashedPassword string `gorm:"type:varchar(255)"`
Credits float64 `gorm:"type:float;default:0"`
// IPFSKeyNames is an array of IPFS keys this user has created
IPFSKeyNames pq.StringArray `gorm:"type:text[];column:ipfs_key_names"`
IPFSKeyIDs pq.StringArray `gorm:"type:text[];column:ipfs_key_ids"`
IPFSNetworkNames pq.StringArray `gorm:"type:text[];column:ipfs_network_names"`
}
User is our user model for anyone who signs up with Temporal
type UserManager ¶
UserManager is our helper to interact with our database
func NewUserManager ¶
func NewUserManager(db *gorm.DB) *UserManager
NewUserManager is used to generate our user manager helper
func (*UserManager) AddCredits ¶ added in v1.0.3
func (um *UserManager) AddCredits(username string, credits float64) (*User, error)
AddCredits is used to add credits to a user account
func (*UserManager) AddIPFSKeyForUser ¶
func (um *UserManager) AddIPFSKeyForUser(username, keyName, keyID string) error
AddIPFSKeyForUser is used to add a key to a user
func (*UserManager) AddIPFSNetworkForUser ¶
func (um *UserManager) AddIPFSNetworkForUser(username, networkName string) error
AddIPFSNetworkForUser is used to update a users allowed private ipfs networks
func (*UserManager) ChangePassword ¶
func (um *UserManager) ChangePassword(username, currentPassword, newPassword string) (bool, error)
ChangePassword is used to change a users password
func (*UserManager) CheckIfAdmin ¶ added in v1.0.3
func (um *UserManager) CheckIfAdmin(username string) (bool, error)
CheckIfAdmin is used to check if an account is an administrator
func (*UserManager) CheckIfKeyOwnedByUser ¶
func (um *UserManager) CheckIfKeyOwnedByUser(username, keyName string) (bool, error)
CheckIfKeyOwnedByUser is used to check if a key is owned by a user
func (*UserManager) CheckIfUserAccountEnabled ¶
func (um *UserManager) CheckIfUserAccountEnabled(username string) (bool, error)
CheckIfUserAccountEnabled is used to check if a user account is enabled
func (*UserManager) CheckIfUserHasAccessToNetwork ¶
func (um *UserManager) CheckIfUserHasAccessToNetwork(username, networkName string) (bool, error)
CheckIfUserHasAccessToNetwork is used to check if a user has access to a private ipfs network
func (*UserManager) ComparePlaintextPasswordToHash ¶
func (um *UserManager) ComparePlaintextPasswordToHash(username, password string) (bool, error)
ComparePlaintextPasswordToHash is a helper method used to validate a users password
func (*UserManager) FindByUserName ¶ added in v1.0.2
func (um *UserManager) FindByUserName(username string) (*User, error)
FindByUserName is used to find a user by their username
func (*UserManager) FindEmailByUserName ¶
func (um *UserManager) FindEmailByUserName(username string) (map[string]string, error)
FindEmailByUserName is used to find an email address by searching for the users eth address the returned map contains their eth address as a key, and their email address as a value
func (*UserManager) GetCredits ¶ added in v1.0.3
func (um *UserManager) GetCredits(username string) (float64, error)
GetCredits is used to get the user's current credits
func (*UserManager) GetKeyIDByName ¶
func (um *UserManager) GetKeyIDByName(username, keyName string) (string, error)
GetKeyIDByName is used to get the ID of a key by searching for its name
func (*UserManager) GetKeysForUser ¶
func (um *UserManager) GetKeysForUser(username string) (map[string][]string, error)
GetKeysForUser is used to get a mapping of a users keys
func (*UserManager) GetPrivateIPFSNetworksForUser ¶
func (um *UserManager) GetPrivateIPFSNetworksForUser(username string) ([]string, error)
GetPrivateIPFSNetworksForUser is used to get a list of allowed private ipfs networks for a user
func (*UserManager) NewUserAccount ¶
func (um *UserManager) NewUserAccount(username, password, email string, enterpriseEnabled bool) (*User, error)
NewUserAccount is used to create a new user account
func (*UserManager) RemoveCredits ¶ added in v1.0.2
func (um *UserManager) RemoveCredits(username string, credits float64) (*User, error)
RemoveCredits is used to remove credits from a users balance