Gokvadmin est une interface Web minimaliste pour gérer des bases de données clé-valeur. Il propose l'ajout, la suppression et la recherche de clés.
Gokvadmin permet de brancher des moteurs personnalisés pour tous vos besoins en matière de moteur ;)
Pour commencer à utiliser Gokvadmin, installez Go 1.8 ou supérieur et exécutez go get
:
$ go get github.com/sigurniv/gokvadmin
Actuellement, Gokvadmin prend en charge quelques bases de données clé-valeur intégrées :
Les stockages intégrés obtiennent souvent un verrou sur les fichiers/répertoires de données. Gokvadmin permet de réutiliser la connexion à la base de données actuellement existante, ce qui permet de l'utiliser avec une application en cours d'exécution.
Gokvadmin démarre le serveur Web net/http
à :8083
par défaut et sert les fichiers statiques du dossier $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 utilise gorilla/mux et net/http en interne. Le routeur et le serveur sont disponibles respectivement dans les champs Routeur et Serveur de la structure gokvadmin. Cela permet de personnaliser les deux selon vos besoins.
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
}
Par défaut, Gokvadmin n'utilise aucune authentification afin que tout le monde puisse se connecter au tableau de bord, mais vous pouvez ajouter une authentification par login/mot de passe.
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
}
Pour utiliser TLS, vous devez transmettre la structure TLS
à l'objet de configuration
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
}
Vous pouvez ajouter votre moteur personnalisé à utiliser avec Gokvadmin. Tout ce que vous avez à faire est d’implémenter l’interface Engine et de l’enregistrer.
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 utilise Vue.js pour le frontend. Il est possible de personnaliser une mise en page pour votre moteur personnalisé. Gokvadmin est livré avec les fichiers assets/dist/build.js
et assets/dist/bootstrap.min.css
regroupés. Il utilise le modèle vue.js webpack-simple, donc tout ce que vous devez faire pour commencer à coder la partie frontend est :
$ npm init
$ npm run dev
Créez votre composant personnalisé dans le dossier assets/src/engines
et enregistrez-le dans le fichier 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
} ,
...
} ;
Pour ajouter des itinéraires personnalisés, votre moteur doit implémenter l'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 )
}