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

changeset 124
ed2e7aef2a3e
parent 75
33b6843fdf8a
child 128
947d0f6a6a83
     1.1 --- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Fri Oct 09 19:06:51 2020 +0200
     1.2 +++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java	Fri Oct 09 19:07:05 2020 +0200
     1.3 @@ -38,12 +38,13 @@
     1.4  import java.util.ArrayList;
     1.5  import java.util.List;
     1.6  import java.util.Objects;
     1.7 +import java.util.Optional;
     1.8  
     1.9  import static de.uapcore.lightpit.dao.Functions.setStringOrNull;
    1.10  
    1.11  public final class PGUserDao implements UserDao {
    1.12  
    1.13 -    private final PreparedStatement insert, update, list, find;
    1.14 +    private final PreparedStatement insert, update, list, find, findByUsername;
    1.15  
    1.16      public PGUserDao(Connection connection) throws SQLException {
    1.17          list = connection.prepareStatement(
    1.18 @@ -54,6 +55,10 @@
    1.19                  "select userid, username, lastname, givenname, mail " +
    1.20                          "from lpit_user where userid = ? ");
    1.21  
    1.22 +        findByUsername = connection.prepareStatement(
    1.23 +                "select userid, username, lastname, givenname, mail " +
    1.24 +                        "from lpit_user where lower(username) = lower(?) ");
    1.25 +
    1.26          insert = connection.prepareStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)");
    1.27          update = connection.prepareStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?");
    1.28      }
    1.29 @@ -111,4 +116,16 @@
    1.30              }
    1.31          }
    1.32      }
    1.33 +
    1.34 +    @Override
    1.35 +    public Optional<User> findByUsername(String username) throws SQLException {
    1.36 +        findByUsername.setString(1, username);
    1.37 +        try (var result = findByUsername.executeQuery()) {
    1.38 +            if (result.next()) {
    1.39 +                return Optional.of(mapColumns(result));
    1.40 +            } else {
    1.41 +                return Optional.empty();
    1.42 +            }
    1.43 +        }
    1.44 +    }
    1.45  }

mercurial