Skip to content

Commit 22b220c

Browse files
committed
Avoid implicit usage of std.format
Reduces compilation times, since std.format is heavy.
1 parent aa15415 commit 22b220c

File tree

3 files changed

+95
-44
lines changed

3 files changed

+95
-44
lines changed

src/db.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ final class Database
235235
}
236236
foreach (ref record ; query("PRAGMA foreign_key_check;")) {
237237
integrity_success = false;
238-
writeln("[DB] Foreign key issue detected: ", record);
238+
writeln("[DB] Foreign key issue detected: ", record.join(", "));
239239
}
240240

241241
if (integrity_success) writeln("[DB] Database integrity verified");

src/server/cmdhandler.d

Lines changed: 59 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import std.conv : ConvException, text, to;
1717
import std.datetime : Clock, days, Duration, minutes, MonoTime, seconds,
1818
SysTime;
1919
import std.stdio : writeln;
20-
import std.string : join, split;
20+
import std.string : join, replace, split;
2121

2222
final class CommandHandler
2323
{
@@ -636,39 +636,70 @@ final class CommandHandler
636636

637637
private string user_export(string username)
638638
{
639+
enum quot = "\"";
640+
enum d_quot = "\"\"";
641+
enum j_quot = "\", \"";
642+
639643
auto user = server.get_user(username);
640644
const status = (user.status == UserStatus.away) ? "away" : "online";
641-
auto obfuscation_type = "null";
642-
const joined_rooms = user.joined_room_names!(RoomType.any);
643-
const accept_invitations = (
644-
user.accept_room_invitations ? "true" : "false"
645-
);
646-
const joined_global_room = (
647-
server.is_global_room_joined(username) ? "true" : "false"
648-
);
645+
649646
const admin_until = server.db.admin_until(username);
650647
auto admin = (admin_until > SysTime())
651-
? text("\"", admin_until.toISOExtString, "\"")
648+
? text(quot, admin_until.toISOExtString, quot)
652649
: "null";
650+
653651
const privileged_until = user.privileged_until;
654652
auto privileged = (privileged_until > SysTime())
655-
? text("\"", privileged_until.toISOExtString, "\"")
653+
? text(quot, privileged_until.toISOExtString, quot)
656654
: "null";
655+
656+
const accept_invitations = (
657+
user.accept_room_invitations ? "true" : "false"
658+
);
659+
const joined_global_room = (
660+
server.is_global_room_joined(username) ? "true" : "false"
661+
);
657662
const supporter = user.supporter ? "true" : "false";
658663
const searchable = (
659664
server.is_user_unsearchable(username) ? "false" : "true"
660665
);
661-
const private_rooms_owner = server.db.rooms(username);
662-
const private_rooms_member = server.db.rooms(null, username);
663-
const private_rooms_op = server.db.rooms(
664-
null, username, RoomMemberType.operator
665-
);
666666

667+
const liked_items = text(
668+
quot, user.liked_item_names.join(j_quot), quot
669+
).replace(d_quot, "");
670+
671+
const hated_items = text(
672+
quot, user.hated_item_names.join(j_quot), quot
673+
).replace(d_quot, "");
674+
675+
const joined_rooms = text(
676+
quot, user.joined_room_names!(RoomType.any).join(j_quot), quot
677+
).replace(d_quot, "");
678+
679+
const watched_users = text(
680+
quot, user.watched_usernames.join(j_quot), quot
681+
).replace(d_quot, "");
682+
683+
const rooms_owner = text(
684+
quot, server.db.rooms(username).join(j_quot), quot
685+
).replace(d_quot, "");
686+
687+
const rooms_member = text(
688+
quot, server.db.rooms(null, username).join(j_quot), quot
689+
).replace(d_quot, "");
690+
691+
const rooms_operator = text(
692+
quot, server.db.rooms(null, username, RoomMemberType.operator)
693+
.join(j_quot), quot
694+
).replace(d_quot, "");
695+
696+
auto obfuscation_type = "null";
667697
if (user.obfuscation_type == ObfuscationType.rotated)
668-
obfuscation_type = "\"rotated\"";
698+
obfuscation_type = text(quot, "rotated", quot);
699+
669700
else if (user.obfuscation_type != ObfuscationType.none)
670701
obfuscation_type = text(
671-
"\"", (cast(uint) user.obfuscation_type).text, "\""
702+
quot, (cast(uint) user.obfuscation_type).text, quot
672703
);
673704

674705
Appender!string output;
@@ -684,10 +715,10 @@ final class CommandHandler
684715
"\n \"obfuscation_type\": ", obfuscation_type, ",",
685716
"\n \"accept_room_invitations\": ", accept_invitations, ",",
686717
"\n \"joined_global_room\": ", joined_global_room, ",",
687-
"\n \"liked_items\": ", user.liked_item_names, ",",
688-
"\n \"hated_items\": ", user.hated_item_names, ",",
689-
"\n \"joined_rooms\": ", joined_rooms, ",",
690-
"\n \"watched_users\": ", user.watched_usernames,
718+
"\n \"liked_items\": [", liked_items, "],",
719+
"\n \"hated_items\": [", hated_items, "],",
720+
"\n \"joined_rooms\": [", joined_rooms, "],",
721+
"\n \"watched_users\": [", watched_users, "]",
691722
"\n },",
692723
"\n \"persistent_data\": {",
693724
"\n \"admin_until\": ", admin, ",",
@@ -697,9 +728,9 @@ final class CommandHandler
697728
"\n \"num_files\": ", user.shared_files, ",",
698729
"\n \"num_folders\": ", user.shared_folders, ",",
699730
"\n \"upload_speed\": ", user.upload_speed, ",",
700-
"\n \"private_rooms_owner\": ", private_rooms_owner, ",",
701-
"\n \"private_rooms_member\": ", private_rooms_member, ",",
702-
"\n \"private_rooms_operator\": ", private_rooms_op, ",",
731+
"\n \"private_rooms_owner\": [", rooms_owner, "],",
732+
"\n \"private_rooms_member\": [", rooms_member, "],",
733+
"\n \"private_rooms_operator\": [", rooms_operator, "],",
703734
"\n \"room_tickers\": {",
704735
);
705736

@@ -718,7 +749,7 @@ final class CommandHandler
718749
}
719750

720751
output ~= text(
721-
"},",
752+
"}",
722753
"\n },",
723754
"\n \"volatile_data\": {",
724755
"\n \"private_messages_queued\": [",
@@ -736,8 +767,8 @@ final class CommandHandler
736767
if (!first) output ~= ",";
737768
output ~= text(
738769
"\n {",
739-
"\n \"id\": \"", id, "\"",
740-
"\n \"recipient\": \"", to_username, "\"",
770+
"\n \"id\": ", id, ",",
771+
"\n \"recipient\": \"", to_username, "\",",
741772
"\n \"timestamp\": \"", timestamp, "\",",
742773
"\n \"message\": \"", message, "\"",
743774
"\n }"

src/setup/setup.d

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import std.compiler : name, version_major, version_minor;
1616
import std.conv : ConvException, text, to;
1717
import std.datetime : Clock, days, Duration, SysTime;
1818
import std.stdio : readln, StdioException, stdout, write, writeln;
19-
import std.string : chomp, join, split, strip, toLower;
19+
import std.string : chomp, join, replace, split, strip, toLower;
2020

2121
struct MenuItem
2222
{
@@ -606,23 +606,43 @@ final class Setup
606606
return;
607607
}
608608

609+
enum quot = "\"";
610+
enum d_quot = "\"\"";
611+
enum j_quot = "\", \"";
612+
609613
const admin_until = db.admin_until(username);
610614
auto admin = (admin_until > SysTime())
611-
? text("\"", admin_until.toISOExtString, "\"") : "null";
615+
? text(quot, admin_until.toISOExtString, quot)
616+
: "null";
617+
612618
const banned_until = db.user_banned_until(username);
613619
auto banned = (banned_until > SysTime())
614-
? text("\"", banned_until.toISOExtString, "\"") : "null";
620+
? text(quot, banned_until.toISOExtString, quot)
621+
: "null";
622+
615623
const privileged_until = db.user_privileged_until(username);
616624
auto privileged = (privileged_until > SysTime())
617-
? text("\"", privileged_until.toISOExtString, "\"") : "null";
625+
? text(quot, privileged_until.toISOExtString, quot)
626+
: "null";
627+
618628
const supporter = (privileged_until > SysTime()) ? "true" : "false";
619-
const searchable = db.is_user_unsearchable(username)
620-
? "false" : "true";
621-
const private_rooms_owner = db.rooms(username);
622-
const private_rooms_member = db.rooms(null, username);
623-
const private_rooms_op = db.rooms(
624-
null, username, RoomMemberType.operator
629+
const searchable = (
630+
db.is_user_unsearchable(username) ? "false" : "true"
625631
);
632+
633+
const rooms_owner = text(
634+
quot, db.rooms(username).join(j_quot), quot
635+
).replace(d_quot, "");
636+
637+
const rooms_member = text(
638+
quot, db.rooms(null, username).join(j_quot), quot
639+
).replace(d_quot, "");
640+
641+
const rooms_operator = text(
642+
quot, db.rooms(null, username, RoomMemberType.operator)
643+
.join(j_quot), quot
644+
).replace(d_quot, "");
645+
626646
const tickers = db.user_tickers!(RoomType.any)(username);
627647

628648
Appender!string output;
@@ -639,9 +659,9 @@ final class Setup
639659
"\n \"num_files\": ", stats.shared_files, ",",
640660
"\n \"num_folders\": ", stats.shared_folders, ",",
641661
"\n \"upload_speed\": ", stats.upload_speed, ",",
642-
"\n \"private_rooms_owner\": ", private_rooms_owner, ",",
643-
"\n \"private_rooms_member\": ", private_rooms_member, ",",
644-
"\n \"private_rooms_operator\": ", private_rooms_op, ",",
662+
"\n \"private_rooms_owner\": [", rooms_owner, "],",
663+
"\n \"private_rooms_member\": [", rooms_member, "],",
664+
"\n \"private_rooms_operator\": [", rooms_operator, "],",
645665
"\n \"room_tickers\": {",
646666
);
647667

@@ -779,8 +799,8 @@ final class Setup
779799
writeln("\nBanned user ", blue, username, norm, " forever");
780800
else
781801
writeln(
782-
"\nBanned user ", blue, username, norm, " until ",
783-
banned_until
802+
"\nBanned user ", blue, username, norm, " for ",
803+
banned_until.toString
784804
);
785805

786806
registered_users();

0 commit comments

Comments
 (0)