make server automatically create DB schema if not exists (#5)

* add default values for CLI args

* add development docker compose file

* prevent crash if userdata dir does not exist

* accounts, acccountStats

* account stats and create db indices

* compensations and daily runs

* ensure uniqueness of daily seed

* start on port 8001 by default for client parity

* make generated schema match production

* sort imports
This commit is contained in:
Up authored and GitHub committed 2024-05-10 15:30:47 -04:00
1 parent 8a32efeaa3
commit 3ed5f41d58
7 files changed
+108 -20

No files matched your search

+11 -11
View File
@@ -61,22 +61,27 @@ func Init() error {
secret = newSecret
}
err = recordNewDaily()
seed, err := recordNewDaily()
if err != nil {
log.Print(err)
}
log.Printf("Daily Run Seed: %s", Seed())
log.Printf("Daily Run Seed: %s", seed)
scheduler.AddFunc("@daily", func() {
_, err = scheduler.AddFunc("@daily", func() {
time.Sleep(time.Second)
err := recordNewDaily()
seed, err = recordNewDaily()
log.Printf("Daily Run Seed: %s", seed)
if err != nil {
log.Printf("error while recording new daily: %s", err)
}
})
if err != nil {
return err
}
scheduler.Start()
return nil
@@ -95,11 +100,6 @@ func deriveSeed(seedTime time.Time) []byte {
return hashedSeed[:]
}
func recordNewDaily() error {
err := db.TryAddDailyRun(Seed())
if err != nil {
return err
}
return nil
func recordNewDaily() (string, error) {
return db.TryAddDailyRun(Seed())
}
+23 -2
View File
@@ -19,6 +19,7 @@ package api
import (
"database/sql"
"encoding/base64"
"encoding/json"
"fmt"
"net/http"
@@ -303,7 +304,13 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
}
// doesn't return a save, but it works
save, err = savedata.Clear(uuid, slot, daily.Seed(), s)
var seed string
seed, err = db.GetDailyRunSeed()
if err != nil {
httpError(w, r, err, http.StatusInternalServerError)
return
}
save, err = savedata.Clear(uuid, slot, seed, s)
}
if err != nil {
httpError(w, r, err, http.StatusInternalServerError)
@@ -327,7 +334,21 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
// daily
func handleDailySeed(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(daily.Seed()))
seed, err := db.GetDailyRunSeed()
if err != nil {
httpError(w, r, err, http.StatusInternalServerError)
return
}
bytes, err := base64.StdEncoding.DecodeString(seed)
if err != nil {
httpError(w, r, err, http.StatusInternalServerError)
return
}
_, err = w.Write(bytes)
if err != nil {
httpError(w, r, err, http.StatusInternalServerError)
return
}
}
func handleDailyRankings(w http.ResponseWriter, r *http.Request) {