Add README and WIP server lifecycle
This commit is contained in:
parent
96bd6a8602
commit
19a2096193
7 changed files with 118 additions and 2 deletions
|
@ -2,12 +2,18 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"git.ctrlz.es/mgdelacroix/rmsn/model"
|
||||
"git.ctrlz.es/mgdelacroix/rmsn/services/store"
|
||||
"git.ctrlz.es/mgdelacroix/rmsn/web"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Config *model.Config
|
||||
|
||||
Store *store.Store
|
||||
WebServer *http.Server
|
||||
}
|
||||
|
||||
func NewServer(config *model.Config) (*Server, error) {
|
||||
|
@ -15,15 +21,41 @@ func NewServer(config *model.Config) (*Server, error) {
|
|||
return nil, fmt.Errorf("config is not valid: %w", err)
|
||||
}
|
||||
|
||||
srv := &Server{Config: config}
|
||||
webserver, err := web.NewWebServer(*config.Port)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot create webserver: %w", err)
|
||||
}
|
||||
|
||||
return srv, nil
|
||||
store, err := store.NewStore(*config.DatabasePath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot create store: %w", err)
|
||||
}
|
||||
|
||||
return &Server{
|
||||
Config: config,
|
||||
WebServer: webserver,
|
||||
Store: store,
|
||||
}, err
|
||||
}
|
||||
|
||||
func NewServerWithConfigPath(path string) (*Server, error) {
|
||||
config, err := model.ReadConfig(path)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot read config from path %q: %w", path, err)
|
||||
}
|
||||
|
||||
return NewServer(config)
|
||||
}
|
||||
|
||||
func (s *Server) Start() error {
|
||||
// ToDo: start webserver here
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) Close() error {
|
||||
// ToDo: stop webserver
|
||||
// ToDo: close store
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue