goes/goes.go
Nicolas Dextraze 84e8e469ad Rebuild indexes
2018-03-08 14:59:07 -08:00

54 lines
1.2 KiB
Go

package main
import (
actions "./actions"
serializer "./serializer"
server "./server"
storage "./storage"
"flag"
"fmt"
"os"
"path"
)
var addr = flag.String("addr", "tcp://127.0.0.1:12345", "zeromq address to listen to")
var db = flag.String("db", fmt.Sprintf(".%cevents", os.PathSeparator), "path for storage")
var buildTypeIndexes = flag.Bool("buildTypeIndexes", false, "Build type indexes")
var buildIndexes = flag.Bool("buildIndexes", false, "Build indexes")
func PathIsAbsolute(s string) bool {
if len(s) > 1 && s[1] == ':' {
return true
}
return path.IsAbs(s)
}
func main() {
fmt.Println("GoES - Go Event Store")
fmt.Println("Released under the MIT license. See LICENSE file.")
fmt.Println()
flag.Parse()
storagePath := *db
if !PathIsAbsolute(storagePath) {
wd, _ := os.Getwd()
storagePath = path.Join(wd, storagePath)
}
diskStorage := storage.NewDailyDiskStorage(storagePath)
if *buildIndexes {
diskStorage.RebuildIndexes()
return
}
if *buildTypeIndexes {
diskStorage.RebuildTypeIndexes()
return
}
var handler = actions.NewActionsHandler(diskStorage, serializer.NewPassthruSerializer())
server.Bind(*addr)
server.Listen(handler)
server.Destroy()
}