You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.7 KiB

package com.gyf.csams
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import io.ktor.application.*
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.transactions.transaction
import javax.sql.DataSource
class MySQL private constructor(val dataSource: DataSource? = null) {
companion object {
@Volatile
private var instance: MySQL? = null
fun getInstance(dataSource: DataSource?) =
instance ?: synchronized(this) {
instance ?: MySQL(dataSource).also { instance = it }
}
}
}
fun Application.MySQL() {
val config = HikariConfig().apply {
jdbcUrl = environment.config.property("ktor.deployment.mysql.jdbcUrl").getString()
driverClassName = environment.config.property("ktor.deployment.mysql.driverClassName").getString()
username = environment.config.property("ktor.deployment.mysql.username").getString()
password = environment.config.property("ktor.deployment.mysql.password").getString()
maximumPoolSize = 10
}
val dataSource = HikariDataSource(config)
Database.connect(dataSource)
MySQL.getInstance(dataSource)
initTable()
}
fun initTable(){
transaction {
val tableList= arrayOf(Users,UserTokens,Managers,ManagerTokens,AuditLeggings,LeaveMessages,
ImageFiles,Associations,AssociationMembers,Notifications,Activities,PhotoAlbums,ActivityComments,
Renames,Questions,Answers,JoinAssociations,Tendencies)
SchemaUtils.createMissingTablesAndColumns(*tableList)
updateComment(*tableList)
}
}