Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chat haystack time listing #903

Open
wants to merge 23 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Parse messages
ftkg committed Nov 28, 2022
commit 06bb2c6e706b874962e2e280ec6a51f78b3b7ab3
47 changes: 46 additions & 1 deletion server/core_channel.go
Original file line number Diff line number Diff line change
@@ -351,8 +351,53 @@ WHERE stream_mode = $1 AND stream_subject = $2::UUID AND stream_descriptor = $3:

}

func parseChannelMessages(logger *zap.Logger, rows *sql.Rows) ([]*api.ChannelMessage, error) {
func parseChannelMessages(logger *zap.Logger, rows *sql.Rows, stream PresenceStream, channelID string, limit int) ([]*api.ChannelMessage, error) {
defer rows.Close()
groupID := stream.Subject.String()
userIDOne := stream.Subject.String()
userIDTwo := stream.Subcontext.String()
messages := make([]*api.ChannelMessage, 0, limit)

var dbID string
var dbCode int32
var dbSenderID string
var dbUsername string
var dbContent string
var dbCreateTime pgtype.Timestamptz
var dbUpdateTime pgtype.Timestamptz
for rows.Next() {
err := rows.Scan(&dbID, &dbCode, &dbSenderID, &dbUsername, &dbContent, &dbCreateTime, &dbUpdateTime)
if err != nil {
_ = rows.Close()
logger.Error("Error parsing listed channel messages", zap.Error(err))
return nil, err
}

message := &api.ChannelMessage{
ChannelId: channelID,
MessageId: dbID,
Code: &wrapperspb.Int32Value{Value: dbCode},
SenderId: dbSenderID,
Username: dbUsername,
Content: dbContent,
CreateTime: &timestamppb.Timestamp{Seconds: dbCreateTime.Time.Unix()},
UpdateTime: &timestamppb.Timestamp{Seconds: dbUpdateTime.Time.Unix()},
Persistent: &wrapperspb.BoolValue{Value: true},
}
switch stream.Mode {
case StreamModeChannel:
message.RoomName = stream.Label
case StreamModeGroup:
message.GroupId = groupID
case StreamModeDM:
message.UserIdOne = userIDOne
message.UserIdTwo = userIDTwo
}

messages = append(messages, message)
}
rows.Close()
return messages, nil
}

func ChannelMessageSend(ctx context.Context, logger *zap.Logger, db *sql.DB, router MessageRouter, channelStream PresenceStream, channelId, content, senderId, senderUsername string, persist bool) (*rtapi.ChannelMessageAck, error) {