mirror of
https://gitee.com/Zhaoxin59/my-chat_-server.git
synced 2026-02-14 01:21:50 +08:00
update
This commit is contained in:
68
odb/chat_session.hxx
Normal file
68
odb/chat_session.hxx
Normal file
@ -0,0 +1,68 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <cstddef>
|
||||
#include <odb/nullable.hxx>
|
||||
#include <odb/core.hxx>
|
||||
#include "chat_session_member.hxx"
|
||||
|
||||
namespace bite_im {
|
||||
|
||||
enum class ChatSessionType {
|
||||
SINGLE = 1,
|
||||
GROUP = 2
|
||||
};
|
||||
|
||||
#pragma db object table("chat_session")
|
||||
class ChatSession {
|
||||
public:
|
||||
ChatSession(){}
|
||||
ChatSession(const std::string &ssid,
|
||||
const std::string &ssname, const ChatSessionType sstype):
|
||||
_chat_session_id(ssid),
|
||||
_chat_session_name(ssname),
|
||||
_chat_session_type(sstype){}
|
||||
|
||||
std::string chat_session_id() const { return _chat_session_id; }
|
||||
void chat_session_id(std::string &ssid) { _chat_session_id = ssid; }
|
||||
|
||||
std::string chat_session_name() const { return _chat_session_name; }
|
||||
void chat_session_name(std::string &ssname) { _chat_session_name = ssname; }
|
||||
|
||||
ChatSessionType chat_session_type() const { return _chat_session_type; }
|
||||
void chat_session_type(ChatSessionType val) { _chat_session_type = val; }
|
||||
private:
|
||||
friend class odb::access;
|
||||
#pragma db id auto
|
||||
unsigned long _id;
|
||||
#pragma db type("varchar(64)") index unique
|
||||
std::string _chat_session_id;
|
||||
#pragma db type("varchar(64)")
|
||||
std::string _chat_session_name;
|
||||
#pragma db type("tinyint")
|
||||
ChatSessionType _chat_session_type; //1-单聊; 2-群聊
|
||||
};
|
||||
|
||||
// 这里条件必须是指定条件: css::chat_session_type==1 && csm1.user_id=uid && csm2.user_id != csm1.user_id
|
||||
#pragma db view object(ChatSession = css)\
|
||||
object(ChatSessionMember = csm1 : css::_chat_session_id == csm1::_session_id)\
|
||||
object(ChatSessionMember = csm2 : css::_chat_session_id == csm2::_session_id)\
|
||||
query((?))
|
||||
struct SingleChatSession {
|
||||
#pragma db column(css::_chat_session_id)
|
||||
std::string chat_session_id;
|
||||
#pragma db column(csm2::_user_id)
|
||||
std::string friend_id;
|
||||
};
|
||||
|
||||
// 这里条件必须是指定条件: css::chat_session_type==2 && csm.user_id=uid
|
||||
#pragma db view object(ChatSession = css)\
|
||||
object(ChatSessionMember = csm : css::_chat_session_id == csm::_session_id)\
|
||||
query((?))
|
||||
struct GroupChatSession {
|
||||
#pragma db column(css::_chat_session_id)
|
||||
std::string chat_session_id;
|
||||
#pragma db column(css::_chat_session_name)
|
||||
std::string chat_session_name;
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user