package utils import ( "fmt" "github.com/gofiber/fiber/v3/log" "nysoure/server/model" "os" "path/filepath" "strings" ) const ( SiteMapFileName = "sitemap.xml" ) func GenerateSiteMap(baseURL string, resources []model.Resource) { path := filepath.Join(GetStoragePath(), SiteMapFileName) builder := strings.Builder{} builder.WriteString(``) builder.WriteRune('\n') builder.WriteString(``) builder.WriteRune('\n') for _, resource := range resources { builder.WriteString(" \n") builder.WriteString(" ") builder.WriteString(fmt.Sprintf("%s/resources/%d", baseURL, resource.ID)) builder.WriteString("\n") builder.WriteString(" ") builder.WriteString(resource.UpdatedAt.Format("2006-01-02")) builder.WriteString("\n") builder.WriteString(" \n") } builder.WriteString(``) builder.WriteRune('\n') data := builder.String() if err := os.WriteFile(path, []byte(data), 0644); err != nil { log.Error("failed to write site map file", err) } }