Watch
1
0
Fork
You've already forked pkg-proxy
1
mirror of https://github.com/git-pkgs/proxy.git synced 2026-09-16 07:42:05 -04:00
pkg-proxy/internal/handler/container_metadata.go

39 lines
1.3 KiB
Go
Raw Permalink Normal View History

package handler
import (
"bytes"
"context"
"database/sql"
"fmt"
"time"
"github.com/git-pkgs/proxy/internal/database"
)
2026-09-03 16:59:12 +01:00
func (h *ContainerHandler) storeContainerMetadata(ctx context.Context, ecosystem, cacheKey string, body []byte, etag, link, contentType, contentDigest string, lastModified, fetchedAt time.Time) (int64, error) {
if h.proxy.DB == nil || h.proxy.Storage == nil {
return int64(len(body)), nil
}
storagePath := metadataStoragePath(ecosystem, cacheKey)
size, _, err := h.proxy.Storage.Store(ctx, storagePath, bytes.NewReader(body))
if err != nil {
return 0, fmt.Errorf("storing metadata: %w", err)
}
err = h.proxy.DB.UpsertMetadataCache(&database.MetadataCacheEntry{
Ecosystem: ecosystem,
Name: cacheKey,
StoragePath: storagePath,
ETag: sql.NullString{String: etag, Valid: etag != ""},
Link: sql.NullString{String: link, Valid: link != ""},
ContentType: sql.NullString{String: contentType, Valid: contentType != ""},
ContentDigest: sql.NullString{String: contentDigest, Valid: contentDigest != ""},
Size: sql.NullInt64{Int64: size, Valid: true},
2026-09-03 16:59:12 +01:00
LastModified: sql.NullTime{Time: lastModified, Valid: !lastModified.IsZero()},
FetchedAt: sql.NullTime{Time: fetchedAt, Valid: !fetchedAt.IsZero()},
})
if err != nil {
return 0, err
}
return size, nil
}