diff --git a/cmd/dumps/dumps b/cmd/dumps/dumps new file mode 100755 index 0000000..aeba137 Binary files /dev/null and b/cmd/dumps/dumps differ diff --git a/cmd/dumps/main.go b/cmd/dumps/main.go new file mode 100644 index 0000000..cb53bb2 --- /dev/null +++ b/cmd/dumps/main.go @@ -0,0 +1,91 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "strings" + "time" + + "git.tilde.town/tildetown/town/models" + "git.tilde.town/tildetown/town/signup" + "github.com/AlecAivazis/survey/v2" +) + +func confirmContinue(msg string) { + var serr error + var conf bool + if serr = survey.AskOne(&survey.Confirm{ + Message: msg, + Default: false, + }, &conf); serr != nil { + os.Exit(2) + } + if !conf { + os.Exit(1) + } +} + +type jsonSignup struct { + Created int + Username string + Reasons string + Plans string + Referral string + Socials string + Notes string +} + +func main() { + lol, err := os.ReadFile("/town/var/signups.json") + if err != nil { + panic(err) + } + + db, err := signup.ConnectDB() + if err != nil { + panic(err) + } + + lines := strings.Split(string(lol), "\n") + errs := []error{} + signups := make([]jsonSignup, len(lines)) + for i, l := range lines { + s := jsonSignup{} + err := json.Unmarshal([]byte(l), &s) + if err != nil { + fmt.Printf("%s %s", l, err.Error()) + errs = append(errs, err) + } else { + signups[i] = s + } + } + if len(errs) > 0 { + confirmContinue(fmt.Sprintf("%d errors found deserializing; continue?", len(errs))) + } + + for _, s := range signups { + ts := models.TownSignup{ + Created: time.Unix(int64(s.Created), 0), + Email: "TODO crap i forgot to dump this i think", + How: s.Referral, + Why: s.Reasons + "\n" + s.Plans, + Links: s.Socials, + } + if err = ts.Insert(db); err != nil { + confirmContinue(fmt.Sprintf("%#v led to error %s; continue?", ts, err.Error())) + } + + if s.Notes != "" { + ts.Notes = []models.SignupNote{ + { + Author: "IMPORT", + Content: s.Notes, + }, + } + if err = ts.RefreshNotes(db); err != nil { + confirmContinue(fmt.Sprintf("%#v led to error %s; continue?", ts, err.Error())) + } + } + } +}