package api

import (
	"context"
	"github.com/loveuer/nf-disk/internal/handler"
	"github.com/loveuer/nf-disk/ndh"
	"github.com/loveuer/nf/nft/log"
	"reflect"
)

var (
	apis = make(map[string]ndh.Handler)
)

func register(path string, h ndh.Handler) {
	name := reflect.ValueOf(h).String()
	log.Info("app register: path = %s, name = %s", path, name)
	apis[path] = h
}

func Resolve(path string) (ndh.Handler, bool) {
	h, ok := apis[path]
	return h, ok
}

func Init(ctx context.Context) error {
	register("/api/connection/test", handler.ConnectionTest)
	register("/api/connection/create", handler.ConnectionCreate)
	register("/api/connection/list", handler.ConnectionList)
	register("/api/connection/connect", handler.ConnectionConnect)
	register("/api/connection/disconnect", handler.ConnectionDisconnect)
	register("/api/connection/buckets", handler.ConnectionBuckets)

	return nil
}