func CacheList()

in go/cache.go [334:400]


func CacheList() error {
	// [START cache_list]
	ctx := context.Background()
	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		APIKey:  os.Getenv("GEMINI_API_KEY"),
		Backend: genai.BackendGeminiAPI,
	})
	if err != nil {
		log.Fatal(err)
	}

	// For demonstration, create a cache first.
	modelName := "gemini-1.5-flash-001"
	document, err := client.Files.UploadFromPath(
		ctx, 
		filepath.Join(getMedia(), "a11.txt"), 
		&genai.UploadFileConfig{
			MIMEType : "text/plain",
		},
	)
	if err != nil {
		log.Fatal(err)
	}
	parts := []*genai.Part{
		genai.NewPartFromURI(document.URI, document.MIMEType),
	}
	contents := []*genai.Content{
		genai.NewContentFromParts(parts, genai.RoleUser),
	}
	cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
		Contents:          contents,
		SystemInstruction: genai.NewContentFromText(
			"You are an expert analyzing transcripts.", genai.RoleUser,
		),
	})
	if err != nil {
		log.Fatal(err)
	}

	// List caches using the List method with a page size of 2.
	page, err := client.Caches.List(ctx, &genai.ListCachedContentsConfig{PageSize: 2})
	if err != nil {
		log.Fatal(err)
	}

	pageIndex := 1
	for {
		fmt.Printf("Listing caches (page %d):\n", pageIndex)
		for _, item := range page.Items {
			fmt.Println("   ", item.Name)
		}
		if page.NextPageToken == "" {
			break
		}
		page, err = page.Next(ctx)
		if err == genai.ErrPageDone {
			break
		} else if err != nil {
			return err
		}
		pageIndex++
	}
	// [END cache_list]

	_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
	return err
}