Gokvadmin adalah antarmuka web minimalis untuk mengelola database nilai kunci. Ia menawarkan penambahan, penghapusan, dan pencarian kunci.
Gokvadmin memungkinkan memasukkan mesin khusus untuk semua kebutuhan mesin Anda;)
Untuk mulai menggunakan Gokvadmin, instal Go 1.8 atau lebih tinggi dan jalankan go get
:
$ go get github.com/sigurniv/gokvadmin
Saat ini Gokvadmin mendukung beberapa database nilai kunci yang tertanam:
Penyimpanan tertanam sering kali mendapatkan kunci pada file/direktori data. Gokvadmin memungkinkan untuk menggunakan kembali koneksi database yang ada saat ini, yang memungkinkan untuk menggunakannya dengan aplikasi yang sedang berjalan.
Gokvadmin memulai server web net/http
di :8083
secara default dan menyajikan file statis dari folder $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 menggunakan gorila/mux dan net/http secara internal. Baik router dan server masing-masing tersedia di bidang Router dan Server dari struct gokvadmin. Ini memungkinkan penyesuaian keduanya untuk kebutuhan Anda.
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
}
Secara default Gokvadmin tidak menggunakan otentikasi sehingga siapa pun dapat login ke dashboard, tetapi Anda dapat menambahkan otentikasi login/kata sandi.
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
}
Untuk menggunakan TLS, Anda harus meneruskan struct TLS
ke objek konfigurasi
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
}
Anda dapat menambahkan mesin khusus Anda untuk digunakan dengan Gokvadmin. Yang perlu Anda lakukan hanyalah mengimplementasikan antarmuka Engine dan mendaftarkannya.
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 menggunakan Vue.js untuk frontend. Dimungkinkan untuk menyesuaikan tata letak untuk mesin khusus Anda. Gokvadmin hadir dengan paket assets/dist/build.js
assets/dist/bootstrap.min.css
. Ini menggunakan template sederhana webpack vue.js sehingga yang perlu Anda lakukan untuk mulai mengkode bagian frontend adalah:
$ npm init
$ npm run dev
Buat komponen khusus Anda di folder assets/src/engines
dan daftarkan di file 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
} ,
...
} ;
Untuk menambahkan rute khusus, mesin Anda harus mengimplementasikan antarmuka 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 )
}