11package hexlet .code ;
22
3+ import hexlet .code .repository .BaseRepository ;
4+ // import io.hexlet.component.DataInitializer;
5+
36import io .javalin .Javalin ;
47import io .javalin .rendering .template .JavalinJte ;
58
69import lombok .extern .slf4j .Slf4j ;
710
11+ import com .zaxxer .hikari .HikariConfig ;
12+ import com .zaxxer .hikari .HikariDataSource ;
13+
14+ import java .io .BufferedReader ;
15+ import java .io .IOException ;
16+ import java .io .InputStreamReader ;
17+ import java .nio .charset .StandardCharsets ;
18+ import java .sql .SQLException ;
19+ import java .util .stream .Collectors ;
20+
821
922@ Slf4j
1023public class App {
11- public static Javalin getApp () { //throws SQLException
24+
25+
26+ private static String getDatabaseUrl () {
27+ // Получаю url базы данных из переменной окружения DATABASE_URL
28+ // Если она не установлена, используем базу в памяти
29+ return System .getenv ().getOrDefault ("JDBC_DATABASE_URL" , "jdbc:h2:mem:project;DB_CLOSE_DELAY=-1;" );
30+ }
31+
32+
33+ private static String readResourceFile (String fileName ) throws IOException {
34+ var inputStream = App .class .getClassLoader ().getResourceAsStream (fileName );
35+ try (BufferedReader reader = new BufferedReader (new InputStreamReader (inputStream , StandardCharsets .UTF_8 ))) {
36+ return reader .lines ().collect (Collectors .joining ("\n " ));
37+ }
38+ }
39+
40+ public static Javalin getApp () throws IOException , SQLException { //
41+ HikariConfig hikariConfig = new HikariConfig ();
42+ hikariConfig .setJdbcUrl (getDatabaseUrl ());
43+
44+ HikariDataSource dataSource = new HikariDataSource (hikariConfig );
45+ var sql = readResourceFile ("schema.sql" );
46+
47+ log .info (sql );
48+ try (var connection = dataSource .getConnection ();
49+ var statement = connection .createStatement ()) {
50+ statement .execute (sql );
51+ }
52+ BaseRepository .dataSource = dataSource ;
53+
1254
1355 var app = Javalin .create (config -> {
1456 config .bundledPlugins .enableDevLogging ();
@@ -21,7 +63,8 @@ public static Javalin getApp() { //throws SQLException
2163 return app ;
2264 }
2365
24- public static void main (String [] args ) { //throws SQLException
66+
67+ public static void main (String [] args ) throws IOException , SQLException { //throws SQLException
2568 Javalin app = getApp ();
2669 app .start (7070 );
2770 }
0 commit comments