func NewDataSource(mux *http.ServeMux) *GoogleSheetsDataSource {
	queriesTotal := prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "data_query_total",
			Help:      "data query counter",
			Namespace: metricNamespace,
		},
		[]string{"scenario"},
	)
	prometheus.MustRegister(queriesTotal)
	cache := cache.New(300*time.Second, 5*time.Second)
	ds := &GoogleSheetsDataSource{
		googlesheet: &googlesheets.GoogleSheets{
			Cache: cache,
		},
	}
	mux.HandleFunc("/spreadsheets", ds.handleResourceSpreadsheets)
	return ds
}
NewDataSource creates the google sheets datasource and sets up all the routes
package main
import (
	"encoding/json"
	"fmt"
	"net/http"
	"time"
	"github.com/grafana/google-sheets-datasource/pkg/googlesheets"
	"github.com/grafana/google-sheets-datasource/pkg/models"
	"github.com/grafana/grafana-plugin-sdk-go/backend"
	"github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter"
	"github.com/patrickmn/go-cache"
	"github.com/prometheus/client_golang/prometheus"
	"context"
)
const metricNamespace = "sheets_datasource"
type GoogleSheetsDataSource struct {
	googlesheet *googlesheets.GoogleSheets
}