Added possible crypt password, create repository user implementation, etc...

This commit is contained in:
maciejrusek
2026-04-27 20:14:21 +02:00
parent e5c5670ac5
commit f306606b34
13 changed files with 278 additions and 31 deletions

View File

@@ -2,12 +2,13 @@ package repository;
import models.Task;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public interface TaskRepository {
List<Task> getUserTasks(int userId);
List<Task> findUserTasksByTitle(int userId, String title);
ArrayList<Task> getUserTasks(int userId);
ArrayList<Task> findUserTasksByTitle(int userId, String title);
Optional<Task> getUserTask(int userId, int taskId);
void save(Task task);
void update(int taskId, Task task);

View File

@@ -0,0 +1,41 @@
package repository;
import models.Task;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class TaskRepositoryJdbc implements TaskRepository {
@Override
public ArrayList<Task> getUserTasks(int userId) {
return new ArrayList<>();
}
@Override
public ArrayList<Task> findUserTasksByTitle(int userId, String title) {
return new ArrayList<>();
}
@Override
public Optional<Task> getUserTask(int userId, int taskId) {
return Optional.empty();
}
@Override
public void save(Task task) {
}
@Override
public void update(int taskId, Task task) {
}
@Override
public void delete(int taskId) {
}
}

View File

@@ -0,0 +1,11 @@
package repository;
import models.User;
import java.util.Optional;
public interface UserRepository {
Optional<User> getUser(String username, String password);
Optional<User> saveUser(String username, String email, String password);
boolean deleteUser(int userId);
}

View File

@@ -0,0 +1,85 @@
package repository;
import models.User;
import org.flywaydb.core.internal.proprietaryStubs.PrepareCommandExtensionStub;
import util.PasswordService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Optional;
public class UserRepositoryJdbc implements UserRepository {
private final Connection connection;
public UserRepositoryJdbc(Connection connection) {
this.connection = connection;
}
@Override
public Optional<User> getUser(String username, String password) {
try {
PreparedStatement preparedStatement = connection.prepareStatement(
"SELECT * FROM users WHERE name=(?);"
);
preparedStatement.setString(1, username);
ResultSet resultSet = preparedStatement.executeQuery();
String passwordFromDB = resultSet.getString("password");
String emailFromDB = resultSet.getString("email");
if (!PasswordService.checkPassword(password, passwordFromDB)) {
return Optional.empty();
}
User user = new User(username, emailFromDB);
return Optional.of(user);
} catch (SQLException e) {
e.printStackTrace();
return Optional.empty();
}
}
@Override
public Optional<User> saveUser(String username, String email, String password) {
try {
String hashedPassword = PasswordService.hashPassword(password);
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT INTO users (name, email, password) VALUES (?, ?, ?);"
);
preparedStatement.setString(1, username);
preparedStatement.setString(2, email);
preparedStatement.setString(3, hashedPassword);
preparedStatement.executeUpdate();
User user = new User(username, email);
return Optional.of(user);
} catch (SQLException e) {
e.printStackTrace();
return Optional.empty();
}
}
@Override
public boolean deleteUser(int userId) {
try {
PreparedStatement preparedStatement = connection.prepareStatement(
"DELETE FROM users WHERE id=(?);"
);
preparedStatement.setInt(1, userId);
preparedStatement.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}

View File

@@ -1,9 +0,0 @@
package repository.impl;
import repository.TaskRepository;
public class TaskRepositoryImpl {
}