Gokvadmin é uma interface web minimalista para gerenciar bancos de dados de valores-chave. Oferece adição, exclusão e busca de chaves.
Gokvadmin permite conectar motores personalizados para todas as suas necessidades de motor;)
Para começar a usar o Gokvadmin, instale o Go 1.8 ou superior e execute go get
:
$ go get github.com/sigurniv/gokvadmin
Atualmente Gokvadmin suporta alguns bancos de dados de valores-chave incorporados:
Os armazenamentos incorporados geralmente obtêm um bloqueio nos arquivos/diretórios de dados. Gokvadmin permite reutilizar a conexão de banco de dados existente, o que torna possível utilizá-lo com aplicativos em execução.
Gokvadmin inicia o servidor web net/http
em :8083
por padrão e serve arquivos estáticos da pasta $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 e net/http internamente. Tanto o roteador quanto o servidor estão disponíveis nos campos Roteador e Servidor da estrutura gokvadmin, respectivamente. Isso permite a personalização de ambos de acordo com suas necessidades.
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
}
Por padrão, Gokvadmin não usa autenticação, então qualquer pessoa pode fazer login no painel, mas você pode adicionar autenticação de login/senha.
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 você precisa passar a estrutura TLS
para o objeto de configuração
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
}
Você pode adicionar seu mecanismo personalizado para usar com Gokvadmin. Tudo que você precisa fazer é implementar a interface do Engine e registrá-la.
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 frontend. É possível personalizar um layout para seu mecanismo personalizado. Gokvadmin vem com arquivos assets/dist/build.js
e assets/dist/bootstrap.min.css
agrupados. Ele usa o modelo vue.js webpack-simple, então tudo que você precisa fazer para começar a codificar a parte do frontend é:
$ npm init
$ npm run dev
Crie seu componente personalizado na pasta assets/src/engines
e registre-o no arquivo 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 adicionar rotas personalizadas, seu mecanismo deve implementar a interface 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 )
}