bool Database::GetChatrooms(const User &Owner, std::vector<Chatroom> &Out) { Out.clear(); const std::string Query = "SELECT * FROM Chatroom WHERE OwnerUsername = :OwnerUsername"; Statement s; if (s.Prepare(Inner, Query)) return false; if (!s.Bind(":OwnerUsername", Owner.Username)) return false; bool MoreData = true; while (MoreData) { if (!s.Step(MoreData)) return false; Chatroom c; if (!_GetChatroom(s, c)) return false; Out.push_back(c); } return true; }
bool Database::GetChatrooms(const Server &Host, std::vector<Chatroom> &Out) { Out.clear(); const std::string Query = "SELECT * FROM Chatroom WHERE ServerIP = :ServerIP' AND ServerPort = :ServerPort AND ServerFamily = :ServerFamily"; Statement s; if (s.Prepare(Inner, Query)) return false; if (!s.Bind(":ServerIP", Host.Address.GetPrintableIP()) || !s.Bind(":ServerPort", Host.Address.Port) || !s.Bind(":ServerFamily", Host.Address.Family)) return false; bool MoreData = true; while (MoreData) { if (!s.Step(MoreData)) return false; Chatroom c; if (!_GetChatroom(s, c)) return false; Out.push_back(c); } return true; }
bool Database::GetUser(const std::string &Username, User &Out) { const std::string Query = "SELECT * FROM User WHERE Username = :Username"; Statement s; if (!s.Prepare(Inner, Query)) return false; if (!s.Bind(":Username", Username.c_str())) return false; if (!s.Step()) return false; if (!_GetUser(s, Out)) return false; return true; }
bool Database::GetChatroom(const std::string &Name, Chatroom &Out) { const std::string Query = "SELECT * FROM Chatroom WHERE Name = :Name"; Statement s; if (!s.Prepare(Inner, Query)) return false; if (!s.Bind(":Name", Name)) return false; if (!s.Step()) return false; if (!_GetChatroom(s, Out)) return false; return true; }
bool Database::GetServer(const Net::Address Address, Server &Out) { const std::string Query = "SELECT * FROM Server WHERE Family = :Family AND IP = :IP AND Port = :Port"; Statement s; if (!s.Prepare(Inner, Query)) return false; if (!s.Bind(":Family", Address.Family) || !s.Bind(":IP", Address.GetPrintableIP()) || !s.Bind(":Port", Address.Port)) return false; if (!s.Step()) return false; if (!_GetServer(s, Out)) return false; return true; }
bool Database::GetUsers(std::vector<User> &Users) { Users.clear(); const std::string Query = "SELECT * FROM User"; Statement s; if (!s.Prepare(Inner, Query)) return false; bool MoreData = true; while (MoreData) { if (!s.Step(MoreData)) return false; User u; if (!_GetUser(s, u)) return false; Users.push_back(u); } return true; }
bool Database::GetChatrooms(std::vector<Chatroom> &Chatrooms) { Chatrooms.clear(); const std::string Query = "SELECT * FROM Chatroom"; Statement s; if (s.Prepare(Inner, Query)) return false; bool MoreData = true; while (MoreData) { if (!s.Step(MoreData)) return false; Chatroom c; if (!_GetChatroom(s, c)) return false; Chatrooms.push_back(c); } return true; }
bool Database::GetServers(std::vector<Server> &Servers) { Servers.clear(); const std::string Query = "SELECT * FROM Server"; Statement s; if (!s.Prepare(Inner, Query)) return false; bool MoreData = true; while (MoreData) { if (!s.Step(MoreData)) return false; Server Out; if (!_GetServer(s, Out)) return false; Servers.push_back(Out); } return true; }