GraphQL API and utilities for the rpdata project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

83 lines
1.7 KiB

package main
import (
"flag"
"log"
"os"
"time"
"git.aiterp.net/rpdata/api/internal/store"
"git.aiterp.net/rpdata/api/models/posts"
"git.aiterp.net/rpdata/api/models/logs"
)
var dateStr string
var tzStr string
var channel string
var fileName string
func main() {
var inputPosts []Post
flag.StringVar(&dateStr, "date", "2013-04-04", "Date in YYYY-MM-DD form.")
flag.StringVar(&tzStr, "tz", "Europe/Oslo", "Time zone for the date.")
flag.StringVar(&channel, "channel", "#RedrockAgency", "Channel it's set in.")
flag.StringVar(&fileName, "file", "-", "File to read from (- = stdin).")
flag.Parse()
tz, err := time.LoadLocation(tzStr)
if err != nil {
log.Fatalln("Parse timezone:", err)
}
date, err := time.ParseInLocation("2006-01-02", dateStr, tz)
if err != nil {
log.Fatalln("Parse date:", err)
}
err = store.Init()
if err != nil {
log.Fatalln("Init store:", err)
}
if fileName != "-" {
file, fileErr := os.Open(fileName)
if fileErr != nil {
log.Fatalln("Open file:", fileErr)
}
inputPosts, err = parsePosts(file, date)
file.Close()
} else {
inputPosts, err = parsePosts(os.Stdin, date)
}
if err != nil {
log.Fatalln("Read inputPosts:", err)
}
if len(inputPosts) == 0 {
log.Fatalln("Input file contained no posts.")
}
l, err := logs.Add(inputPosts[0].Time, channel, "", "", "", false)
if err != nil {
log.Fatalln("Add log:", err)
}
log.Println("Added log", l.ID)
for _, inputPost := range inputPosts {
p, err := posts.Add(l, inputPost.Time, inputPost.Kind, inputPost.Nick, inputPost.Text)
if err != nil {
log.Fatalln("Add post:", err)
}
log.Println("Added post", p.ID)
}
_, err = logs.UpdateCharacters(l)
if err != nil {
log.Println("Warning, failed to update characters:", err)
}
}