功能層以 C++ 類別封裝 MySQL C API,對上提供介面,內部管理狀態變數。
class UserManage {
private:
char myuserid[20]; // 用戶 ID,未登入為空
time_t logintime; // 登入時間
char loginhost[20]; // 上站地點
public:
int NewUser(char* userid, char* passwd);
int UserLogin(char* userid, char* passwd);
int ChangePasswd(char* oldpasswd, char* newpasswd);
int ChangePriData(char* newname, char* newemail, char* newaddr);
int ModifyNumData(int addlogin, int addpost);
int UserLogout();
// 一般查詢
int QueryCommonData(const char* userid, int& loginnum, char* username, int& postnum, time_t& lastlogin, char* lasthost);
// 特權指令 (內含權限檢查)
int QueryPriData(const char* userid, char* email, char* addr);
int ModifyUserLevel(BOOL isAdd, unsigned long level);
int ModifyUserId(char* oldid, char* newid);
int ModifyUserNumdata(char* userid, int addlogin, int addpost);
int ModifyUserPasswd(char* userid, char* newpasswd);
};
class BoardManage {
public:
// 分類操作
int GetClassNameInfo(int maxclass, char** classid, char** classname);
int GetBoardName(int maxboards, char* classid, char** boardname);
int NewClass(char* newclassname, int type);
int DeleteClass(char* newclassname);
int AddClassBoard(const char* classname, char* newboardname);
int DeleteClassBoard(const char* classname, char* boardname);
// 版面資訊
int NewBoard(const char* boardid, char* boardname);
int DeleteBoard(const char* boardid);
int GetBoardInfo(const char* boardid, char* boardname, int& numposts, char* masters, char* class, long& level);
int ModifyBoardId(const char* oldid, char* newid);
int ModifyBoardInfo(const char* boardid, char* boardname, int numposts, char* masters, char* class, long level);
// 文章操作 (長文 2KB 分塊)
int AddText(char* boardid, char* title, char* writer, char* text);
int DeleteText(char* boardid, int num); // 標記刪除
int FlushTable(char* boardid); // 物理清除
int MarkText(char* boardid, int num, char mark);
int ModifyTitle(char* boardid, int num, char* newtitle);
int ModifyText(char* boardid, int num, char* newtext);
int GetTextInfo(const char* boardid, int num, char* title, char* writer, char& mark);
int GetText(const char* boardid, int num, int block, char* text); // 分塊讀取
// 查詢
int QueryWriter(const char* boardid, char* writer, char** result);
int QueryTitle(const char* boardid, char* title, char** result);
};
FlushTable 物理清理