Added get APIs for Stored Procedures, Triggers and User Defined Functions

This commit is contained in:
Pijus Kamandulis 2024-02-10 21:05:08 +02:00
parent 0689119a64
commit a4181ef6bf
10 changed files with 173 additions and 1 deletions

15
api/handlers/offers.go Normal file
View File

@ -0,0 +1,15 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
)
func GetOffers(c *gin.Context) {
c.IndentedJSON(http.StatusOK, gin.H{
"_rid": "",
"_count": 0,
"Offers": []interface{}{},
})
}

View File

@ -0,0 +1,22 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/pikami/cosmium/internal/repositories"
)
func GetAllStoredProcedures(c *gin.Context) {
databaseId := c.Param("databaseId")
collectionId := c.Param("collId")
sps, status := repositories.GetAllStoredProcedures(databaseId, collectionId)
if status == repositories.StatusOk {
c.IndentedJSON(http.StatusOK, gin.H{"_rid": "", "StoredProcedures": sps, "_count": len(sps)})
return
}
c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": "Unknown error"})
}

22
api/handlers/triggers.go Normal file
View File

@ -0,0 +1,22 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/pikami/cosmium/internal/repositories"
)
func GetAllTriggers(c *gin.Context) {
databaseId := c.Param("databaseId")
collectionId := c.Param("collId")
triggers, status := repositories.GetAllTriggers(databaseId, collectionId)
if status == repositories.StatusOk {
c.IndentedJSON(http.StatusOK, gin.H{"_rid": "", "Triggers": triggers, "_count": len(triggers)})
return
}
c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": "Unknown error"})
}

View File

@ -0,0 +1,22 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/pikami/cosmium/internal/repositories"
)
func GetAllUserDefinedFunctions(c *gin.Context) {
databaseId := c.Param("databaseId")
collectionId := c.Param("collId")
udfs, status := repositories.GetAllUserDefinedFunctions(databaseId, collectionId)
if status == repositories.StatusOk {
c.IndentedJSON(http.StatusOK, gin.H{"_rid": "", "UserDefinedFunctions": udfs, "_count": len(udfs)})
return
}
c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": "Unknown error"})
}

View File

@ -18,6 +18,11 @@ func CreateRouter() *gin.Engine {
router.GET("/dbs/:databaseId", handlers.GetDatabase) router.GET("/dbs/:databaseId", handlers.GetDatabase)
router.DELETE("/dbs/:databaseId", handlers.DeleteDatabase) router.DELETE("/dbs/:databaseId", handlers.DeleteDatabase)
router.GET("/dbs/:databaseId/colls/:collId/udfs", handlers.GetAllUserDefinedFunctions)
router.GET("/dbs/:databaseId/colls/:collId/sprocs", handlers.GetAllStoredProcedures)
router.GET("/dbs/:databaseId/colls/:collId/triggers", handlers.GetAllTriggers)
router.GET("/offers", handlers.GetOffers)
router.GET("/", handlers.GetServerInfo) router.GET("/", handlers.GetServerInfo)
return router return router

View File

@ -6,7 +6,7 @@ var collections = []Collection{
} }
func GetAllCollections(databaseId string) ([]Collection, RepositoryStatus) { func GetAllCollections(databaseId string) ([]Collection, RepositoryStatus) {
var dbCollections []Collection dbCollections := make([]Collection, 0)
for _, coll := range collections { for _, coll := range collections {
if coll.internals.databaseId == databaseId { if coll.internals.databaseId == databaseId {

View File

@ -45,3 +45,44 @@ type Collection struct {
databaseId string databaseId string
} }
} }
type UserDefinedFunction struct {
Body string `json:"body"`
ID string `json:"id"`
Rid string `json:"_rid"`
Ts int `json:"_ts"`
Self string `json:"_self"`
Etag string `json:"_etag"`
internals struct {
databaseId string
collectionId string
}
}
type StoredProcedure struct {
Body string `json:"body"`
ID string `json:"id"`
Rid string `json:"_rid"`
Ts int `json:"_ts"`
Self string `json:"_self"`
Etag string `json:"_etag"`
internals struct {
databaseId string
collectionId string
}
}
type Trigger struct {
Body string `json:"body"`
ID string `json:"id"`
TriggerOperation string `json:"triggerOperation"`
TriggerType string `json:"triggerType"`
Rid string `json:"_rid"`
Ts int `json:"_ts"`
Self string `json:"_self"`
Etag string `json:"_etag"`
internals struct {
databaseId string
collectionId string
}
}

View File

@ -0,0 +1,15 @@
package repositories
var storedProcedures = []StoredProcedure{}
func GetAllStoredProcedures(databaseId string, collectionId string) ([]StoredProcedure, RepositoryStatus) {
sps := make([]StoredProcedure, 0)
for _, coll := range storedProcedures {
if coll.internals.databaseId == databaseId && coll.internals.collectionId == collectionId {
sps = append(sps, coll)
}
}
return sps, StatusOk
}

View File

@ -0,0 +1,15 @@
package repositories
var triggers = []Trigger{}
func GetAllTriggers(databaseId string, collectionId string) ([]Trigger, RepositoryStatus) {
sps := make([]Trigger, 0)
for _, coll := range triggers {
if coll.internals.databaseId == databaseId && coll.internals.collectionId == collectionId {
sps = append(sps, coll)
}
}
return sps, StatusOk
}

View File

@ -0,0 +1,15 @@
package repositories
var userDefinedFunctions = []UserDefinedFunction{}
func GetAllUserDefinedFunctions(databaseId string, collectionId string) ([]UserDefinedFunction, RepositoryStatus) {
udfs := make([]UserDefinedFunction, 0)
for _, coll := range userDefinedFunctions {
if coll.internals.databaseId == databaseId && coll.internals.collectionId == collectionId {
udfs = append(udfs, coll)
}
}
return udfs, StatusOk
}