V0.38.2 library packages (#235)
Co-authored-by: gobha <jasafpro@gmail.com> Co-committed-by: gobha <jasafpro@gmail.com>
This commit is contained in:
69
server/handlers/dependencies.go
Normal file
69
server/handlers/dependencies.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"chat-switchboard/models"
|
||||
)
|
||||
|
||||
// ── Extension Dependencies (v0.38.2) ──────────────────
|
||||
// Admin-only read endpoints for dependency graph visibility.
|
||||
// Dependencies are created/deleted implicitly by InstallPackage/DeletePackage.
|
||||
|
||||
// ListDependencies returns all libraries that a package depends on.
|
||||
// GET /api/v1/admin/packages/:id/dependencies
|
||||
func (h *PackageHandler) ListDependencies(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
if h.stores.Dependencies == nil {
|
||||
c.JSON(http.StatusOK, gin.H{"data": []any{}})
|
||||
return
|
||||
}
|
||||
deps, err := h.stores.Dependencies.ListByConsumer(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to list dependencies"})
|
||||
return
|
||||
}
|
||||
if deps == nil {
|
||||
deps = []models.ExtDependency{}
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"data": deps})
|
||||
}
|
||||
|
||||
// ListConsumers returns all packages that depend on a library.
|
||||
// GET /api/v1/admin/packages/:id/consumers
|
||||
func (h *PackageHandler) ListConsumers(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
if h.stores.Dependencies == nil {
|
||||
c.JSON(http.StatusOK, gin.H{"data": []any{}})
|
||||
return
|
||||
}
|
||||
deps, err := h.stores.Dependencies.ListByLibrary(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to list consumers"})
|
||||
return
|
||||
}
|
||||
if deps == nil {
|
||||
deps = []models.ExtDependency{}
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"data": deps})
|
||||
}
|
||||
|
||||
// ListAllDependencies returns the full dependency graph.
|
||||
// GET /api/v1/admin/dependencies
|
||||
func (h *PackageHandler) ListAllDependencies(c *gin.Context) {
|
||||
if h.stores.Dependencies == nil {
|
||||
c.JSON(http.StatusOK, gin.H{"data": []any{}})
|
||||
return
|
||||
}
|
||||
deps, err := h.stores.Dependencies.ListAll(c.Request.Context())
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to list dependencies"})
|
||||
return
|
||||
}
|
||||
if deps == nil {
|
||||
deps = []models.ExtDependency{}
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"data": deps})
|
||||
}
|
||||
Reference in New Issue
Block a user