Documentation
¶
Index ¶
- Constants
- func ClampStorageCopies(copies int) int
- func NewVersionID() string
- func UploadProgressPercent(uploaded, total int64) *int
- func ValidStorageCopies(copies int) bool
- type Bucket
- type BucketStatus
- type CacheCleanupStatus
- type MultipartPart
- type MultipartStatus
- type MultipartUpload
- type Object
- type ObjectDeletion
- type ObjectState
- type ObjectVersion
- type S3Account
- type StorageCleanupCopy
- type StorageCleanupCopyStatus
- type StorageCopyTransferMethod
- type StorageDataSet
- type StorageDataSetStatus
- type StorageUpload
- type StorageUploadCopy
- type StorageUploadCopyStatus
- type StorageUploadFailure
- type StorageUploadStatus
- type Task
- type TaskStatus
- type TaskType
- type TaskWaitReason
- type WalletOperation
- type WalletOperationStatus
- type WalletOperationType
Constants ¶
const ( StorageCopiesMin = 1 StorageCopiesMax = 8 )
Variables ¶
This section is empty.
Functions ¶
func ClampStorageCopies ¶
func NewVersionID ¶
func NewVersionID() string
NewVersionID returns an S3-compatible ULID version identifier.
func UploadProgressPercent ¶
UploadProgressPercent returns a byte-based integer percent when the total is known.
func ValidStorageCopies ¶
Types ¶
type Bucket ¶
type Bucket struct {
bun.BaseModel `bun:"table:buckets"`
ID int64 `bun:",pk,autoincrement"`
Name string `bun:",unique,notnull"`
ACL []byte `bun:",nullzero"`
OwnerAccessKey *string `bun:",nullzero"`
DefaultCopies *int `bun:",nullzero"`
MinimumDurableCopies *int `bun:",nullzero"`
Status BucketStatus `bun:",notnull,default:'active'"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Owner *S3Account `bun:"rel:belongs-to,join:owner_access_key=access_key,on_update:cascade,on_delete:restrict"`
}
Bucket stores S3 bucket metadata.
type BucketStatus ¶
type BucketStatus string
BucketStatus represents the lifecycle state of a bucket.
const (
BucketStatusActive BucketStatus = "active"
)
func (BucketStatus) IsAdminVisible ¶
func (s BucketStatus) IsAdminVisible() bool
IsAdminVisible returns true — all buckets are visible to admin.
func (BucketStatus) IsVisible ¶
func (s BucketStatus) IsVisible() bool
IsVisible returns true — all buckets are active and visible.
func (BucketStatus) IsWritable ¶
func (s BucketStatus) IsWritable() bool
IsWritable returns true — all active buckets accept writes.
type CacheCleanupStatus ¶
type CacheCleanupStatus string
const ( CacheCleanupStatusPending CacheCleanupStatus = "pending" CacheCleanupStatusDeleted CacheCleanupStatus = "deleted" CacheCleanupStatusSkipped CacheCleanupStatus = "skipped" CacheCleanupStatusFailed CacheCleanupStatus = "failed" )
type MultipartPart ¶
type MultipartPart struct {
bun.BaseModel `bun:"table:multipart_parts"`
ID int64 `bun:",pk,autoincrement"`
UploadID string `bun:",notnull"`
PartNumber int `bun:",notnull"`
Size int64 `bun:",notnull"`
ETag string `bun:",notnull"`
Checksum *string `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Upload *MultipartUpload `bun:"rel:belongs-to,join:upload_id=upload_id"`
}
MultipartPart stores metadata for a single part within a multipart upload.
type MultipartStatus ¶
type MultipartStatus string
MultipartStatus represents the lifecycle state of a multipart upload.
const ( MultipartStatusInitiated MultipartStatus = "initiated" MultipartStatusCompleting MultipartStatus = "completing" MultipartStatusCompleted MultipartStatus = "completed" MultipartStatusAborted MultipartStatus = "aborted" )
type MultipartUpload ¶
type MultipartUpload struct {
bun.BaseModel `bun:"table:multipart_uploads"`
ID int64 `bun:",pk,autoincrement"`
BucketID int64 `bun:",notnull"`
Key string `bun:",notnull"`
UploadID string `bun:",notnull,unique"`
ContentType string `bun:",notnull,default:'application/octet-stream'"`
Metadata map[string]string `bun:"type:jsonb"`
Status MultipartStatus `bun:",notnull,default:'initiated'"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Bucket *Bucket `bun:"rel:belongs-to,join:bucket_id=id"`
}
MultipartUpload tracks an in-progress multipart upload session.
type Object ¶
type Object struct {
bun.BaseModel `bun:"table:objects"`
ID int64 `bun:",pk,autoincrement"`
BucketID int64 `bun:",notnull"`
Key string `bun:",notnull"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Bucket *Bucket `bun:"rel:belongs-to,join:bucket_id=id"`
}
Object stores the stable identity for an S3 object key.
type ObjectDeletion ¶
type ObjectDeletion struct {
bun.BaseModel `bun:"table:object_deletions"`
ID int64 `bun:",pk,autoincrement"`
BucketID int64 `bun:",notnull"`
ObjectID int64 `bun:",notnull"`
Key string `bun:",notnull"`
VersionID string `bun:",unique,notnull"`
CacheKey string `bun:",notnull"`
StorageUploadID *int64 `bun:",nullzero"`
Size int64 `bun:",notnull"`
Checksum string `bun:",notnull"`
CacheCleanupStatus CacheCleanupStatus `bun:",notnull,default:'pending'"`
CacheError *string `bun:",nullzero"`
CacheCleanedAt *time.Time `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
DeletedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
}
ObjectDeletion records an accepted permanent deletion of one object version.
type ObjectState ¶
type ObjectState string
ObjectState represents the lifecycle state of an object. State tracks the storage pipeline lifecycle only.
const ( ObjectStateCached ObjectState = "cached" ObjectStateUploading ObjectState = "uploading" ObjectStateCommitting ObjectState = "committing" ObjectStateReplicating ObjectState = "replicating" ObjectStateStored ObjectState = "stored" ObjectStateFailed ObjectState = "failed" ObjectStateCacheEvicted ObjectState = "cache_evicted" )
type ObjectVersion ¶
type ObjectVersion struct {
bun.BaseModel `bun:"table:object_versions"`
VersionID string `bun:",pk"`
ObjectID int64 `bun:",notnull"`
BucketID int64 `bun:",notnull"`
Key string `bun:",notnull"`
Size int64 `bun:",notnull"`
ETag string `bun:",notnull"`
Checksum string `bun:",notnull"`
ContentType string `bun:",notnull,default:'application/octet-stream'"`
Metadata map[string]string `bun:"type:jsonb"`
CacheKey string `bun:",notnull"`
MultipartUploadID *string `bun:",nullzero"`
StorageUploadID *int64 `bun:",nullzero"`
PieceCID *string `bun:",scanonly"`
RetrievalURL *string `bun:",scanonly"`
InCache bool `bun:",notnull,default:true"`
InFilecoin bool `bun:",scanonly"`
IsCurrent bool `bun:",notnull,default:false"`
IsDeleteMarker bool `bun:",notnull,default:false"`
State ObjectState `bun:",notnull,default:'cached'"`
FailedAtState *ObjectState `bun:",nullzero"`
LastError *string `bun:",nullzero"`
CacheAccessedAt *time.Time `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Object *Object `bun:"rel:belongs-to,join:object_id=id"`
Bucket *Bucket `bun:"rel:belongs-to,join:bucket_id=id"`
}
ObjectVersion stores immutable per-version identity plus mutable lifecycle state.
type S3Account ¶
type S3Account struct {
bun.BaseModel `bun:"table:s3_accounts"`
AccessKey string `bun:",pk"`
SecretKey string `bun:",notnull"`
Role auth.Role `bun:",notnull"`
IsRoot bool `bun:",notnull,default:false"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
}
S3Account stores S3 credentials and roles used by the VersityGW IAM adapter.
type StorageCleanupCopy ¶
type StorageCleanupCopy struct {
bun.BaseModel `bun:"table:storage_cleanup_copies"`
ID int64 `bun:",pk,autoincrement"`
TaskID int64 `bun:",notnull"`
UploadID int64 `bun:",notnull"`
CopyIndex int `bun:",notnull"`
ProviderID *types.OnChainID `bun:"type:text"`
StorageDataSetID *int64 `bun:",nullzero"`
DataSetID *types.OnChainID `bun:"type:text"`
ClientDataSetID *types.OnChainID `bun:"type:text"`
PieceID *types.OnChainID `bun:"type:text"`
PieceCID string `bun:",notnull"`
RetrievalURL *string `bun:",nullzero"`
Status StorageCleanupCopyStatus `bun:",notnull,default:'pending'"`
DeleteTxHash *string `bun:",nullzero"`
LastError *string `bun:",nullzero"`
ScheduledAt *time.Time `bun:",nullzero"`
RemovedAt *time.Time `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Task *Task `bun:"rel:belongs-to,join:task_id=id"`
}
StorageCleanupCopy tracks PDP cleanup for one committed storage copy.
type StorageCleanupCopyStatus ¶
type StorageCleanupCopyStatus string
const ( StorageCleanupCopyStatusPending StorageCleanupCopyStatus = "pending" StorageCleanupCopyStatusDeleteScheduled StorageCleanupCopyStatus = "delete_scheduled" StorageCleanupCopyStatusRemoved StorageCleanupCopyStatus = "removed" StorageCleanupCopyStatusFailed StorageCleanupCopyStatus = "failed" StorageCleanupCopyStatusUnsupported StorageCleanupCopyStatus = "unsupported" )
type StorageCopyTransferMethod ¶
type StorageCopyTransferMethod string
const ( StorageCopyTransferMethodIngress StorageCopyTransferMethod = "ingress" StorageCopyTransferMethodPeerPull StorageCopyTransferMethod = "peer_pull" )
type StorageDataSet ¶
type StorageDataSet struct {
bun.BaseModel `bun:"table:storage_data_sets"`
ID int64 `bun:",pk,autoincrement"`
BucketID int64 `bun:",notnull"`
ProviderID types.OnChainID `bun:"type:text,notnull"`
CopyIndex int `bun:",notnull"`
Generation int `bun:",notnull"`
IsCurrent bool `bun:",notnull"`
DataSetID *types.OnChainID `bun:"type:text"`
ClientDataSetID *types.OnChainID `bun:"type:text"`
Status StorageDataSetStatus `bun:",notnull,default:'pending'"`
CreateTransactionID *string `bun:",nullzero"`
CreateStatusURL *string `bun:",nullzero"`
CreatedByUploadID *int64 `bun:",nullzero"`
LastUsedUploadID *int64 `bun:",nullzero"`
LastError *string `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Bucket *Bucket `bun:"rel:belongs-to,join:bucket_id=id"`
CreatedByUpload *StorageUpload `bun:"rel:belongs-to,join:created_by_upload_id=id"`
LastUsedUpload *StorageUpload `bun:"rel:belongs-to,join:last_used_upload_id=id"`
}
StorageDataSet records the bucket ownership of a provider-scoped data set. CopyIndex names the logical replica slot, which can own several physical generations while a provider replacement is in flight. IsCurrent selects the generation that accepts new writes; replaced generations stay readable until they are verifiably retired.
type StorageDataSetStatus ¶
type StorageDataSetStatus string
const ( StorageDataSetStatusPending StorageDataSetStatus = "pending" StorageDataSetStatusCreating StorageDataSetStatus = "creating" StorageDataSetStatusReady StorageDataSetStatus = "ready" StorageDataSetStatusFailed StorageDataSetStatus = "failed" StorageDataSetStatusDraining StorageDataSetStatus = "draining" StorageDataSetStatusRetired StorageDataSetStatus = "retired" )
type StorageUpload ¶
type StorageUpload struct {
bun.BaseModel `bun:"table:storage_uploads"`
ID int64 `bun:",pk,autoincrement"`
BucketID int64 `bun:",notnull"`
SourceTaskID *int64 `bun:",nullzero"`
SourceVersionID string `bun:",nullzero"`
ContentSize int64 `bun:",notnull"`
Checksum string `bun:",notnull"`
Status StorageUploadStatus `bun:",notnull,default:'running'"`
PieceCID *string `bun:",nullzero"`
RequestedCopies int `bun:",notnull"`
IngressBytesTransferred int64 `bun:",notnull,default:0"`
IngressStoreAttempt int `bun:",notnull,default:0"`
ProgressUpdatedAt *time.Time `bun:",nullzero"`
RawResultJSON json.RawMessage `bun:"type:jsonb,nullzero"`
ErrorMessage *string `bun:",nullzero"`
AcceptError *string `bun:",nullzero"`
AcceptedAt *time.Time `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Bucket *Bucket `bun:"rel:belongs-to,join:bucket_id=id"`
Task *Task `bun:"rel:belongs-to,join:source_task_id=id"`
}
StorageUpload records one SDK upload attempt and its persisted outcome.
type StorageUploadCopy ¶
type StorageUploadCopy struct {
bun.BaseModel `bun:"table:storage_upload_copies"`
ID int64 `bun:",pk,autoincrement"`
UploadID int64 `bun:",notnull"`
CopyIndex int `bun:",notnull"`
ProviderID *types.OnChainID `bun:"type:text"`
DataSetID *types.OnChainID `bun:"type:text,scanonly"`
PieceID *types.OnChainID `bun:"type:text"`
TransferMethod StorageCopyTransferMethod `bun:",notnull"`
Status StorageUploadCopyStatus `bun:",notnull,default:'pending'"`
RetrievalURL *string `bun:",nullzero"`
IsNewDataSet bool `bun:",notnull,default:false"`
StorageDataSetID *int64 `bun:",nullzero"`
CommitExtraDataHex *string `bun:",nullzero"`
CommitTransactionID *string `bun:",nullzero"`
CommitReadyAt *time.Time `bun:",nullzero"`
CommitAttemptID *string `bun:",nullzero"`
CommitAttemptedAt *time.Time `bun:",nullzero"`
CommitSubmissionJSON *string `bun:",nullzero"`
CommitConfirmedTransactionID *string `bun:",nullzero"`
CommitAttentionCode *string `bun:",nullzero"`
CommitAttentionAt *time.Time `bun:",nullzero"`
LastError *string `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Upload *StorageUpload `bun:"rel:belongs-to,join:upload_id=id"`
StorageSet *StorageDataSet `bun:"rel:belongs-to,join:storage_data_set_id=id"`
}
StorageUploadCopy stores one successful copy returned by the SDK.
type StorageUploadCopyStatus ¶
type StorageUploadCopyStatus string
const ( StorageUploadCopyStatusPending StorageUploadCopyStatus = "pending" StorageUploadCopyStatusPieceReady StorageUploadCopyStatus = "piece_ready" StorageUploadCopyStatusCommitting StorageUploadCopyStatus = "committing" StorageUploadCopyStatusCommitted StorageUploadCopyStatus = "committed" StorageUploadCopyStatusFailed StorageUploadCopyStatus = "failed" )
type StorageUploadFailure ¶
type StorageUploadFailure struct {
bun.BaseModel `bun:"table:storage_upload_failures"`
ID int64 `bun:",pk,autoincrement"`
UploadID int64 `bun:",notnull"`
AttemptIndex int `bun:",notnull"`
ProviderID *types.OnChainID `bun:"type:text"`
TransferMethod string `bun:",notnull"`
Stage *string `bun:",nullzero"`
ErrorMessage *string `bun:",nullzero"`
Explicit bool `bun:",notnull,default:false"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
Upload *StorageUpload `bun:"rel:belongs-to,join:upload_id=id"`
}
StorageUploadFailure stores one failed provider attempt returned by the SDK.
type StorageUploadStatus ¶
type StorageUploadStatus string
const ( StorageUploadStatusRunning StorageUploadStatus = "running" StorageUploadStatusIngressReady StorageUploadStatus = "ingress_ready" StorageUploadStatusReadable StorageUploadStatus = "readable" StorageUploadStatusComplete StorageUploadStatus = "complete" StorageUploadStatusFailed StorageUploadStatus = "failed" StorageUploadStatusRejected StorageUploadStatus = "rejected" StorageUploadStatusSuperseded StorageUploadStatus = "superseded" )
type Task ¶
type Task struct {
bun.BaseModel `bun:"table:tasks"`
ID int64 `bun:",pk,autoincrement"`
Type TaskType `bun:",notnull"`
Stage *string `bun:",nullzero"`
RefType string `bun:",notnull"` // "object" or "bucket"
RefID int64 `bun:",notnull"`
RefVersionID string `bun:",notnull"`
IdempotencyKey string `bun:",unique,notnull"`
Payload map[string]interface{} `bun:"type:jsonb"`
Status TaskStatus `bun:",notnull,default:'queued'"`
RetryCount int `bun:",notnull,default:0"`
MaxRetries int `bun:",notnull,default:5"`
LastError *string `bun:",nullzero"`
StatusMessage *string `bun:",nullzero"`
WaitReason *TaskWaitReason `bun:",nullzero"`
ScheduledAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
ClaimedAt *time.Time `bun:",nullzero"`
LeaseUntil *time.Time `bun:",nullzero"`
StartedAt *time.Time `bun:",nullzero"`
CompletedAt *time.Time `bun:",nullzero"`
}
Task represents an async job in the DB-backed queue with lease semantics.
type TaskStatus ¶
type TaskStatus string
TaskStatus represents the processing state of a task.
const ( TaskStatusQueued TaskStatus = "queued" TaskStatusScheduled TaskStatus = "scheduled" TaskStatusRunning TaskStatus = "running" TaskStatusWaiting TaskStatus = "waiting" TaskStatusCompleted TaskStatus = "completed" TaskStatusFailed TaskStatus = "failed" TaskStatusExhausted TaskStatus = "exhausted" TaskStatusCancelled TaskStatus = "cancelled" )
type TaskWaitReason ¶
type TaskWaitReason string
TaskWaitReason identifies why a task is waiting without treating the wait as an error.
const ( TaskWaitReasonDependency TaskWaitReason = "dependency" TaskWaitReasonExternalConfirmation TaskWaitReason = "external_confirmation" )
type WalletOperation ¶
type WalletOperation struct {
bun.BaseModel `bun:"table:wallet_operations"`
ID int64 `bun:",pk,autoincrement"`
Type WalletOperationType `bun:",notnull"`
ClientRequestID string `bun:",notnull"`
Amount string `bun:",notnull"`
Status WalletOperationStatus `bun:",notnull,default:'pending'"`
TxHash *string `bun:",nullzero"`
LastError *string `bun:",nullzero"`
LeaseUntil *time.Time `bun:",nullzero"`
StartedAt *time.Time `bun:",nullzero"`
SubmittedAt *time.Time `bun:",nullzero"`
CompletedAt *time.Time `bun:",nullzero"`
CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
}
type WalletOperationStatus ¶
type WalletOperationStatus string
const ( WalletOperationStatusPending WalletOperationStatus = "pending" WalletOperationStatusRunning WalletOperationStatus = "running" WalletOperationStatusSubmitted WalletOperationStatus = "submitted" WalletOperationStatusConfirmed WalletOperationStatus = "confirmed" WalletOperationStatusFailed WalletOperationStatus = "failed" WalletOperationStatusUnknown WalletOperationStatus = "unknown" )
type WalletOperationType ¶
type WalletOperationType string
const ( WalletOperationTypeFund WalletOperationType = "fund" WalletOperationTypeWithdraw WalletOperationType = "withdraw" WalletOperationTypeApprove WalletOperationType = "approve" )