Skip to content

Commit 1937aea

Browse files
committed
Refactor non_edit_selector to use enum class
Replaces the integer-based non_edit_selector with a strongly-typed enum class in Database_Notes and updates all usages accordingly. This improves type safety and code clarity when selecting notes based on non-edit time constraints. #1046
1 parent db97f77 commit 1937aea

File tree

9 files changed

+43
-38
lines changed

9 files changed

+43
-38
lines changed

changes/change.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ std::string changes_change (Webserver_Request& webserver_request)
129129
.verse = filter::strings::convert_to_int (passage.m_verse),
130130
.passage_selector = Database_Notes::passage_selector::current_verse,
131131
.edit_selector = Database_Notes::edit_selector::at_any_time,
132-
.non_edit_selector = 0,
132+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
133133
.status_selectors = {},
134134
.assignment_selector = "",
135135
.subscription_selector = 0,

database/notes.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,7 @@ std::vector<int> Database_Notes::select_notes(const selector& selector)
638638
int time { 0 };
639639
switch (selector.edit_selector) {
640640
case edit_selector::at_any_time:
641+
default:
641642
// Select notes that have been edited at any time. Apply no constraint.
642643
time = 0;
643644
break;
@@ -657,10 +658,6 @@ std::vector<int> Database_Notes::select_notes(const selector& selector)
657658
// Select notes that have been edited today.
658659
time = filter::date::seconds_since_epoch () - filter::date::numerical_hour (filter::date::seconds_since_epoch ()) * 3600;
659660
break;
660-
default:
661-
// No constraint.
662-
time = 0;
663-
break;
664661
}
665662
if (time != 0) {
666663
query.append (" AND modified >= ");
@@ -670,31 +667,31 @@ std::vector<int> Database_Notes::select_notes(const selector& selector)
670667
// Consider non-edit selector.
671668
int nonedit { 0 };
672669
switch (selector.non_edit_selector) {
673-
case 0:
670+
case Database_Notes::non_edit_selector::any_time:
671+
default:
674672
// Select notes that have not been edited at any time. Apply no constraint.
675673
nonedit = 0;
676674
break;
677-
case 1:
675+
case Database_Notes::non_edit_selector::a_day:
678676
// Select notes that have not been edited for a day.
679677
nonedit = filter::date::seconds_since_epoch () - 1 * 24 * 3600;
680678
break;
681-
case 2:
679+
case Database_Notes::non_edit_selector::two_days:
682680
// Select notes that have not been edited for two days.
683681
nonedit = filter::date::seconds_since_epoch () - 2 * 24 * 3600;
684682
break;
685-
case 3:
683+
case Database_Notes::non_edit_selector::a_week:
686684
// Select notes that have not been edited for a week.
687685
nonedit = filter::date::seconds_since_epoch () - 7 * 24 * 3600;
688686
break;
689-
case 4:
687+
case Database_Notes::non_edit_selector::a_month:
690688
// Select notes that have not been edited for a month.
691689
nonedit = filter::date::seconds_since_epoch () - 30 * 24 * 3600;
692690
break;
693-
case 5:
691+
case Database_Notes::non_edit_selector::a_year:
694692
// Select notes that have not been edited for a year.
695693
nonedit = filter::date::seconds_since_epoch () - 365 * 24 * 3600;
696694
break;
697-
default: break;
698695
}
699696
if (nonedit != 0) {
700697
query.append (" AND modified <= ");

database/notes.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ class Database_Notes
8383
since_yesterday = 3,
8484
today = 4,
8585
};
86+
enum class non_edit_selector : uint8_t {
87+
any_time = 0,
88+
a_day = 1,
89+
two_days = 2,
90+
a_week = 3,
91+
a_month = 4,
92+
a_year = 5,
93+
};
8694
struct selector {
8795
// Container of Bible names that is going to be searched.
8896
// Can contains all Bibles the user has read access to.
@@ -97,7 +105,7 @@ class Database_Notes
97105
// Optionally constrains selection based on modification time.
98106
// By default there's no constraint on modification time.
99107
edit_selector edit_selector{edit_selector::at_any_time};
100-
int non_edit_selector{}; // Todo default and enum?
108+
non_edit_selector non_edit_selector{non_edit_selector::any_time};
101109
// Optionally constrains selection based on list of note statuses.
102110
std::vector<std::string> status_selectors; // Todo enums?
103111
// Optionally constrains the selection based on a note being assigned to somebody.

notes/bulk.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ std::string notes_bulk (Webserver_Request& webserver_request)
7676
int verse = Ipc_Focus::getVerse (webserver_request);
7777
Database_Notes::passage_selector passage_selector = static_cast<Database_Notes::passage_selector>(webserver_request.database_config_user()->get_consultation_notes_passage_selector());
7878
int edit_selector = webserver_request.database_config_user()->get_consultation_notes_edit_selector();
79-
int non_edit_selector = webserver_request.database_config_user()->get_consultation_notes_non_edit_selector();
79+
auto non_edit_selector = static_cast<Database_Notes::non_edit_selector>(webserver_request.database_config_user()->get_consultation_notes_non_edit_selector());
8080
const std::vector<std::string> status_selectors = webserver_request.database_config_user()->get_consultation_notes_status_selectors();
8181
std::string assignment_selector = webserver_request.database_config_user()->get_consultation_notes_assignment_selector();
8282
bool subscription_selector = webserver_request.database_config_user()->get_consultation_notes_subscription_selector();

notes/notes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ std::string notes_notes (Webserver_Request& webserver_request)
5858

5959
Database_Notes::passage_selector passage_selector = static_cast<Database_Notes::passage_selector>(webserver_request.database_config_user()->get_consultation_notes_passage_selector());
6060
int edit_selector = webserver_request.database_config_user()->get_consultation_notes_edit_selector();
61-
int non_edit_selector = webserver_request.database_config_user()->get_consultation_notes_non_edit_selector();
61+
auto non_edit_selector = static_cast<Database_Notes::non_edit_selector>(webserver_request.database_config_user()->get_consultation_notes_non_edit_selector());
6262
const std::vector<std::string> status_selectors = webserver_request.database_config_user()->get_consultation_notes_status_selectors();
6363
std::string assignment_selector = webserver_request.database_config_user()->get_consultation_notes_assignment_selector();
6464
bool subscription_selector = webserver_request.database_config_user()->get_consultation_notes_subscription_selector();

notes/select.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ std::string notes_select (Webserver_Request& webserver_request)
335335

336336
const Database_Notes::passage_selector passage_selector = static_cast<Database_Notes::passage_selector>(webserver_request.database_config_user()->get_consultation_notes_passage_selector());
337337
const int edit_selector = webserver_request.database_config_user()->get_consultation_notes_edit_selector();
338-
const int non_edit_selector = webserver_request.database_config_user()->get_consultation_notes_non_edit_selector();
338+
const auto non_edit_selector = static_cast<Database_Notes::non_edit_selector>(webserver_request.database_config_user()->get_consultation_notes_non_edit_selector());
339339
const std::vector<std::string> status_selectors = webserver_request.database_config_user()->get_consultation_notes_status_selectors();
340340
const std::string bible_selector = webserver_request.database_config_user()->get_consultation_notes_bible_selector();
341341
const std::string assignment_selector = webserver_request.database_config_user()->get_consultation_notes_assignment_selector();

public/notes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ std::string public_notes (Webserver_Request& webserver_request)
5858
.verse = 0,
5959
.passage_selector = Database_Notes::passage_selector::current_chapter,
6060
.edit_selector = Database_Notes::edit_selector::at_any_time,
61-
.non_edit_selector = 0,
61+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
6262
.status_selectors = {},
6363
.assignment_selector = "",
6464
.subscription_selector = false,

statistics/statistics.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ void statistics_statistics ()
7474
.verse = 0,
7575
.passage_selector = Database_Notes::passage_selector::any_passage,
7676
.edit_selector = Database_Notes::edit_selector::at_any_time,
77-
.non_edit_selector = 0,
77+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
7878
.status_selectors = {},
7979
.assignment_selector = user,
8080
.subscription_selector = 0,
@@ -105,7 +105,7 @@ void statistics_statistics ()
105105
.verse = 0,
106106
.passage_selector = Database_Notes::passage_selector::any_passage,
107107
.edit_selector = Database_Notes::edit_selector::at_any_time,
108-
.non_edit_selector = 0,
108+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
109109
.status_selectors = {},
110110
.assignment_selector = "",
111111
.subscription_selector = 1,
@@ -126,7 +126,7 @@ void statistics_statistics ()
126126
.verse = 0,
127127
.passage_selector = Database_Notes::passage_selector::any_passage,
128128
.edit_selector = Database_Notes::edit_selector::at_any_time,
129-
.non_edit_selector = 1,
129+
.non_edit_selector = Database_Notes::non_edit_selector::a_day,
130130
.status_selectors = {},
131131
.assignment_selector = "",
132132
.subscription_selector = 1,
@@ -146,7 +146,7 @@ void statistics_statistics ()
146146
.verse = 0,
147147
.passage_selector = Database_Notes::passage_selector::any_passage,
148148
.edit_selector = Database_Notes::edit_selector::at_any_time,
149-
.non_edit_selector = 3,
149+
.non_edit_selector = Database_Notes::non_edit_selector::a_week,
150150
.status_selectors = {},
151151
.assignment_selector = "",
152152
.subscription_selector = 1,

unittests/notes.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,7 +1265,7 @@ void test_database_notes ()
12651265
.verse = 0,
12661266
.passage_selector = Database_Notes::passage_selector::any_passage,
12671267
.edit_selector = Database_Notes::edit_selector::at_any_time,
1268-
.non_edit_selector = 0,
1268+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
12691269
.status_selectors = {},
12701270
.assignment_selector = "",
12711271
.subscription_selector = false,
@@ -1287,7 +1287,7 @@ void test_database_notes ()
12871287
.verse = 0,
12881288
.passage_selector = Database_Notes::passage_selector::any_passage,
12891289
.edit_selector = Database_Notes::edit_selector::at_any_time,
1290-
.non_edit_selector = 0,
1290+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
12911291
.status_selectors = {},
12921292
.assignment_selector = "",
12931293
.subscription_selector = false,
@@ -1309,7 +1309,7 @@ void test_database_notes ()
13091309
.verse = 0,
13101310
.passage_selector = Database_Notes::passage_selector::any_passage,
13111311
.edit_selector = Database_Notes::edit_selector::at_any_time,
1312-
.non_edit_selector = 0,
1312+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
13131313
.status_selectors = {},
13141314
.assignment_selector = "",
13151315
.subscription_selector = false,
@@ -1331,7 +1331,7 @@ void test_database_notes ()
13311331
.verse = 0,
13321332
.passage_selector = Database_Notes::passage_selector::any_passage,
13331333
.edit_selector = Database_Notes::edit_selector::at_any_time,
1334-
.non_edit_selector = 0,
1334+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
13351335
.status_selectors = {},
13361336
.assignment_selector = "",
13371337
.subscription_selector = false,
@@ -1353,7 +1353,7 @@ void test_database_notes ()
13531353
.verse = 0,
13541354
.passage_selector = Database_Notes::passage_selector::any_passage,
13551355
.edit_selector = Database_Notes::edit_selector::at_any_time,
1356-
.non_edit_selector = 0,
1356+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
13571357
.status_selectors = {},
13581358
.assignment_selector = "",
13591359
.subscription_selector = true,
@@ -1375,7 +1375,7 @@ void test_database_notes ()
13751375
.verse = 0,
13761376
.passage_selector = Database_Notes::passage_selector::any_passage,
13771377
.edit_selector = Database_Notes::edit_selector::at_any_time,
1378-
.non_edit_selector = 0,
1378+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
13791379
.status_selectors = {},
13801380
.assignment_selector = "",
13811381
.subscription_selector = false,
@@ -1397,7 +1397,7 @@ void test_database_notes ()
13971397
.verse = 0,
13981398
.passage_selector = Database_Notes::passage_selector::any_passage,
13991399
.edit_selector = Database_Notes::edit_selector::at_any_time,
1400-
.non_edit_selector = 0,
1400+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
14011401
.status_selectors = {},
14021402
.assignment_selector = "",
14031403
.subscription_selector = false,
@@ -1419,7 +1419,7 @@ void test_database_notes ()
14191419
.verse = 0,
14201420
.passage_selector = Database_Notes::passage_selector::any_passage,
14211421
.edit_selector = Database_Notes::edit_selector::at_any_time,
1422-
.non_edit_selector = 0,
1422+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
14231423
.status_selectors = {"status1", "status2"},
14241424
.assignment_selector = "",
14251425
.subscription_selector = false,
@@ -1637,7 +1637,7 @@ void test_database_notes ()
16371637
.verse = 0,
16381638
.passage_selector = Database_Notes::passage_selector::any_passage,
16391639
.edit_selector = Database_Notes::edit_selector::at_any_time,
1640-
.non_edit_selector = 0,
1640+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
16411641
.status_selectors = {},
16421642
.assignment_selector = "",
16431643
.subscription_selector = false,
@@ -1689,7 +1689,7 @@ void test_database_notes ()
16891689
.verse = 0,
16901690
.passage_selector = Database_Notes::passage_selector::any_passage,
16911691
.edit_selector = Database_Notes::edit_selector::at_any_time,
1692-
.non_edit_selector = 0,
1692+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
16931693
.status_selectors = {},
16941694
.assignment_selector = "",
16951695
.subscription_selector = false,
@@ -1745,7 +1745,7 @@ void test_database_notes ()
17451745
.verse = 0,
17461746
.passage_selector = Database_Notes::passage_selector::any_passage,
17471747
.edit_selector = Database_Notes::edit_selector::at_any_time,
1748-
.non_edit_selector = 0,
1748+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
17491749
.status_selectors = {},
17501750
.assignment_selector = "",
17511751
.subscription_selector = false,
@@ -1788,7 +1788,7 @@ void test_database_notes ()
17881788
.verse = 0, // No verse given.
17891789
.passage_selector = Database_Notes::passage_selector::any_passage,
17901790
.edit_selector = Database_Notes::edit_selector::at_any_time,
1791-
.non_edit_selector = 0, // Select any time not edited.
1791+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
17921792
.status_selectors = {}, // Don't consider the statuses.
17931793
.assignment_selector = "", // Don't consider assignment.
17941794
.subscription_selector = false, // Don't consider subscriptions.
@@ -1812,7 +1812,7 @@ void test_database_notes ()
18121812
.verse = 0, // No verse given.
18131813
.passage_selector = Database_Notes::passage_selector::any_passage,
18141814
.edit_selector = Database_Notes::edit_selector::at_any_time,
1815-
.non_edit_selector = 0, // Select any time not edited.
1815+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
18161816
.status_selectors = {}, // Don't consider the statuses.
18171817
.assignment_selector = "", // Don't consider assignment.
18181818
.subscription_selector = false, // Don't consider subscriptions.
@@ -1836,7 +1836,7 @@ void test_database_notes ()
18361836
.verse = 0, // No verse given.
18371837
.passage_selector = Database_Notes::passage_selector::any_passage,
18381838
.edit_selector = Database_Notes::edit_selector::at_any_time,
1839-
.non_edit_selector = 0, // Select any time not edited.
1839+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
18401840
.status_selectors = {}, // Don't consider the statuses.
18411841
.assignment_selector = "", // Don't consider assignment.
18421842
.subscription_selector = false, // Don't consider subscriptions.
@@ -1858,7 +1858,7 @@ void test_database_notes ()
18581858
.verse = 0, // Verse given.
18591859
.passage_selector = Database_Notes::passage_selector::current_verse,
18601860
.edit_selector = Database_Notes::edit_selector::at_any_time,
1861-
.non_edit_selector = 0, // Select any time not edited.
1861+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
18621862
.status_selectors = {}, // Don't consider the statuses.
18631863
.assignment_selector = "", // Don't consider assignment.
18641864
.subscription_selector = false, // Don't consider subscriptions.
@@ -1882,7 +1882,7 @@ void test_database_notes ()
18821882
.verse = 3, // Verse given.
18831883
.passage_selector = Database_Notes::passage_selector::current_verse,
18841884
.edit_selector = Database_Notes::edit_selector::at_any_time,
1885-
.non_edit_selector = 0, // Select any time not edited.
1885+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
18861886
.status_selectors = {}, // Don't consider the statuses.
18871887
.assignment_selector = "", // Don't consider assignment.
18881888
.subscription_selector = false, // Don't consider subscriptions.
@@ -1904,7 +1904,7 @@ void test_database_notes ()
19041904
.verse = 3, // Verse given.
19051905
.passage_selector = Database_Notes::passage_selector::current_verse,
19061906
.edit_selector = Database_Notes::edit_selector::at_any_time,
1907-
.non_edit_selector = 0, // Select any time not edited.
1907+
.non_edit_selector = Database_Notes::non_edit_selector::any_time,
19081908
.status_selectors = {}, // Don't consider the statuses.
19091909
.assignment_selector = "", // Don't consider assignment.
19101910
.subscription_selector = false, // Don't consider subscriptions.

0 commit comments

Comments
 (0)