@@ -8,7 +8,8 @@ module soulfind.db;
88
99import soulfind.defines : blue, default_max_users, default_motd, default_port,
1010 default_private_mode, log_db, log_user, norm,
11- RoomMemberType, RoomType, SearchFilterType;
11+ RoomMemberType, RoomTicker, RoomType,
12+ SearchFilterType, UserStats;
1213import std.array : Appender;
1314import std.conv : ConvException, text, to;
1415import std.datetime : Clock , days, Duration, SysTime, UTC ;
@@ -79,17 +80,6 @@ enum tickers_table = "tickers";
7980enum search_filters_table = " search_filters" ;
8081enum search_query_table = " temp.search_query" ;
8182
82- struct SdbUserStats
83- {
84- bool exists;
85- uint upload_speed;
86- uint shared_files;
87- uint shared_folders;
88-
89- bool updating_speed;
90- bool updating_shared;
91- }
92-
9383final class SdbException : Exception
9484{
9585 this (string msg, string file = __FILE__ , size_t line = __LINE__ ) {
@@ -749,15 +739,15 @@ final class Sdb
749739 return SysTime.fromUnixTime(banned_until, UTC ());
750740 }
751741
752- SdbUserStats user_stats (string username)
742+ UserStats user_stats (string username)
753743 {
754744 enum sql = text(
755745 " SELECT speed,files,folders" ,
756746 " FROM " , users_table,
757747 " WHERE username = ?;"
758748 );
759749 const res = query(sql, [username]);
760- auto user_stats = SdbUserStats ();
750+ auto user_stats = UserStats ();
761751
762752 if (res.length > 0 ) {
763753 const record = res[0 ];
@@ -775,7 +765,7 @@ final class Sdb
775765 return user_stats;
776766 }
777767
778- void user_update_stats (string username, SdbUserStats stats)
768+ void user_update_stats (string username, UserStats stats)
779769 {
780770 Appender! (string []) fields;
781771 Appender! (string []) parameters;
@@ -1029,18 +1019,26 @@ final class Sdb
10291019 return username;
10301020 }
10311021
1032- string [] [] room_tickers (string room_name)
1022+ RoomTicker [] room_tickers (string room_name)
10331023 {
1024+ Appender! (RoomTicker[]) tickers;
10341025 enum sql = text(
10351026 " SELECT username, content FROM " , tickers_table,
10361027 " WHERE room = ?" ,
10371028 " ORDER BY rowid;"
10381029 );
1039- return query (sql, [room_name]);
1030+
1031+ const res = query(sql, [room_name]);
1032+ foreach (ref record ; res) {
1033+ const username = record[0 ], content = record[1 ];
1034+ tickers ~= RoomTicker(room_name, username, content);
1035+ }
1036+ return tickers[];
10401037 }
10411038
1042- string [] [] user_tickers (RoomType type)(string username)
1039+ RoomTicker [] user_tickers (RoomType type)(string username)
10431040 {
1041+ Appender! (RoomTicker[]) tickers;
10441042 auto sql = text(
10451043 " SELECT t.room, t.content FROM " , tickers_table, " t" ,
10461044 " JOIN " , rooms_table, " r ON t.room = r.room" ,
@@ -1054,7 +1052,12 @@ final class Sdb
10541052 }
10551053 sql ~= " ORDER BY t.rowid;" ;
10561054
1057- return query (sql, parameters);
1055+ const res = query(sql, parameters);
1056+ foreach (ref record ; res) {
1057+ const room_name = record[0 ], content = record[1 ];
1058+ tickers ~= RoomTicker(room_name, username, content);
1059+ }
1060+ return tickers[];
10581061 }
10591062
10601063 ulong num_room_tickers (string room_name)
0 commit comments