File size: 1,157 Bytes
1f10f31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package features

import (
	"context"

	"github.com/openmeterio/openmeter/openmeter/llmcost"
	"github.com/openmeterio/openmeter/openmeter/meter"
	"github.com/openmeterio/openmeter/openmeter/productcatalog/feature"
	"github.com/openmeterio/openmeter/pkg/framework/transport/httptransport"
)

type Handler interface {
	ListFeatures() ListFeaturesHandler
	GetFeature() GetFeatureHandler
	CreateFeature() CreateFeatureHandler
	UpdateFeature() UpdateFeatureHandler
	DeleteFeature() DeleteFeatureHandler
}

type handler struct {
	resolveNamespace func(ctx context.Context) (string, error)
	connector        feature.FeatureConnector
	meterService     meter.Service
	llmcostService   llmcost.Service
	options          []httptransport.HandlerOption
}

func New(
	resolveNamespace func(ctx context.Context) (string, error),
	connector feature.FeatureConnector,
	meterService meter.Service,
	llmcostService llmcost.Service,
	options ...httptransport.HandlerOption,
) Handler {
	return &handler{
		resolveNamespace: resolveNamespace,
		connector:        connector,
		meterService:     meterService,
		llmcostService:   llmcostService,
		options:          options,
	}
}