Skip to content

Commit 4c0dc0c

Browse files
committed
db.d: remove get_ticker() method
We can add/remove tickers without using it.
1 parent 64dee88 commit 4c0dc0c

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

src/db.d

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -977,31 +977,41 @@ final class Database
977977
return members[];
978978
}
979979

980-
void add_ticker(string room_name, string username, string content)
980+
bool add_ticker(string room_name, string username, string content)
981981
{
982-
enum sql = text(
983-
"INSERT INTO ", tickers_table,
982+
enum check_sql = text(
983+
"SELECT 1 FROM ", tickers_table,
984+
" WHERE room = ? AND username = ? AND content = ?;"
985+
);
986+
enum add_sql = text(
987+
"REPLACE INTO ", tickers_table,
984988
"(room, username, content) VALUES(?, ?, ?);"
985989
);
986-
query(sql, [room_name, username, content]);
990+
const res = query(check_sql, [room_name, username, content]);
991+
992+
if (res.length > 0)
993+
return false;
994+
995+
query(add_sql, [room_name, username, content]);
996+
return true;
987997
}
988998

989-
string get_ticker(string room_name, string username)
999+
bool del_ticker(string room_name, string username)
9901000
{
991-
enum sql = text(
992-
"SELECT content FROM ", tickers_table,
1001+
enum check_sql = text(
1002+
"SELECT 1 FROM ", tickers_table,
9931003
" WHERE room = ? AND username = ?;"
9941004
);
995-
const res = query(sql, [room_name, username]);
996-
return res.length > 0 ? res[0][0] : null;
997-
}
998-
999-
void del_ticker(string room_name, string username)
1000-
{
1001-
enum sql = text(
1005+
enum del_sql = text(
10021006
"DELETE FROM ", tickers_table, " WHERE room = ? AND username = ?;"
10031007
);
1004-
query(sql, [room_name, username]);
1008+
const res = query(check_sql, [room_name, username]);
1009+
1010+
if (res.length == 0)
1011+
return false;
1012+
1013+
query(del_sql, [room_name, username]);
1014+
return true;
10051015
}
10061016

10071017
string del_oldest_ticker(string room_name)

src/server/room.d

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,16 @@ final class Room
137137
if (content.length > max_room_ticker_length)
138138
return;
139139

140-
const old_content = get_ticker(username);
141-
if (content == old_content)
142-
return;
143-
144-
if (old_content !is null)
140+
if (content.length == 0) {
145141
del_ticker(username);
142+
return;
143+
}
146144

147-
if (content.length == 0)
145+
if (!db.add_ticker(name, username, content))
148146
return;
149147

150-
db.add_ticker(name, username, content);
148+
enum permanent = false;
149+
del_ticker(username, permanent);
151150

152151
if (num_tickers >= max_room_tickers)
153152
del_oldest_ticker ();
@@ -156,9 +155,10 @@ final class Room
156155
send_to_all(msg);
157156
}
158157

159-
void del_ticker(string username)
158+
void del_ticker(string username, bool permanent = true)
160159
{
161-
db.del_ticker(name, username);
160+
if (permanent && !db.del_ticker(name, username))
161+
return;
162162

163163
scope msg = new SRoomTickerRemove(name, username);
164164
send_to_all(msg);
@@ -179,11 +179,6 @@ final class Room
179179
send_to_all(msg);
180180
}
181181

182-
private string get_ticker(string username)
183-
{
184-
return db.get_ticker(name, username);
185-
}
186-
187182
private RoomTicker[] tickers()
188183
{
189184
return db.room_tickers(name);

0 commit comments

Comments
 (0)