1
1
package net .discordjug .javabot .systems .staff_commands .forms .dao ;
2
2
3
- import java .sql .Connection ;
4
3
import java .sql .PreparedStatement ;
5
4
import java .sql .ResultSet ;
6
5
import java .sql .SQLException ;
13
12
14
13
import org .springframework .dao .EmptyResultDataAccessException ;
15
14
import org .springframework .jdbc .core .JdbcTemplate ;
16
- import org .springframework .jdbc .core .PreparedStatementCreator ;
17
15
import org .springframework .jdbc .core .RowMapper ;
18
16
import org .springframework .stereotype .Repository ;
19
17
@@ -136,13 +134,13 @@ public List<FormData> getAllForms(boolean closed) {
136
134
* @param form a form to get submissions for
137
135
* @return a map of users and the number of their submissions
138
136
*/
139
- public Map <FormUser , Integer > getAllSubmissions (FormData form ) {
137
+ public Map <FormUser , Integer > getSubmissionsCountPerUser (FormData form ) {
140
138
Objects .requireNonNull (form );
141
139
List <FormUser > users = jdbcTemplate .query ("select * from `form_submissions` where `form_id` = ?" ,
142
140
(rs , rowNum ) -> new FormUser (rs .getLong ("user_id" ), rs .getString ("user_name" )), form .getId ());
143
141
Map <FormUser , Integer > map = new HashMap <>();
144
142
for (FormUser user : users ) {
145
- map .compute (user , ( t , u ) -> u == null ? 1 : u + 1 );
143
+ map .merge (user , 1 , Integer :: sum );
146
144
}
147
145
return Collections .unmodifiableMap (map );
148
146
}
@@ -151,7 +149,7 @@ public Map<FormUser, Integer> getAllSubmissions(FormData form) {
151
149
* Get a form for given ID.
152
150
*
153
151
* @param formId form ID to query
154
- * @return optional containing the form, or empty if the form was not found.
152
+ * @return optional form
155
153
*/
156
154
public Optional <FormData > getForm (long formId ) {
157
155
try {
@@ -175,7 +173,7 @@ public int getTotalSubmissionsCount(FormData form) {
175
173
}
176
174
177
175
/**
178
- * Checks if an user already submitted the form.
176
+ * Checks if a user already submitted the form.
179
177
*
180
178
* @param user user to check
181
179
* @param form form to check on
@@ -199,32 +197,28 @@ public boolean hasSubmitted(User user, FormData form) {
199
197
*/
200
198
public void insertForm (@ NonNull FormData data ) {
201
199
Objects .requireNonNull (data );
202
- jdbcTemplate .update (new PreparedStatementCreator () {
203
-
204
- @ Override
205
- public PreparedStatement createPreparedStatement (Connection con ) throws SQLException {
206
- PreparedStatement statement = con .prepareStatement (
207
- "insert into `forms` (title, submit_message, submit_channel, message_id, message_channel, expiration, onetime) values (?, ?, ?, ?, ?, ?, ?)" );
208
- statement .setString (1 , data .getTitle ());
209
- statement .setString (2 , data .getSubmitMessage ());
210
- statement .setLong (3 , data .getSubmitChannel ());
211
- statement .setObject (4 , data .getMessageId ().orElse (null ));
212
- statement .setObject (5 , data .getMessageChannel ().orElse (null ));
213
- statement .setLong (6 , data .getExpiration ());
214
- statement .setBoolean (7 , data .isOnetime ());
215
- return statement ;
216
- }
200
+ jdbcTemplate .update (con -> {
201
+ PreparedStatement statement = con .prepareStatement (
202
+ "insert into `forms` (title, submit_message, submit_channel, message_id, message_channel, expiration, onetime) values (?, ?, ?, ?, ?, ?, ?)" );
203
+ statement .setString (1 , data .getTitle ());
204
+ statement .setString (2 , data .getSubmitMessage ());
205
+ statement .setLong (3 , data .getSubmitChannel ());
206
+ statement .setObject (4 , data .getMessageId ().orElse (null ));
207
+ statement .setObject (5 , data .getMessageChannel ().orElse (null ));
208
+ statement .setLong (6 , data .getExpiration ());
209
+ statement .setBoolean (7 , data .isOnetime ());
210
+ return statement ;
217
211
});
218
212
}
219
213
220
214
/**
221
- * Log an user form submission in database.
215
+ * Add a user form submission to the database.
222
216
*
223
217
* @param user user to log
224
218
* @param form form to log on
225
219
* @param message message containing details about this user's submission
226
220
*/
227
- public void logSubmission (User user , FormData form , Message message ) {
221
+ public void addSubmission (User user , FormData form , Message message ) {
228
222
Objects .requireNonNull (user );
229
223
Objects .requireNonNull (form );
230
224
jdbcTemplate .update (con -> {
0 commit comments