Skip to content

Commit a37f61e

Browse files
committed
修复数据库问题;更新exposed
1 parent 7155eee commit a37f61e

File tree

3 files changed

+24
-29
lines changed

3 files changed

+24
-29
lines changed

build.gradle.kts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
33
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
44

55
plugins {
6-
// kotlin("jvm")
7-
// id("org.jetbrains.compose")
86
alias(libs.plugins.kotlinJvm)
97
alias(libs.plugins.jetbrainsCompose)
108
// https://conveyor.hydraulic.dev/14.0/configs/maven-gradle/#gradle
@@ -16,7 +14,7 @@ val appName = "StopBonus"
1614
val appPackage = "love.forte.bonus"
1715
val appMenuGroup = "forteApp"
1816
val appNameWithPackage = "$appPackage.$appName"
19-
val appVersion = "1.0.9"
17+
val appVersion = "1.0.10"
2018

2119
group = appPackage
2220
version = appVersion
@@ -52,8 +50,8 @@ dependencies {
5250
implementation(compose.material)
5351
implementation(compose.material3)
5452

53+
implementation(libs.h2db)
5554
runtimeOnly(libs.logback.classic)
56-
runtimeOnly(libs.h2db)
5755

5856
implementation(libs.hikariCP)
5957
implementation(libs.bundles.exposed)
@@ -107,6 +105,8 @@ compose.desktop {
107105
shortcut = true
108106
dirChooser = true
109107
menuGroup = appMenuGroup
108+
perUserInstall = true
109+
menu = true
110110
iconFile.set(project.rootDir.resolve("icon.ico"))
111111
upgradeUuid = "f4a9a22b-b663-4848-95a8-7c0cf844da3f"
112112
}

gradle/libs.versions.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ logback = "1.4.14"
1010
# https://github.com/h2database/h2database
1111
h2 = "2.2.224"
1212
# https://github.com/JetBrains/Exposed
13-
exposed = "0.48.0"
13+
exposed = "0.49.0"
1414
# https://github.com/KoalaPlot/koalaplot-core
1515
# https://koalaplot.github.io/
1616
koalaPlot = "0.5.3"

src/main/kotlin/database/DatabaseConnector.kt

+19-24
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,16 @@ import org.jetbrains.exposed.sql.*
77
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
88
import org.jetbrains.exposed.sql.transactions.transaction
99
import org.jetbrains.exposed.sql.transactions.transactionManager
10+
import org.jetbrains.exposed.sql.vendors.H2Dialect
1011
import java.nio.file.Path
12+
import java.util.concurrent.atomic.AtomicBoolean
1113
import kotlin.coroutines.CoroutineContext
1214
import kotlin.io.path.Path
1315
import kotlin.io.path.div
1416
import kotlin.io.path.pathString
1517

16-
class DatabaseOperator(
17-
val schema: Schema,
18-
val database: Database,
19-
private val dataSource: HikariDataSource,
20-
) {
18+
class DatabaseOperator(val database: Database) {
2119
fun close() {
22-
dataSource.close()
2320
}
2421

2522
suspend inline fun <T> inSuspendedTransaction(
@@ -50,48 +47,42 @@ private const val DATA_FILE_NAME = "bonus.d"
5047

5148
fun connectDatabaseOperator(dataDir: Path = DEFAULT_DATA_DIR, schemaName: String): DatabaseOperator {
5249
val schema = Schema(schemaName)
50+
// val dialect = H2Dialect()
5351

54-
val jdbcUrl = "jdbc:h2:file:${(dataDir / DATA_FILE_NAME).pathString};" +
52+
val jdbcUrl = "jdbc:h2:${(dataDir / DATA_FILE_NAME).pathString};" +
5553
"DB_CLOSE_DELAY=-1;" +
5654
"DB_CLOSE_ON_EXIT=FALSE;" +
5755
"TRACE_LEVEL_FILE=3;" +
5856
"AUTO_RECONNECT=TRUE;"
5957

60-
// val database = Database.connect(
61-
// url = jdbcUrl,
62-
// driver = "org.h2.Driver",
63-
// databaseConfig = DatabaseConfig {
64-
// // set other parameters here
65-
// defaultFetchSize = 100
66-
// keepLoadedReferencesOutOfTransaction = true
67-
// defaultMaxRepetitionDelay = 6000
68-
// }
69-
// )
58+
// val connection
7059

7160
val config = hikariConfig {
7261
this.jdbcUrl = jdbcUrl
7362
driverClassName = "org.h2.Driver"
74-
poolName = "BonusDBPool"
63+
// this.threadFactory
64+
connectionInitSql = "CREATE SCHEMA IF NOT EXISTS $schemaName; SET SCHEMA $schemaName"
7565
minimumIdle = 1
7666
maximumPoolSize = 1
77-
7867
}
7968

80-
val dataSource = HikariDataSource(config)
69+
val source = HikariDataSource(config)
8170

8271
val database = Database.connect(
83-
datasource = dataSource,
72+
source,
73+
setupConnection = { println("Setup: $it") },
8474
databaseConfig = DatabaseConfig {
8575
// set other parameters here
8676
defaultFetchSize = 100
87-
keepLoadedReferencesOutOfTransaction = true
77+
//keepLoadedReferencesOutOfTransaction = true
8878
defaultMaxRepetitionDelay = 6000
8979
}
9080
)
9181

82+
9283
database.init(schema)
9384

94-
return DatabaseOperator(schema, database, dataSource)
85+
return DatabaseOperator(database)
9586
}
9687

9788
private inline fun hikariConfig(block: HikariConfig.() -> Unit): HikariConfig = HikariConfig().apply {
@@ -105,6 +96,10 @@ fun Database.init(schema: Schema) {
10596
SchemaUtils.createSchema(schema)
10697
}
10798
SchemaUtils.setSchema(schema)
108-
SchemaUtils.createMissingTablesAndColumns(*AllTables)
99+
SchemaUtils.createMissingTablesAndColumns(
100+
tables = AllTables,
101+
inBatch = true,
102+
withLogs = true,
103+
)
109104
}
110105
}

0 commit comments

Comments
 (0)