mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-08-08 05:11:12 +00:00
move hibernate to exposed...
This commit is contained in:
30
src/main/kotlin/space/mori/chzzk_bot/Connector.kt
Normal file
30
src/main/kotlin/space/mori/chzzk_bot/Connector.kt
Normal file
@@ -0,0 +1,30 @@
|
||||
package space.mori.chzzk_bot
|
||||
|
||||
import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import io.github.cdimascio.dotenv.dotenv
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.SchemaUtils
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
import space.mori.chzzk_bot.models.Users
|
||||
|
||||
object Connector {
|
||||
private val dotenv = dotenv()
|
||||
|
||||
val hikariConfig = HikariConfig().apply {
|
||||
jdbcUrl = dotenv["DB_URL"]
|
||||
driverClassName = "org.mariadb.jdbc.Driver"
|
||||
username = dotenv["DB_USER"]
|
||||
password = dotenv["DB_PASS"]
|
||||
maximumPoolSize = 10
|
||||
}
|
||||
val dataSource = HikariDataSource(hikariConfig)
|
||||
|
||||
init {
|
||||
Database.connect(dataSource)
|
||||
|
||||
transaction {
|
||||
SchemaUtils.createMissingTablesAndColumns(Users)
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,39 +0,0 @@
|
||||
package space.mori.chzzk_bot
|
||||
|
||||
import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import io.github.cdimascio.dotenv.dotenv
|
||||
import org.hibernate.SessionFactory
|
||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
||||
import org.hibernate.cfg.Configuration
|
||||
import org.hibernate.service.ServiceRegistry
|
||||
import space.mori.chzzk_bot.discord.User
|
||||
|
||||
object Database {
|
||||
private val dotenv = dotenv()
|
||||
|
||||
val configuration = Configuration().apply {
|
||||
addAnnotatedClass(User::class.java)
|
||||
setProperty("hibernate.dialect", "org.hibernate.dialect.MariaDBDialect")
|
||||
setProperty("hibernate.show_sql", "true")
|
||||
setProperty("hibernate.format_sql", "true")
|
||||
setProperty("hibernate.hbm2ddl.auto", "update")
|
||||
setProperty("hibernate.hbm2ddl.jdbc", "update")
|
||||
|
||||
setProperty("hibernate.bytecode.use-bytebuddy", "false")
|
||||
|
||||
// HikariCP를 사용하도록 설정
|
||||
setProperty("hibernate.connection.provider_class", "org.hibernate.hikaricp.internal.HikariCPConnectionProvider")
|
||||
setProperty("hibernate.hikari.dataSourceClassName", "org.mariadb.jdbc.MariaDbDataSource")
|
||||
setProperty("hibernate.hikari.dataSource.url", dotenv["DB_URL"])
|
||||
setProperty("hibernate.hikari.dataSource.user", dotenv["DB_USER"])
|
||||
setProperty("hibernate.hikari.dataSource.password", dotenv["DB_PASS"])
|
||||
setProperty("hibernate.hikari.maximumPoolSize", "10")
|
||||
}
|
||||
|
||||
private val serviceRegistry: ServiceRegistry = StandardServiceRegistryBuilder()
|
||||
.applySettings(configuration.properties)
|
||||
.build()
|
||||
|
||||
val sessionFactory: SessionFactory = configuration.buildSessionFactory(serviceRegistry)
|
||||
}
|
@@ -13,13 +13,13 @@ val logger: Logger = LoggerFactory.getLogger("main")
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val discord = Discord()
|
||||
Database
|
||||
|
||||
Connector
|
||||
discord.enable()
|
||||
|
||||
if(dotenv.get("RUN_AGENT", "false").toBoolean()) {
|
||||
runBlocking {
|
||||
delay(TimeUnit.SECONDS.toMillis(10))
|
||||
delay(TimeUnit.MINUTES.toMillis(1))
|
||||
discord.disable()
|
||||
}
|
||||
}
|
||||
|
@@ -1,19 +0,0 @@
|
||||
package space.mori.chzzk_bot.discord
|
||||
|
||||
import jakarta.persistence.*
|
||||
|
||||
@Entity
|
||||
@Table(name = "users")
|
||||
data class User(
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
val id: Long?,
|
||||
|
||||
@Column(length = 255)
|
||||
val username: String,
|
||||
|
||||
@Column(length = 64)
|
||||
val token: String,
|
||||
|
||||
val discord: Long
|
||||
)
|
21
src/main/kotlin/space/mori/chzzk_bot/models/User.kt
Normal file
21
src/main/kotlin/space/mori/chzzk_bot/models/User.kt
Normal file
@@ -0,0 +1,21 @@
|
||||
package space.mori.chzzk_bot.models
|
||||
|
||||
import org.jetbrains.exposed.dao.IntEntity
|
||||
import org.jetbrains.exposed.dao.IntEntityClass
|
||||
import org.jetbrains.exposed.dao.id.EntityID
|
||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||
|
||||
|
||||
object Users: IntIdTable("users") {
|
||||
val username = varchar("username", 255)
|
||||
val token = varchar("token", 64)
|
||||
val discord = long("discord")
|
||||
}
|
||||
|
||||
class User(id: EntityID<Int>) : IntEntity(id) {
|
||||
companion object : IntEntityClass<User>(Users)
|
||||
|
||||
var username by Users.username
|
||||
var token by Users.token
|
||||
var discord by Users.discord
|
||||
}
|
@@ -1,21 +1,25 @@
|
||||
package space.mori.chzzk_bot.services
|
||||
|
||||
import space.mori.chzzk_bot.Database
|
||||
import space.mori.chzzk_bot.discord.User
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
import space.mori.chzzk_bot.models.User
|
||||
import space.mori.chzzk_bot.models.Users
|
||||
|
||||
class UserService {
|
||||
fun saveUser(user: User) {
|
||||
val session = Database.sessionFactory.openSession()
|
||||
session.beginTransaction()
|
||||
session.persist(user)
|
||||
session.transaction.commit()
|
||||
session.close()
|
||||
User.new {
|
||||
username = user.username
|
||||
token = user.token
|
||||
discord = user.discord
|
||||
}
|
||||
}
|
||||
|
||||
fun getUser(id: Long): User? {
|
||||
val session = Database.sessionFactory.openSession()
|
||||
val user = session.get(User::class.java, id)
|
||||
session.close()
|
||||
return user
|
||||
fun getUser(id: Int): User? {
|
||||
return User.findById(id)
|
||||
}
|
||||
|
||||
fun getUser(discordID: Long): User? {
|
||||
val users = User.find(Users.discord eq discordID)
|
||||
|
||||
return users.firstOrNull()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user