From 80e6c048c97471364c54fc9db6414e73531263c9 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Tue, 4 Dec 2018 20:33:21 +0100 Subject: [PATCH] graph2: Added unknownNick query --- graph2/gqlgen.yml | 2 ++ graph2/queries/unknownnicks.go | 23 +++++++++++++++++++++++ graph2/schema/root.gql | 4 ++++ graph2/schema/types/UnknownNick.gql | 20 ++++++++++++++++++++ models/unknown-nick.go | 4 ++-- models/unknownnicks/db.go | 2 +- models/unknownnicks/update.go | 4 ++-- 7 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 graph2/queries/unknownnicks.go create mode 100644 graph2/schema/types/UnknownNick.gql diff --git a/graph2/gqlgen.yml b/graph2/gqlgen.yml index ee85a21..543b08d 100644 --- a/graph2/gqlgen.yml +++ b/graph2/gqlgen.yml @@ -23,6 +23,8 @@ models: model: git.aiterp.net/rpdata/api/models.Channel ChannelsFilter: model: git.aiterp.net/rpdata/api/models/channels.Filter + UnknownNick: + model: git.aiterp.net/rpdata/api/models.UnknownNick Post: model: git.aiterp.net/rpdata/api/models.Post PostsFilter: diff --git a/graph2/queries/unknownnicks.go b/graph2/queries/unknownnicks.go new file mode 100644 index 0000000..5d8840b --- /dev/null +++ b/graph2/queries/unknownnicks.go @@ -0,0 +1,23 @@ +package queries + +import ( + "context" + + "git.aiterp.net/rpdata/api/models" + "git.aiterp.net/rpdata/api/models/unknownnicks" + + "git.aiterp.net/rpdata/api/graph2/input" +) + +/// Queries + +func (r *resolver) UnknownNicks(ctx context.Context, filter *input.UnknownNicksFilter) ([]models.UnknownNick, error) { + limit := 100 + if filter != nil { + if filter.Limit > 0 { + limit = filter.Limit + } + } + + return unknownnicks.List(limit) +} diff --git a/graph2/schema/root.gql b/graph2/schema/root.gql index 937f97e..96aa596 100644 --- a/graph2/schema/root.gql +++ b/graph2/schema/root.gql @@ -26,6 +26,10 @@ type Query { posts(filter: PostsFilter): [Post!]! + "List unknown nicks" + unknownNicks(filter: UnknownNicksFilter): [UnknownNick!]! + + # Find log by ID log(id: String!): Log! diff --git a/graph2/schema/types/UnknownNick.gql b/graph2/schema/types/UnknownNick.gql new file mode 100644 index 0000000..c1ec55a --- /dev/null +++ b/graph2/schema/types/UnknownNick.gql @@ -0,0 +1,20 @@ +""" +An unknown nick is a nick found by the logbot that's not associated with +any characters. Many are going to be false positives, but most should be +useful in pointing out which characters are missing. +""" +type UnknownNick { + "The IRC nick that's unknown." + nick: String! + + "The amount of logs that contains the unknown nick." + score: Int! +} + +""" +Input for the unknownNicks query. +""" +input UnknownNicksFilter { + "The highest amount of unknown nicks to return." + limit: Int! +} \ No newline at end of file diff --git a/models/unknown-nick.go b/models/unknown-nick.go index a74472f..a3a518b 100644 --- a/models/unknown-nick.go +++ b/models/unknown-nick.go @@ -2,6 +2,6 @@ package models // UnknownNick represents an unknown nick name. type UnknownNick struct { - Nick string `bson:"_id"` - Weight int `bson:"weight"` + Nick string `bson:"_id"` + Score int `bson:"score"` } diff --git a/models/unknownnicks/db.go b/models/unknownnicks/db.go index 49fe1a0..6502992 100644 --- a/models/unknownnicks/db.go +++ b/models/unknownnicks/db.go @@ -17,7 +17,7 @@ func list(query interface{}, limit int) ([]models.UnknownNick, error) { } posts := make([]models.UnknownNick, 0, size) - err := collection.Find(query).Limit(limit).Sort("weight").All(&posts) + err := collection.Find(query).Limit(limit).Sort("-score").All(&posts) if err != nil { return nil, err } diff --git a/models/unknownnicks/update.go b/models/unknownnicks/update.go index ea94a55..b25f66e 100644 --- a/models/unknownnicks/update.go +++ b/models/unknownnicks/update.go @@ -44,8 +44,8 @@ func CancelUpdate() { func CommitUpdate() error { defer updateMutex.Unlock() - for nick, weight := range updateMap { - _, err := collection.UpsertId(nick, bson.M{"$set": bson.M{"weight": weight}}) + for nick, score := range updateMap { + _, err := collection.UpsertId(nick, bson.M{"$set": bson.M{"score": score}}) if err != nil { return err }