diff --git a/README.md b/README.md index 9aba6a5004a7bf6a15e26d3e0191ca54267dd569..4022e153ae51beaecadecc68e233c5dbdc6929f3 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ Image Board ----------- -Taggable image board in 1272 lines of code. +Taggable image board with multiple backend implementations. Get it: ```shell -go get random.chars.jp/git/image-board +go get random.chars.jp/git/image-board/v2 ``` Client example: @@ -13,7 +13,7 @@ package main import ( "fmt" - "random.chars.jp/git/image-board/client" + "random.chars.jp/git/image-board-client" ) func main() { diff --git a/config.go b/config.go index fe336098849cf7ab8d8e48d187dc95df7cee2f68..9a1fcfd34e244854a403d16e780808d087c86855 100644 --- a/config.go +++ b/config.go @@ -22,6 +22,7 @@ type serverConf struct { type systemConf struct { Verbose bool `toml:"verbose"` + Backend string `toml:"backend"` Store string `toml:"store"` SingleUser bool `toml:"single-user"` Private bool `toml:"private"` @@ -67,6 +68,7 @@ func confLoad() { var defConf = conf{ System: systemConf{ Verbose: false, + Backend: "filesystem", Store: "db", SingleUser: true, Private: false, diff --git a/main.go b/main.go index 2a1a46b57e6446cc831fa6c3d9e3aa095bf50fbb..0026fdaa8d5e9dba6cdc8a8bd5692e25217744c4 100644 --- a/main.go +++ b/main.go @@ -23,14 +23,23 @@ func main() { confLoad() - // TODO: support more backends - instance = filesystem.New(config.System.Store, config.System.Verbose) + var doSuccess func() + switch config.System.Backend { + case "filesystem": + instance = filesystem.New(config.System.Store, config.System.Verbose) + doSuccess = func() { + log.Printf("store path %s revision %v compat %v", + config.System.Store, instance.(*filesystem.Store).Revision, instance.(*filesystem.Store).Compat) + } + default: + log.Fatalf("store backend %s does not exist", config.System.Backend) + } + if err := instance.Open(); err != nil { log.Printf("error opening store: %s", err) return } else { - log.Printf("store path %s revision %v compat %v", - config.System.Store, instance.(*filesystem.Store).Revision, instance.(*filesystem.Store).Compat) + doSuccess() } if info, err := instance.User(instance.UserInitial()); err == nil {