Files
git-pages/src/migrate.go
2025-11-22 07:05:07 +00:00

49 lines
1.2 KiB
Go

package git_pages
import (
"context"
"fmt"
"slices"
"strings"
)
func RunMigration(ctx context.Context, name string) error {
switch name {
case "create-domain-markers":
return createDomainMarkers(ctx)
default:
return fmt.Errorf("unknown migration name (expected one of \"create-domain-markers\")")
}
}
func createDomainMarkers(ctx context.Context) error {
if backend.HasFeature(ctx, FeatureCheckDomainMarker) {
logc.Print(ctx, "store already has domain markers")
return nil
}
var manifests, domains []string
manifests, err := backend.ListManifests(ctx)
if err != nil {
return fmt.Errorf("list manifests: %w", err)
}
slices.Sort(manifests)
for _, manifest := range manifests {
domain, _, _ := strings.Cut(manifest, "/")
if len(domains) == 0 || domains[len(domains)-1] != domain {
domains = append(domains, domain)
}
}
for idx, domain := range domains {
logc.Printf(ctx, "(%d / %d) creating domain %s", idx+1, len(domains), domain)
if err := backend.CreateDomain(ctx, domain); err != nil {
return fmt.Errorf("creating domain %s: %w", domain, err)
}
}
if err := backend.EnableFeature(ctx, FeatureCheckDomainMarker); err != nil {
return err
}
logc.Printf(ctx, "created markers for %d domains", len(domains))
return nil
}