mirror of
https://github.com/pikami/cosmium.git
synced 2025-02-02 22:18:38 +00:00
90 lines
2.2 KiB
Go
90 lines
2.2 KiB
Go
package main
|
|
|
|
import "C"
|
|
import (
|
|
"encoding/json"
|
|
|
|
repositorymodels "github.com/pikami/cosmium/internal/repository_models"
|
|
)
|
|
|
|
//export CreateDatabase
|
|
func CreateDatabase(serverName *C.char, databaseJson *C.char) int {
|
|
serverNameStr := C.GoString(serverName)
|
|
databaseStr := C.GoString(databaseJson)
|
|
|
|
var ok bool
|
|
var serverInstance *ServerInstance
|
|
if serverInstance, ok = getInstance(serverNameStr); !ok {
|
|
return ResponseServerInstanceNotFound
|
|
}
|
|
|
|
var database repositorymodels.Database
|
|
err := json.Unmarshal([]byte(databaseStr), &database)
|
|
if err != nil {
|
|
return ResponseFailedToParseRequest
|
|
}
|
|
|
|
_, code := serverInstance.repository.CreateDatabase(database)
|
|
|
|
return repositoryStatusToResponseCode(code)
|
|
}
|
|
|
|
//export GetDatabase
|
|
func GetDatabase(serverName *C.char, databaseId *C.char) *C.char {
|
|
serverNameStr := C.GoString(serverName)
|
|
databaseIdStr := C.GoString(databaseId)
|
|
|
|
var ok bool
|
|
var serverInstance *ServerInstance
|
|
if serverInstance, ok = getInstance(serverNameStr); !ok {
|
|
return C.CString("")
|
|
}
|
|
|
|
database, code := serverInstance.repository.GetDatabase(databaseIdStr)
|
|
if code != repositorymodels.StatusOk {
|
|
return C.CString("")
|
|
}
|
|
|
|
databaseJson, _ := json.Marshal(database)
|
|
return C.CString(string(databaseJson))
|
|
}
|
|
|
|
//export GetAllDatabases
|
|
func GetAllDatabases(serverName *C.char) *C.char {
|
|
serverNameStr := C.GoString(serverName)
|
|
|
|
var ok bool
|
|
var serverInstance *ServerInstance
|
|
if serverInstance, ok = getInstance(serverNameStr); !ok {
|
|
return C.CString("")
|
|
}
|
|
|
|
databases, code := serverInstance.repository.GetAllDatabases()
|
|
if code != repositorymodels.StatusOk {
|
|
return C.CString("")
|
|
}
|
|
|
|
databasesJson, err := json.Marshal(databases)
|
|
if err != nil {
|
|
return C.CString("")
|
|
}
|
|
|
|
return C.CString(string(databasesJson))
|
|
}
|
|
|
|
//export DeleteDatabase
|
|
func DeleteDatabase(serverName *C.char, databaseId *C.char) int {
|
|
serverNameStr := C.GoString(serverName)
|
|
databaseIdStr := C.GoString(databaseId)
|
|
|
|
var ok bool
|
|
var serverInstance *ServerInstance
|
|
if serverInstance, ok = getInstance(serverNameStr); !ok {
|
|
return ResponseServerInstanceNotFound
|
|
}
|
|
|
|
code := serverInstance.repository.DeleteDatabase(databaseIdStr)
|
|
|
|
return repositoryStatusToResponseCode(code)
|
|
}
|