Gokvadmin es una interfaz web minimalista para gestionar bases de datos de valores clave. Ofrece agregar, eliminar y buscar claves.
Gokvadmin permite conectar motores personalizados para todas sus necesidades de motor;)
Para comenzar a usar Gokvadmin, instale Go 1.8 o superior y ejecute go get
:
$ go get github.com/sigurniv/gokvadmin
Actualmente, Gokvadmin admite algunas bases de datos clave-valor integradas:
Los almacenamientos integrados a menudo obtienen un bloqueo en los archivos/directorios de datos. Gokvadmin permite reutilizar la conexión de base de datos existente actualmente, lo que hace posible usarla con la aplicación en ejecución.
Gokvadmin inicia el servidor web net/http
en :8083
de forma predeterminada y sirve archivos estáticos desde la carpeta $GOPATH/github.com/sigurniv/gokvadmin/assets
.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
//Use default gokvadmin config
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Gokvadmin usa gorilla/mux y net/http internamente. Tanto el enrutador como el servidor están disponibles en los campos Enrutador y Servidor de la estructura gokvadmin respectivamente. Esto permite la personalización de ambos según sus necesidades.
package main
import (
"github.com/sigurniv/gokvadmin"
"time"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
//Customize the Server instance
admin . Server . Addr = ":3001"
admin . Server . WriteTimeout = time . Second * 15
go admin . Run () // listen and serve on 0.0.0.0.:3001
}
De forma predeterminada, Gokvadmin no utiliza autenticación, por lo que cualquiera puede iniciar sesión en el panel, pero puede agregar autenticación de inicio de sesión/contraseña.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
config . Auth = & gokvadmin. Auth {
Login : "login" ,
Password : "password" ,
}
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Para usar TLS necesita pasar la estructura TLS
al objeto de configuración
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
config . TLS = & gokvadmin. TLS {
CertFile : "server.crt" ,
KeyFile : "server.key" ,
}
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Puede agregar su motor personalizado para usarlo con Gokvadmin. Todo lo que necesitas hacer es implementar la interfaz Engine y registrarla.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // Your db connection
//Use your custom engine
gokvadmin . RegisterEngine ( "custom_engine" , & YourCustomEgine {})
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "custom_engine" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Gokvadmin usa Vue.js para la interfaz. Es posible personalizar un diseño para su motor personalizado. Gokvadmin viene con archivos assets/dist/build.js
y assets/dist/bootstrap.min.css
. Utiliza una plantilla simple de paquete web vue.js, por lo que todo lo que necesita hacer para comenzar a codificar la parte del frontend es:
$ npm init
$ npm run dev
Cree su componente personalizado en la carpeta assets/src/engines
y regístrelo en el archivo assets/src/store/modules/engines.js
.
import YourCustomEngineComponent from '../../components/engines/YourCustomEngineComponent.vue' ;
const state = {
engines : {
'default' : General ,
'boltdb' : General ,
'badger' : General ,
"custom_engine" : YourCustomEngineComponent
} ,
...
} ;
Para agregar rutas personalizadas, su motor debe implementar la interfaz RouterEngine
func ( e CustomEngine ) AddRoutes ( r * mux. Router ) {
r . HandleFunc ( "/api/custom-engine/hello" , func ( w http. ResponseWriter , r * http. Request ) {
w . Header (). Set ( "Content-Type" , "application/json" )
w . Write ([] byte ( "hello from custome-engine" ))
return
}). Methods ( http . MethodGet )
}