Gokvadmin は、キーと値のデータベースを管理するための最小限の Web インターフェイスです。キーの追加、削除、検索が可能です。
Gokvadmin を使用すると、あらゆるエンジンのニーズに合わせてカスタム エンジンを接続できます ;)
Gokvadmin の使用を開始するには、Go 1.8 以降をインストールし、 go get
実行します。
$ go get github.com/sigurniv/gokvadmin
現在、Gokvadmin はいくつかの埋め込みキー/値データベースをサポートしています。
組み込みストレージは、データ ファイル/ディレクトリのロックを取得することがよくあります。 Gokvadmin を使用すると、現在存在するデータベース接続を再利用できるため、実行中のアプリケーションで使用できるようになります。
Gokvadmin はデフォルトでnet/http
Web サーバーを: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
}
Gokvadmin は内部で Gorilla/mux と net/http を使用します。ルーターとサーバーの両方は、それぞれ gokvadmin 構造体の Router フィールドと Server フィールドで使用できます。これにより、ニーズに合わせて両方をカスタマイズできます。
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
}
デフォルトでは、Gokvadmin は認証を使用しないため、誰でもダッシュボードにログインできますが、ログイン/パスワード認証を追加できます。
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
}
Gokvadmin で使用するカスタム エンジンを追加できます。必要なのは、エンジン インターフェイスを実装して登録することだけです。
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 はフロントエンドに Vue.js を使用します。カスタムエンジンに合わせてレイアウトをカスタマイズすることが可能です。 Gokvadmin には、 assets/dist/build.js
およびassets/dist/bootstrap.min.css
ファイルがバンドルされています。 vue.js webpack-simple テンプレートを使用しているため、フロントエンド部分のコーディングを開始するために必要なことは次のとおりです。
$ 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 )
}