diff options
author | 2020-06-24 20:17:31 +0200 | |
---|---|---|
committer | 2020-06-24 20:17:31 +0200 | |
commit | ec6e229d7b64f81c8dce09444be98d12c436fe36 (patch) | |
tree | 8e65f7d1e7b68d4d0f614f8d46190641750913b2 | |
parent | Rename MessageId to MessageIdField (diff) | |
download | archives-ec6e229d7b64f81c8dce09444be98d12c436fe36.tar.gz archives-ec6e229d7b64f81c8dce09444be98d12c436fe36.tar.bz2 archives-ec6e229d7b64f81c8dce09444be98d12c436fe36.zip |
Fix the references of a message
Signed-off-by: Max Magorsch <arzano@gentoo.org>
-rw-r--r-- | pkg/app/message/show.go | 36 | ||||
-rw-r--r-- | web/templates/message/show.tmpl | 4 |
2 files changed, 34 insertions, 6 deletions
diff --git a/pkg/app/message/show.go b/pkg/app/message/show.go index 60038d5..7ceb84c 100644 --- a/pkg/app/message/show.go +++ b/pkg/app/message/show.go @@ -5,6 +5,7 @@ package message import ( "archives/pkg/database" "archives/pkg/models" + "fmt" "net/http" "strings" ) @@ -18,7 +19,9 @@ func Show(w http.ResponseWriter, r *http.Request) { message := &models.Message{Id: messageHash} err := database.DBCon.Model(message). + Column("message.*"). Relation("InReplyTo"). + Relation("References"). WherePK(). Select() @@ -27,11 +30,36 @@ func Show(w http.ResponseWriter, r *http.Request) { return } + var queryParts []string + for _, reference := range message.References { + fmt.Println("> " + reference.Id) + queryParts = append(queryParts, "reference_id = '" + reference.Id + "'") + } + query := strings.Join(queryParts, " OR ") + + var refs []*models.MessageToReferences + err = database.DBCon.Model(&refs). + Where(query). + Select() + + // part 2 + // TODO only if len(refs) >= 1 + var nextQueryParts []string + for _, reference := range refs { + fmt.Println("> " + reference.MessageId) + nextQueryParts = append(nextQueryParts, "id = '" + reference.MessageId + "'") + } + nextQuery := strings.Join(nextQueryParts, " OR ") + var replies []*models.Message - database.DBCon.Model(&replies). - Where(`(headers::jsonb->>'References')::jsonb ? '` + message.Id + `'`). - WhereOr(`(headers::jsonb->>'In-Reply-To')::jsonb ? '` + message.Id + `'`). - Order("date ASC").Select() + err = database.DBCon.Model(&replies). + Where(nextQuery). + // Where date is newer than message + Select() + + fmt.Println("-------------------") + fmt.Println(err) + fmt.Println(len(replies)) renderMessageTemplate(w, listName, message, replies) } diff --git a/web/templates/message/show.tmpl b/web/templates/message/show.tmpl index 913ca4e..8accbde 100644 --- a/web/templates/message/show.tmpl +++ b/web/templates/message/show.tmpl @@ -80,8 +80,8 @@ </tr> {{range .Replies}} <tr> - <td><a href="{{.Id}}">{{.GetHeaderField "Subject"}}</a></td> - <td>{{formatAddr (.GetHeaderField "From")}}</td> + <td><a href="{{.Id}}">{{.GetSubject}}</a></td> + <td>{{formatAddr .From}}</td> </tr> {{end}} </tbody> |