src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java

changeset 124
ed2e7aef2a3e
parent 75
33b6843fdf8a
child 128
947d0f6a6a83
--- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Fri Oct 09 19:06:51 2020 +0200
+++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Fri Oct 09 19:07:05 2020 +0200
@@ -38,12 +38,13 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 
 import static de.uapcore.lightpit.dao.Functions.setStringOrNull;
 
 public final class PGUserDao implements UserDao {
 
-    private final PreparedStatement insert, update, list, find;
+    private final PreparedStatement insert, update, list, find, findByUsername;
 
     public PGUserDao(Connection connection) throws SQLException {
         list = connection.prepareStatement(
@@ -54,6 +55,10 @@
                 "select userid, username, lastname, givenname, mail " +
                         "from lpit_user where userid = ? ");
 
+        findByUsername = connection.prepareStatement(
+                "select userid, username, lastname, givenname, mail " +
+                        "from lpit_user where lower(username) = lower(?) ");
+
         insert = connection.prepareStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)");
         update = connection.prepareStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?");
     }
@@ -111,4 +116,16 @@
             }
         }
     }
+
+    @Override
+    public Optional<User> findByUsername(String username) throws SQLException {
+        findByUsername.setString(1, username);
+        try (var result = findByUsername.executeQuery()) {
+            if (result.next()) {
+                return Optional.of(mapColumns(result));
+            } else {
+                return Optional.empty();
+            }
+        }
+    }
 }

mercurial