first commit

This commit is contained in:
npc0-hue
2026-07-11 14:56:10 +08:00
commit 7e05d0a4e7
660 changed files with 78119 additions and 0 deletions
+187
View File
@@ -0,0 +1,187 @@
package domain
import "time"
type ArtifactTransferDirection string
const (
ArtifactTransferDirectionUpload ArtifactTransferDirection = "upload"
)
type ArtifactTransferOpen struct {
RunEndpointID string
SessionToken string
ArtifactID string
Direction ArtifactTransferDirection
OwnerKind ArtifactOwnerKind
OwnerID string
SizeBytes int64
ChunkSizeBytes int
Checksum string
IdempotencyKey string
}
type ArtifactTransferOpenResult struct {
Accepted bool
TransferID string
Direction ArtifactTransferDirection
Artifact Artifact
TotalChunks int
ChunkSizeBytes int
ReceivedChunkIndexes []int
NextMissingChunkIndex int
Completed bool
Duplicate bool
ServerTime time.Time
}
type ArtifactChunkUpload struct {
RunEndpointID string
SessionToken string
TransferID string
ArtifactID string
ChunkIndex int
Offset int64
SizeBytes int
Checksum string
Payload []byte
}
type ArtifactChunkUploadResult struct {
Accepted bool
TransferID string
ArtifactID string
ChunkIndex int
ReceivedChunkIndexes []int
NextMissingChunkIndex int
Duplicate bool
ServerTime time.Time
}
type ArtifactTransferStatusQuery struct {
RunEndpointID string
SessionToken string
TransferID string
ArtifactID string
}
type ArtifactTransferStatusResult struct {
Accepted bool
TransferID string
ArtifactID string
Direction ArtifactTransferDirection
TotalChunks int
ChunkSizeBytes int
ReceivedChunkIndexes []int
NextMissingChunkIndex int
Completed bool
ServerTime time.Time
}
type ArtifactTransferComplete struct {
RunEndpointID string
SessionToken string
TransferID string
ArtifactID string
Checksum string
SizeBytes int64
}
type ArtifactTransferCompleteResult struct {
Accepted bool
TransferID string
Artifact Artifact
Completed bool
ServerTime time.Time
}
type ArtifactChunkRecord struct {
ChunkIndex int
Offset int64
SizeBytes int
Checksum string
Payload []byte
ReceivedAt time.Time
}
type ArtifactTransferSession struct {
TransferID string
RunEndpointID string
ArtifactID string
Direction ArtifactTransferDirection
OwnerKind ArtifactOwnerKind
OwnerID string
SizeBytes int64
ChunkSizeBytes int
Checksum string
IdempotencyKey string
TotalChunks int
ReceivedChunks map[int]ArtifactChunkRecord
Completed bool
CreatedAt time.Time
UpdatedAt time.Time
}
func CopyArtifactTransferOpen(open ArtifactTransferOpen) ArtifactTransferOpen {
return open
}
func CopyArtifactChunkUpload(chunk ArtifactChunkUpload) ArtifactChunkUpload {
chunk.Payload = CopyBytes(chunk.Payload)
return chunk
}
func CopyArtifactTransferOpenResult(result ArtifactTransferOpenResult) ArtifactTransferOpenResult {
result.Artifact = CopyArtifact(result.Artifact)
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
return result
}
func CopyArtifactChunkUploadResult(result ArtifactChunkUploadResult) ArtifactChunkUploadResult {
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
return result
}
func CopyArtifactTransferStatusResult(result ArtifactTransferStatusResult) ArtifactTransferStatusResult {
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
return result
}
func CopyArtifactTransferCompleteResult(result ArtifactTransferCompleteResult) ArtifactTransferCompleteResult {
result.Artifact = CopyArtifact(result.Artifact)
return result
}
func CopyArtifactChunkRecord(record ArtifactChunkRecord) ArtifactChunkRecord {
record.Payload = CopyBytes(record.Payload)
return record
}
func CopyArtifactTransferSession(session ArtifactTransferSession) ArtifactTransferSession {
if session.ReceivedChunks != nil {
chunks := make(map[int]ArtifactChunkRecord, len(session.ReceivedChunks))
for index, record := range session.ReceivedChunks {
chunks[index] = CopyArtifactChunkRecord(record)
}
session.ReceivedChunks = chunks
}
return session
}
func CopyBytes(values []byte) []byte {
if values == nil {
return nil
}
out := make([]byte, len(values))
copy(out, values)
return out
}
func CopyIntSlice(values []int) []int {
if values == nil {
return nil
}
out := make([]int, len(values))
copy(out, values)
return out
}