package nex

import (
	"context"
	"git.solsynth.dev/hypernet/nexus/pkg/proto"
)

type AllocatableResourceType = string

const (
	AllocatableResourceMq = AllocatableResourceType("mq")
	AllocatableResourceKv = AllocatableResourceType("kv")
)

func (v *Conn) AllocResource(t AllocatableResourceType) any {
	switch t {
	case AllocatableResourceMq:
		conn := v.GetNexusGrpcConn()
		resp, err := proto.NewAllocatorServiceClient(conn).AllocMessageQueue(context.Background(), &proto.AllocMqRequest{})
		if err != nil || !resp.IsSuccess {
			return nil
		}
		return resp.Addr
	case AllocatableResourceKv:
		conn := v.GetNexusGrpcConn()
		resp, err := proto.NewAllocatorServiceClient(conn).AllocKv(context.Background(), &proto.AllocKvRequest{})
		if err != nil || !resp.IsSuccess {
			return nil
		}
		return resp.Endpoints
	default:
		return nil
	}
}