package api

import (
	"github.com/labstack/echo/v4"
	"go.uber.org/zap"

	db "git.entr0py.de/garionion/inventory/database/sqlite/generated"
)

// API holds all API handlers
type API struct {
	Storage *StorageHandler
	logger  *zap.Logger
}

// New creates a new API instance
func New(dbQueries *db.Queries, logger *zap.Logger) *API {
	return &API{
		Storage: NewStorageHandler(dbQueries, logger),
		logger:  logger,
	}
}

// RegisterRoutes registers all API routes
func (a *API) RegisterRoutes(e *echo.Echo, middleware echo.MiddlewareFunc) {
	// Create API group with middleware
	api := e.Group("/api/v1", middleware)

	// Register routes for each handler
	a.Storage.RegisterRoutes(api)
}