treesummaryrefslogcommitdiff
path: root/src/DbMigration.java
diff options
context:
space:
mode:
authorpatrick-scho2025-11-23 23:20:04 +0000
committerpatrick-scho2025-11-23 23:20:04 +0000
commit243127a4563079f68e10a927361f165c5af77339 (patch)
tree4dae562f4c963889b4f0e09d79e0410033646515 /src/DbMigration.java
parent2d8d02bc7e7bdf9fedcaac9f4675a800a8c0e42f (diff)
downloadl21s-case-study-243127a4563079f68e10a927361f165c5af77339.tar.gz
l21s-case-study-243127a4563079f68e10a927361f165c5af77339.zip
add vim fold marker
Diffstat (limited to 'src/DbMigration.java')
-rw-r--r--src/DbMigration.java33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/DbMigration.java b/src/DbMigration.java
index bcf22d9..9357811 100644
--- a/src/DbMigration.java
+++ b/src/DbMigration.java
@@ -4,7 +4,7 @@ import java.sql.*;
import java.util.*;
class DbMigration {
- // constants
+ // constants {{{
static final boolean CONFIG_PRINT_DB = false;
static final String CSV_SEPARATOR = ",";
static final String DB_URL = "jdbc:postgresql:users";
@@ -20,20 +20,23 @@ class DbMigration {
CanDelete = EXCLUDED.CanDelete
;
""";
+ // }}}
- // user
+ // user {{{
public record User(int id, String mail, Role role) {
public String toString() {
return this.id + " " + this.mail + " " + this.role;
}
}
+ // }}}
- // role
+ // role {{{
public record Role(boolean read, boolean write, boolean delete) {
static final Role Default = new Role(false, false, false);
}
+ // }}}
- // csv
+ // csv {{{
public static String[][] LoadCSV(String filename) throws IOException {
var path = Paths.get(filename);
return Files.lines(path)
@@ -41,8 +44,9 @@ class DbMigration {
.map(line -> line.split(CSV_SEPARATOR))
.toArray(String[][]::new);
}
+ // }}}
- // db
+ // db {{{
public static void insertUser(PreparedStatement stmt, User user) throws SQLException {
stmt.setInt(1, user.id);
stmt.setString(2, user.mail);
@@ -69,18 +73,20 @@ class DbMigration {
return users.toArray(User[]::new);
}
+ // }}}
- // main
+ // main {{{
public static void main(String[] args) {
- // filenames from command line args
+ // filenames from command line args {{{
if (args.length != 2) {
System.out.printf("Usage: java src/DbMigrations.java <users.csv> <roles.csv>\n");
return;
}
String filenameUsers = args[0];
String filenameRoles = args[1];
+ // }}}
- // read csvs
+ // read csvs {{{
String[][] csvUsers;
String[][] csvRoles;
try {
@@ -90,8 +96,9 @@ class DbMigration {
System.out.printf("Expection occured while trying to load CSV: %s\n", e);
return;
}
+ // }}}
- // process roles
+ // process roles {{{
var roles = new HashMap<Integer, Role>();
for (var row : csvRoles) {
// get id and single role
@@ -111,8 +118,9 @@ class DbMigration {
return role;
});
}
+ // }}}
- // OPTIONAL: open db connection for reading
+ // OPTIONAL: open db connection for reading {{{
if (CONFIG_PRINT_DB) {
try (var conn = DriverManager.getConnection(DB_URL)) {
@@ -127,8 +135,9 @@ class DbMigration {
return;
}
}
+ // }}}
- // open db connection for updating
+ // open db connection for updating {{{
try (var conn = DriverManager.getConnection(DB_URL);
var stmt = conn.prepareStatement(SQL_UPSERT_USER); ) {
// batching
@@ -151,7 +160,9 @@ class DbMigration {
System.out.printf("Expection occured while accessing database: %s\n", e);
return;
}
+ // }}}
System.out.println("Updated successfully");
}
+ // }}}
}