Send the 25 last messages for each channel to the client on load
This commit is contained in:
parent
c840d51e16
commit
eedc687f18
26 changed files with 300 additions and 268 deletions
|
@ -22,9 +22,7 @@ struct Channel {
|
|||
|
||||
struct Message {
|
||||
ID uint64
|
||||
Server string
|
||||
From string
|
||||
To string
|
||||
Content string
|
||||
Time int64
|
||||
}
|
||||
|
|
|
@ -702,21 +702,6 @@ func (d *Channel) Unmarshal(buf []byte) (uint64, error) {
|
|||
|
||||
func (d *Message) Size() (s uint64) {
|
||||
|
||||
{
|
||||
l := uint64(len(d.Server))
|
||||
|
||||
{
|
||||
|
||||
t := l
|
||||
for t >= 0x80 {
|
||||
t >>= 7
|
||||
s++
|
||||
}
|
||||
s++
|
||||
|
||||
}
|
||||
s += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.From))
|
||||
|
||||
|
@ -732,21 +717,6 @@ func (d *Message) Size() (s uint64) {
|
|||
}
|
||||
s += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.To))
|
||||
|
||||
{
|
||||
|
||||
t := l
|
||||
for t >= 0x80 {
|
||||
t >>= 7
|
||||
s++
|
||||
}
|
||||
s++
|
||||
|
||||
}
|
||||
s += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.Content))
|
||||
|
||||
|
@ -781,25 +751,6 @@ func (d *Message) Marshal(buf []byte) ([]byte, error) {
|
|||
*(*uint64)(unsafe.Pointer(&buf[0])) = d.ID
|
||||
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.Server))
|
||||
|
||||
{
|
||||
|
||||
t := uint64(l)
|
||||
|
||||
for t >= 0x80 {
|
||||
buf[i+8] = byte(t) | 0x80
|
||||
t >>= 7
|
||||
i++
|
||||
}
|
||||
buf[i+8] = byte(t)
|
||||
i++
|
||||
|
||||
}
|
||||
copy(buf[i+8:], d.Server)
|
||||
i += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.From))
|
||||
|
||||
|
@ -819,25 +770,6 @@ func (d *Message) Marshal(buf []byte) ([]byte, error) {
|
|||
copy(buf[i+8:], d.From)
|
||||
i += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.To))
|
||||
|
||||
{
|
||||
|
||||
t := uint64(l)
|
||||
|
||||
for t >= 0x80 {
|
||||
buf[i+8] = byte(t) | 0x80
|
||||
t >>= 7
|
||||
i++
|
||||
}
|
||||
buf[i+8] = byte(t)
|
||||
i++
|
||||
|
||||
}
|
||||
copy(buf[i+8:], d.To)
|
||||
i += l
|
||||
}
|
||||
{
|
||||
l := uint64(len(d.Content))
|
||||
|
||||
|
@ -876,26 +808,6 @@ func (d *Message) Unmarshal(buf []byte) (uint64, error) {
|
|||
{
|
||||
l := uint64(0)
|
||||
|
||||
{
|
||||
|
||||
bs := uint8(7)
|
||||
t := uint64(buf[i+8] & 0x7F)
|
||||
for buf[i+8]&0x80 == 0x80 {
|
||||
i++
|
||||
t |= uint64(buf[i+8]&0x7F) << bs
|
||||
bs += 7
|
||||
}
|
||||
i++
|
||||
|
||||
l = t
|
||||
|
||||
}
|
||||
d.Server = string(buf[i+8 : i+8+l])
|
||||
i += l
|
||||
}
|
||||
{
|
||||
l := uint64(0)
|
||||
|
||||
{
|
||||
|
||||
bs := uint8(7)
|
||||
|
@ -916,26 +828,6 @@ func (d *Message) Unmarshal(buf []byte) (uint64, error) {
|
|||
{
|
||||
l := uint64(0)
|
||||
|
||||
{
|
||||
|
||||
bs := uint8(7)
|
||||
t := uint64(buf[i+8] & 0x7F)
|
||||
for buf[i+8]&0x80 == 0x80 {
|
||||
i++
|
||||
t |= uint64(buf[i+8]&0x7F) << bs
|
||||
bs += 7
|
||||
}
|
||||
i++
|
||||
|
||||
l = t
|
||||
|
||||
}
|
||||
d.To = string(buf[i+8 : i+8+l])
|
||||
i += l
|
||||
}
|
||||
{
|
||||
l := uint64(0)
|
||||
|
||||
{
|
||||
|
||||
bs := uint8(7)
|
||||
|
|
|
@ -7,16 +7,21 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/blevesearch/bleve"
|
||||
"github.com/blevesearch/bleve/analysis/analyzer/keyword"
|
||||
"github.com/boltdb/bolt"
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
ID uint64 `json:"id"`
|
||||
Server string `json:"server"`
|
||||
From string `json:"from"`
|
||||
To string `json:"to,omitempty"`
|
||||
Content string `json:"content"`
|
||||
Time int64 `json:"time"`
|
||||
ID uint64 `json:"id" bleve:"-"`
|
||||
Server string `json:"-" bleve:"server"`
|
||||
From string `json:"from" bleve:"-"`
|
||||
To string `json:"-" bleve:"to"`
|
||||
Content string `json:"content" bleve:"content"`
|
||||
Time int64 `json:"time" bleve:"-"`
|
||||
}
|
||||
|
||||
func (m Message) Type() string {
|
||||
return "message"
|
||||
}
|
||||
|
||||
func (u *User) LogMessage(server, from, to, content string) error {
|
||||
|
@ -167,7 +172,27 @@ func (u *User) openMessageLog() error {
|
|||
indexPath := Path.Index(u.Username)
|
||||
u.messageIndex, err = bleve.Open(indexPath)
|
||||
if err == bleve.ErrorIndexPathDoesNotExist {
|
||||
keywordMapping := bleve.NewTextFieldMapping()
|
||||
keywordMapping.Analyzer = keyword.Name
|
||||
keywordMapping.Store = false
|
||||
keywordMapping.IncludeTermVectors = false
|
||||
keywordMapping.IncludeInAll = false
|
||||
|
||||
contentMapping := bleve.NewTextFieldMapping()
|
||||
contentMapping.Analyzer = "en"
|
||||
contentMapping.Store = false
|
||||
contentMapping.IncludeTermVectors = false
|
||||
contentMapping.IncludeInAll = false
|
||||
|
||||
messageMapping := bleve.NewDocumentMapping()
|
||||
messageMapping.StructTagKey = "bleve"
|
||||
messageMapping.AddFieldMappingsAt("server", keywordMapping)
|
||||
messageMapping.AddFieldMappingsAt("to", keywordMapping)
|
||||
messageMapping.AddFieldMappingsAt("content", contentMapping)
|
||||
|
||||
mapping := bleve.NewIndexMapping()
|
||||
mapping.AddDocumentMapping("message", messageMapping)
|
||||
|
||||
u.messageIndex, err = bleve.New(indexPath, mapping)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue