forked from tildetown/town
add dumps script
parent
5876b0ebe3
commit
869eaa5f3b
Binary file not shown.
|
@ -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()))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue