61 lines
No EOL
2 KiB
Kotlin
61 lines
No EOL
2 KiB
Kotlin
package ru.sicamp.sicamphelper
|
|
|
|
import org.jetbrains.exposed.sql.*
|
|
import org.jetbrains.exposed.sql.transactions.transaction
|
|
import org.springframework.beans.factory.InitializingBean
|
|
import org.springframework.security.crypto.password.PasswordEncoder
|
|
import org.springframework.stereotype.Component
|
|
import ru.sicamp.sicamphelper.db.entity.Group
|
|
import ru.sicamp.sicamphelper.db.entity.User
|
|
import ru.sicamp.sicamphelper.db.table.Groups
|
|
import ru.sicamp.sicamphelper.db.table.Tables
|
|
import ru.sicamp.sicamphelper.db.table.Users
|
|
import java.time.Duration
|
|
import java.time.LocalDateTime
|
|
import javax.sql.DataSource
|
|
|
|
@Component
|
|
class InitializingBeanImpl(
|
|
private val datasource: DataSource,
|
|
private val passwordEncoder: PasswordEncoder,
|
|
private val databaseConfig: DatabaseConfig,
|
|
) : InitializingBean {
|
|
override fun afterPropertiesSet() {
|
|
val db = Database.connect(
|
|
datasource = datasource,
|
|
databaseConfig = databaseConfig
|
|
)
|
|
|
|
transaction(db) {
|
|
addLogger(StdOutSqlLogger)
|
|
|
|
SchemaUtils.create(*Tables.values().map { it.table }.toTypedArray())
|
|
}
|
|
|
|
transaction {
|
|
val now = LocalDateTime.now()
|
|
val adminGroup = Group.find {
|
|
Groups.name eq "admins"
|
|
}.firstOrNull() ?: Group.new {
|
|
name = "admins"
|
|
tgLink = ""
|
|
}
|
|
|
|
User.find {
|
|
Users.login eq "root"
|
|
}.firstOrNull() ?: User.new {
|
|
login = "root"
|
|
_password = passwordEncoder.encode("123456")
|
|
role = Users.Role.ADMIN
|
|
group = adminGroup
|
|
name = "Рут Рутович"
|
|
sex = Users.Sex.OTHER
|
|
age = 12
|
|
enabled = true
|
|
locked = false
|
|
accountExpiration = now + Duration.ofDays(60)
|
|
credentialsExpiration = now + Duration.ofDays(60)
|
|
}
|
|
}
|
|
}
|
|
} |