134 lines
3.8 KiB
Go
134 lines
3.8 KiB
Go
package model
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type Session struct {
|
|
UserName string `json:"userName"`
|
|
NOrder int `json:"nOrder"`
|
|
NickName string `json:"nickName"`
|
|
Content string `json:"content"`
|
|
NTime time.Time `json:"nTime"`
|
|
}
|
|
|
|
// CREATE TABLE Session(
|
|
// strUsrName TEXT PRIMARY KEY,
|
|
// nOrder INT DEFAULT 0,
|
|
// nUnReadCount INTEGER DEFAULT 0,
|
|
// parentRef TEXT,
|
|
// Reserved0 INTEGER DEFAULT 0,
|
|
// Reserved1 TEXT,
|
|
// strNickName TEXT,
|
|
// nStatus INTEGER,
|
|
// nIsSend INTEGER,
|
|
// strContent TEXT,
|
|
// nMsgType INTEGER,
|
|
// nMsgLocalID INTEGER,
|
|
// nMsgStatus INTEGER,
|
|
// nTime INTEGER,
|
|
// editContent TEXT,
|
|
// othersAtMe INT,
|
|
// Reserved2 INTEGER DEFAULT 0,
|
|
// Reserved3 TEXT,
|
|
// Reserved4 INTEGER DEFAULT 0,
|
|
// Reserved5 TEXT,
|
|
// bytesXml BLOB
|
|
// )
|
|
type SessionV3 struct {
|
|
StrUsrName string `json:"strUsrName"`
|
|
NOrder int `json:"nOrder"`
|
|
StrNickName string `json:"strNickName"`
|
|
StrContent string `json:"strContent"`
|
|
NTime int64 `json:"nTime"`
|
|
|
|
// NUnReadCount int `json:"nUnReadCount"`
|
|
// ParentRef string `json:"parentRef"`
|
|
// Reserved0 int `json:"Reserved0"`
|
|
// Reserved1 string `json:"Reserved1"`
|
|
// NStatus int `json:"nStatus"`
|
|
// NIsSend int `json:"nIsSend"`
|
|
// NMsgType int `json:"nMsgType"`
|
|
// NMsgLocalID int `json:"nMsgLocalID"`
|
|
// NMsgStatus int `json:"nMsgStatus"`
|
|
// EditContent string `json:"editContent"`
|
|
// OthersAtMe int `json:"othersAtMe"`
|
|
// Reserved2 int `json:"Reserved2"`
|
|
// Reserved3 string `json:"Reserved3"`
|
|
// Reserved4 int `json:"Reserved4"`
|
|
// Reserved5 string `json:"Reserved5"`
|
|
// BytesXml string `json:"bytesXml"`
|
|
}
|
|
|
|
func (s *SessionV3) Wrap() *Session {
|
|
return &Session{
|
|
UserName: s.StrUsrName,
|
|
NOrder: s.NOrder,
|
|
NickName: s.StrNickName,
|
|
Content: s.StrContent,
|
|
NTime: time.Unix(int64(s.NTime), 0),
|
|
}
|
|
}
|
|
|
|
// 注意,v4 session 是独立数据库文件
|
|
// CREATE TABLE SessionTable(
|
|
// username TEXT PRIMARY KEY,
|
|
// type INTEGER,
|
|
// unread_count INTEGER,
|
|
// unread_first_msg_srv_id INTEGER,
|
|
// is_hidden INTEGER,
|
|
// summary TEXT,
|
|
// draft TEXT,
|
|
// status INTEGER,
|
|
// last_timestamp INTEGER,
|
|
// sort_timestamp INTEGER,
|
|
// last_clear_unread_timestamp INTEGER,
|
|
// last_msg_locald_id INTEGER,
|
|
// last_msg_type INTEGER,
|
|
// last_msg_sub_type INTEGER,
|
|
// last_msg_sender TEXT,
|
|
// last_sender_display_name TEXT,
|
|
// last_msg_ext_type INTEGER
|
|
// )
|
|
type SessionV4 struct {
|
|
Username string `json:"username"`
|
|
Summary string `json:"summary"`
|
|
LastTimestamp int `json:"last_timestamp"`
|
|
LastMsgSender string `json:"last_msg_sender"`
|
|
LastSenderDisplayName string `json:"last_sender_display_name"`
|
|
|
|
// Type int `json:"type"`
|
|
// UnreadCount int `json:"unread_count"`
|
|
// UnreadFirstMsgSrvID int `json:"unread_first_msg_srv_id"`
|
|
// IsHidden int `json:"is_hidden"`
|
|
// Draft string `json:"draft"`
|
|
// Status int `json:"status"`
|
|
// SortTimestamp int `json:"sort_timestamp"`
|
|
// LastClearUnreadTimestamp int `json:"last_clear_unread_timestamp"`
|
|
// LastMsgLocaldID int `json:"last_msg_locald_id"`
|
|
// LastMsgType int `json:"last_msg_type"`
|
|
// LastMsgSubType int `json:"last_msg_sub_type"`
|
|
// LastMsgExtType int `json:"last_msg_ext_type"`
|
|
}
|
|
|
|
func (s *Session) PlainText(limit int) string {
|
|
buf := strings.Builder{}
|
|
buf.WriteString(s.NickName)
|
|
buf.WriteString("(")
|
|
buf.WriteString(s.UserName)
|
|
buf.WriteString(") ")
|
|
buf.WriteString(s.NTime.Format("2006-01-02 15:04:05"))
|
|
buf.WriteString("\n")
|
|
if limit > 0 {
|
|
if len(s.Content) > limit {
|
|
buf.WriteString(s.Content[:limit])
|
|
buf.WriteString(" <...>")
|
|
} else {
|
|
buf.WriteString(s.Content)
|
|
}
|
|
}
|
|
buf.WriteString("\n")
|
|
return buf.String()
|
|
}
|