package main

import (
	"net/http"

	"github.com/apache/thrift/lib/go/thrift"
	"github.com/pingcap-inc/trino-thrift-connectors/gen-go/trino"
)

func main() {
	client := NewClient()

	go func() {
		http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
			client.AddCredential(r.Header)
		})

		if err := http.ListenAndServe(":6060", nil); err != nil {
			panic(err)
		}
	}()

	transport, _ := thrift.NewTServerSocket(":9090")
	transportFactory := thrift.NewTFramedTransportFactory(thrift.NewTTransportFactory())
	protocolFactory := thrift.NewTBinaryProtocolFactoryDefault()

	service, err := NewClinicService(client)
	if err != nil {
		panic(err)
	}
	processor := trino.NewTrinoThriftServiceProcessor(service)
	server := thrift.NewTSimpleServer4(processor, transport, transportFactory, protocolFactory)
	panic(server.Serve())
}
