diff options
author | RandomChars <random@chars.jp> | 2021-11-20 13:08:01 +0900 |
---|---|---|
committer | RandomChars <random@chars.jp> | 2021-11-20 13:08:01 +0900 |
commit | 685fa86ad3d72bb4b9024d0288a9b4210e3224de (patch) | |
tree | e6f09cf4078f301ffa8383a5af4e07d106e0e549 | |
parent | d73390da0c95b501fedd2583c88829cb4dc9ca8c (diff) |
configurable use of different backend implementations
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | config.go | 2 | ||||
-rw-r--r-- | main.go | 17 |
3 files changed, 18 insertions, 7 deletions
@@ -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() { @@ -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, @@ -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 { |