package bazy.a_poczatek;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.swing.JOptionPane;

/* W tej wersji operacje na bazie wykonywane są w trybie "auto commit",
 * czyli gdy program wykona polecenie UPDATE (i nie ma żadnego błędu), to OD RAZU zmiany są zapisywane w bazie.
 * 
 * To jest domyślny sposób działanie połączeń w Javie/JDBC.
 */
public class PodwyzkaBezTransakcji {

	public static void main(String[] args) {
		final String url = "jdbc:postgresql://vps497901.ovh.net:5432/hr";
		
		try(Connection c = DriverManager.getConnection(url, "kurs", "vps497901_abc123")) {
			String job = JOptionPane.showInputDialog("Komu dać podwyżkę?\nPodaj job_id:");
			BigDecimal zmiana = new BigDecimal(JOptionPane.showInputDialog("Podaj kwotę podwyżki"));
			
			zmienPensje(c, job, zmiana);
			
			JOptionPane.showMessageDialog(null, "Gotowe");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private static void zmienPensje(Connection c, String job, BigDecimal zmiana) throws SQLException {
		final String sql = "UPDATE employees SET salary = salary + ? WHERE job_id = ?";
		try(PreparedStatement stmt = c.prepareStatement(sql)) {
			stmt.setBigDecimal(1, zmiana);
			stmt.setString(2, job);
			stmt.executeUpdate();
		}
	}
}
