Skip to content

Commit d227414

Browse files
authored
Optimized database initialization (#47)
Signed-off-by: Arnau Mora <[email protected]>
1 parent 242afbd commit d227414

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/main/kotlin/Main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fun main() {
2323
ServerDatabase.configureFromEnvironment()
2424

2525
Logger.info("Connecting to the database, and creating tables...")
26-
ServerDatabase.instance
26+
ServerDatabase.instance.initialize()
2727

2828
Logger.info("Initializing Crowdin connection...")
2929
Localization.init()

src/main/kotlin/com/arnyminerz/escalaralcoiaicomtat/backend/ServerDatabase.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.jetbrains.exposed.sql.SqlLogger
1414
import org.jetbrains.exposed.sql.Transaction
1515
import org.jetbrains.exposed.sql.addLogger
1616
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
17+
import org.jetbrains.exposed.sql.transactions.transaction
1718

1819
/**
1920
* A utility class for interacting with the database.
@@ -75,9 +76,15 @@ class ServerDatabase private constructor() {
7576
Database.connect(url, driver, username, password)
7677
}
7778

78-
suspend fun <T> query(block: suspend Transaction.() -> T): T = newSuspendedTransaction(Dispatchers.IO, database) {
79+
/**
80+
* Creates all the missing tables and columns for the database.
81+
* Should be run as soon as possible in the program's lifecycle.
82+
*/
83+
fun initialize() = transaction(database) {
7984
SchemaUtils.createMissingTablesAndColumns(Areas, Zones, Sectors, Paths, BlockingTable, InfoTable)
85+
}
8086

87+
suspend fun <T> query(block: suspend Transaction.() -> T): T = newSuspendedTransaction(Dispatchers.IO, database) {
8188
logger?.let { addLogger(it) }
8289

8390
block()

src/test/kotlin/com/arnyminerz/escalaralcoiaicomtat/backend/server/base/ApplicationTestBase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ abstract class ApplicationTestBase {
3535
File("testing.db").takeIf { it.exists() }?.delete()
3636

3737
// Access the database once to initialize
38-
ServerDatabase.instance
38+
ServerDatabase.instance.initialize()
3939

4040
// Configure storage
4141
Storage.BaseDir = File(System.getProperty("user.home"), ".EAIC-Testing")

0 commit comments

Comments
 (0)