#pragma once #include "global.h" struct db_name_id{ char *name; i64 id; }; struct db_room_list{ i64 count; struct db_name_id *list; }; struct db_message{ i64 msgid; i64 roomid,userid,timestamp; i64 replyid; // message this is a reply to, or -1 if normal message char *message; }; struct db_message_list{ i64 count; struct db_message *list; }; struct db_user_list{ i64 count; struct db_name_id *list; }; struct db_strings_list{ i64 count; char **list; }; void db_init(void); void db_reinit(void); // intended for forked threads void db_close(void); struct db_name_id db_create_room(void); bool db_delete_room(i64 roomid); bool db_add_member(i64 roomid,i64 userid); bool db_remove_member(i64 roomid,i64 userid); bool db_is_member(i64 roomid,i64 userid); struct db_user_list db_list_members(i64 roomid); i64 db_find_room(const char *name); // -1 if not found char* db_get_roomname(i64 roomid); struct db_room_list db_list_rooms(i64 userid); i64 db_create_user(const char *name,const char *pass); bool db_set_username(i64 userid,const char *name); bool db_set_pass(i64 userid,const char *pass); char* db_get_username(i64 userid); bool db_check_pass(i64 userid,const char *pass); bool db_delete_user(i64 userid); i64 db_find_user(const char *name); // -1 if not found struct db_strings_list db_user_tokens(i64 userid); bool db_add_token(i64 userid,const char *token); bool db_delete_token(i64 userid,const char *token); bool db_user_knows_user(i64 userid1,i64 userid2); // both users have a common room i64 db_create_message(i64 roomid,i64 userid,i64 timestamp,i64 replyid,const char *message); // returns msgid struct db_message_list db_get_messages(i64 roomid,i64 count); // gets latest `count` messages in rev. chron. order // if beforeid<0, same as db_get_messages struct db_message_list db_get_messages_before(i64 roomid,i64 count,i64 beforeid); struct db_message db_get_message(i64 msgid); // returns {msgid=-1} if nonexistent void db_nullify_name_id(struct db_name_id ni); void db_nullify_room_list(struct db_room_list rl); void db_nullify_user_list(struct db_user_list ul); void db_nullify_message(struct db_message ml); void db_nullify_message_list(struct db_message_list ml); void db_nullify_strings_list(struct db_strings_list sl);