graph2: Added importLog query and associated models and repository functions.
the build was successful

This commit is contained in:
2018-12-01 16:52:06 +01:00
parent 2a91b6f9bc
commit a58535fcb9
11 changed files with 282 additions and 6 deletions
+18
View File
@@ -30,6 +30,24 @@ func Next(category, name string) (int, error) {
return doc.Value, nil
}
// NextMany gets the next value of a counter, or an error if it hasn't, and increments by a specified value.
// Any value `returned` to `returned+(increment-1)` should then be safe to use.
func NextMany(category, name string, increment int) (int, error) {
id := category + "." + name
doc := counter{}
_, err := collection.Find(bson.M{"_id": id}).Apply(mgo.Change{
Update: bson.M{"$inc": bson.M{"value": 1}},
Upsert: true,
ReturnNew: true,
}, &doc)
if err != nil {
return -1, err
}
return doc.Value, nil
}
func init() {
store.HandleInit(func(db *mgo.Database) {
collection = db.C("core.counters")
+2 -2
View File
@@ -18,14 +18,14 @@ type ParsedLog struct {
}
// ParseLogs parses the logs from the data.
func ParseLogs(data string) ([]ParsedLog, error) {
func ParseLogs(data string, tz *time.Location) ([]ParsedLog, error) {
metadata := ParseMetadata(data)
results := make([]ParsedLog, 0, len(metadata["Date"]))
scanner := bufio.NewScanner(strings.NewReader(data))
for i, dateStr := range metadata["Date"] {
// Parse date
date, err := time.Parse("January 2, 2006", dateStr)
date, err := time.ParseInLocation("January 2, 2006", dateStr, tz)
if err != nil {
return nil, fmt.Errorf("Failed to parse date #%d: %#+v is not the in the correct format of \"January 2, 2006\"", i+1, dateStr)
}
+4 -4
View File
@@ -12,7 +12,7 @@ import (
)
func TestParseLogs(t *testing.T) {
results, err := forumlog.ParseLogs(testLog)
results, err := forumlog.ParseLogs(testLog, time.UTC)
if err != nil {
t.Fatalf("Parse: %s", err)
}
@@ -23,9 +23,9 @@ func TestParseLogs(t *testing.T) {
}
func TestParseLogsErrors(t *testing.T) {
_, err1 := forumlog.ParseLogs(brokenLogNoPosts)
_, err2 := forumlog.ParseLogs(brokenLogBrokenPost)
_, err3 := forumlog.ParseLogs(brokenLogBrokenDate)
_, err1 := forumlog.ParseLogs(brokenLogNoPosts, time.UTC)
_, err2 := forumlog.ParseLogs(brokenLogBrokenPost, time.UTC)
_, err3 := forumlog.ParseLogs(brokenLogBrokenDate, time.UTC)
t.Log("Should be about no posts:", err1)
t.Log("Should be about a broken post:", err2)