package beerpongelo import ( "encoding/json" "log" "net/http" "os" "git.kapelle.org/niklas/beerpong-elo/internal/model" "git.kapelle.org/niklas/beerpong-elo/internal/repo" "git.kapelle.org/niklas/beerpong-elo/internal/web" ) type Config struct { DBHost string DBUsername string DBPassword string DBName string Address string } func Start(config Config) { repo, err := repo.NewSQLRepo(config.DBHost, config.DBUsername, config.DBPassword, config.DBName) if err != nil { log.Fatalf("Failed to start server: %s", err) } mux := web.CreateWebserver(repo) http.ListenAndServe(config.Address, mux) } func Import(config Config, file string) { repo, err := repo.NewSQLRepo(config.DBHost, config.DBUsername, config.DBPassword, config.DBName) if err != nil { log.Fatalf("Failed to import file %s: %s", file, err) } controller := newController(repo) err = loadFromFile(controller, file) if err != nil { log.Fatalf("Failed to import file %s: %s", file, err) } } func loadFromFile(c Controller, path string) error { content, err := os.ReadFile(path) if err != nil { return err } var payload []model.Game err = json.Unmarshal(content, &payload) if err != nil { return err } for _, game := range payload { _, err = c.AddGame(game) if err != nil { return err } } log.Printf("Imported %d games", len(payload)) return nil }