From ceb26175712197a9fc2e31336d2e67afa171da67 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Mon, 1 Oct 2018 20:22:37 +0200 Subject: [PATCH] graph2: Added closing of all other logs in the same channel if a log is opened. --- models/logs/add.go | 12 ++++++++++++ models/logs/edit.go | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/models/logs/add.go b/models/logs/add.go index f03d27c..e340d71 100644 --- a/models/logs/add.go +++ b/models/logs/add.go @@ -8,6 +8,7 @@ import ( "git.aiterp.net/rpdata/api/internal/counter" "git.aiterp.net/rpdata/api/model/channel" "git.aiterp.net/rpdata/api/models" + "github.com/globalsign/mgo/bson" ) // Add creates a new Log @@ -39,5 +40,16 @@ func Add(date time.Time, channelName, title, eventName, description string, open return models.Log{}, err } + // There can be only one open log in the same channel. TODO: Transaction + if open { + query := bson.M{ + "open": true, + "channel": log.ChannelName, + "id": bson.M{"$ne": log.ID}, + } + + go collection.UpdateAll(query, bson.M{"$set": bson.M{"open": false}}) + } + return log, nil } diff --git a/models/logs/edit.go b/models/logs/edit.go index 1764044..7fd3e0e 100644 --- a/models/logs/edit.go +++ b/models/logs/edit.go @@ -35,5 +35,16 @@ func Edit(log models.Log, title *string, event *string, description *string, ope return models.Log{}, err } + // There can be only one open log. TODO: Transaction + if changes["open"] != nil && *open { + query := bson.M{ + "open": true, + "channel": log.ChannelName, + "id": bson.M{"$ne": log.ID}, + } + + go collection.UpdateAll(query, bson.M{"$set": bson.M{"open": false}}) + } + return log, nil }