Help us shape the future of Go! Take the 2026 Go Developer Survey

model

package
v0.1.0-beta.1 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StorageCopiesMin = 1
	StorageCopiesMax = 8
)

Variables

This section is empty.

Functions

func ClampStorageCopies

func ClampStorageCopies(copies int) int

func NewVersionID

func NewVersionID() string

NewVersionID returns an S3-compatible ULID version identifier.

func UploadProgressPercent

func UploadProgressPercent(uploaded, total int64) *int

UploadProgressPercent returns a byte-based integer percent when the total is known.

func ValidStorageCopies

func ValidStorageCopies(copies int) bool

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"
	StorageDataSetStatusUnavailable StorageDataSetStatus = "unavailable"
	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 TaskType

type TaskType string

TaskType represents the kind of async operation.

const (
	TaskTypeUpload         TaskType = "upload"
	TaskTypeEvictCache     TaskType = "evict_cache"
	TaskTypeStorageCleanup TaskType = "storage_cleanup"
)

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"
)

Jump to

Keyboard shortcuts

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