Gokvadmin — это минималистичный веб-интерфейс для управления базами данных «ключ-значение». Предлагает добавление, удаление и поиск ключей.
Gokvaadmin позволяет подключать собственные движки для всех ваших потребностей ;)
Чтобы начать использовать Gokvaadmin, установите Go 1.8 или выше и запустите go get
:
$ go get github.com/sigurniv/gokvadmin
В настоящее время Gokvaadmin поддерживает несколько встроенных баз данных «ключ-значение»:
Встроенные хранилища часто блокируют файлы/каталоги данных. Гоквадмин позволяет повторно использовать существующее в данный момент соединение с базой данных, что дает возможность использовать его при работающем приложении.
Gokvadmin по умолчанию запускает веб-сервер net/http
по адресу :8083
и обслуживает статические файлы из папки $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
}
Gokvaadmin использует внутри себя gorilla/mux и net/http. И маршрутизатор, и сервер доступны в полях Router и Server структуры gokvaadmin соответственно. Это позволяет настроить оба для ваших нужд.
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
}
По умолчанию Gokvaadmin не использует аутентификацию, поэтому любой может войти в панель управления, но вы можете добавить аутентификацию по логину и паролю.
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
}
Чтобы использовать TLS, вам необходимо передать структуру TLS
в объект конфигурации.
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
}
Вы можете добавить свой собственный движок для использования с Gokvaadmin. Все, что вам нужно сделать, это реализовать интерфейс Engine и зарегистрировать его.
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
}
Гоквадмин использует Vue.js для интерфейса. Можно настроить макет для вашего собственного движка. Gokvadmin поставляется с файлами assets/dist/build.js
и assets/dist/bootstrap.min.css
. Он использует простой шаблон веб-пакета vue.js, поэтому все, что вам нужно сделать, чтобы начать кодировать интерфейсную часть, это:
$ npm init
$ npm run dev
Создайте свой собственный компонент в папке assets/src/engines
и зарегистрируйте его в файле 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
} ,
...
} ;
Чтобы добавить собственные маршруты, ваш движок должен реализовать интерфейс 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 )
}