mirror of https://github.com/usbharu/Hideout.git
feat: Exposedで初期化を自動でするように
This commit is contained in:
parent
36ad81ddd1
commit
0e5d7c92f6
|
@ -1,9 +1,7 @@
|
||||||
package dev.usbharu.hideout.config
|
package dev.usbharu.hideout.config
|
||||||
|
|
||||||
import org.jetbrains.exposed.sql.Database
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.context.annotation.Bean
|
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
|
@ -15,16 +13,6 @@ class SpringConfig {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
lateinit var config: ApplicationConfig
|
lateinit var config: ApplicationConfig
|
||||||
|
|
||||||
@Bean
|
|
||||||
fun database(): Database {
|
|
||||||
return Database.connect(
|
|
||||||
url = dbConfig.url,
|
|
||||||
driver = dbConfig.driver,
|
|
||||||
user = dbConfig.user,
|
|
||||||
password = dbConfig.password
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ConfigurationProperties("hideout")
|
@ConfigurationProperties("hideout")
|
||||||
|
|
|
@ -1,20 +1,15 @@
|
||||||
package dev.usbharu.hideout.repository
|
package dev.usbharu.hideout.repository
|
||||||
|
|
||||||
import dev.usbharu.hideout.domain.model.hideout.entity.Jwt
|
import dev.usbharu.hideout.domain.model.hideout.entity.Jwt
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.Table
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.insert
|
||||||
|
import org.jetbrains.exposed.sql.select
|
||||||
|
import org.jetbrains.exposed.sql.update
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class MetaRepositoryImpl(private val database: Database) : MetaRepository {
|
class MetaRepositoryImpl : MetaRepository {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(Meta)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(Meta)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun save(meta: dev.usbharu.hideout.domain.model.hideout.entity.Meta) {
|
override suspend fun save(meta: dev.usbharu.hideout.domain.model.hideout.entity.Meta) {
|
||||||
if (Meta.select { Meta.id eq 1 }.empty()) {
|
if (Meta.select { Meta.id eq 1 }.empty()) {
|
||||||
|
|
|
@ -6,18 +6,10 @@ import dev.usbharu.hideout.exception.FailedToGetResourcesException
|
||||||
import dev.usbharu.hideout.service.core.IdGenerateService
|
import dev.usbharu.hideout.service.core.IdGenerateService
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class PostRepositoryImpl(database: Database, private val idGenerateService: IdGenerateService) : PostRepository {
|
class PostRepositoryImpl(private val idGenerateService: IdGenerateService) : PostRepository {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(Posts)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(Posts)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun generateId(): Long = idGenerateService.generateId()
|
override suspend fun generateId(): Long = idGenerateService.generateId()
|
||||||
|
|
||||||
|
|
|
@ -5,21 +5,13 @@ import dev.usbharu.hideout.service.core.IdGenerateService
|
||||||
import org.jetbrains.exposed.dao.id.LongIdTable
|
import org.jetbrains.exposed.dao.id.LongIdTable
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class ReactionRepositoryImpl(
|
class ReactionRepositoryImpl(
|
||||||
private val database: Database,
|
|
||||||
private val idGenerateService: IdGenerateService
|
private val idGenerateService: IdGenerateService
|
||||||
) : ReactionRepository {
|
) : ReactionRepository {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(Reactions)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(Reactions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun generateId(): Long = idGenerateService.generateId()
|
override suspend fun generateId(): Long = idGenerateService.generateId()
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ import dev.usbharu.hideout.service.auth.ExposedOAuth2AuthorizationService
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.javatime.CurrentTimestamp
|
import org.jetbrains.exposed.sql.javatime.CurrentTimestamp
|
||||||
import org.jetbrains.exposed.sql.javatime.timestamp
|
import org.jetbrains.exposed.sql.javatime.timestamp
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.security.jackson2.SecurityJackson2Modules
|
import org.springframework.security.jackson2.SecurityJackson2Modules
|
||||||
import org.springframework.security.oauth2.core.AuthorizationGrantType
|
import org.springframework.security.oauth2.core.AuthorizationGrantType
|
||||||
|
@ -27,14 +26,8 @@ import java.time.Instant
|
||||||
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient as SpringRegisteredClient
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient as SpringRegisteredClient
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class RegisteredClientRepositoryImpl(private val database: Database) : RegisteredClientRepository {
|
class RegisteredClientRepositoryImpl : RegisteredClientRepository {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(RegisteredClient)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(RegisteredClient)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun save(registeredClient: SpringRegisteredClient?) {
|
override fun save(registeredClient: SpringRegisteredClient?) {
|
||||||
requireNotNull(registeredClient)
|
requireNotNull(registeredClient)
|
||||||
|
|
|
@ -6,23 +6,12 @@ import dev.usbharu.hideout.service.core.IdGenerateService
|
||||||
import org.jetbrains.exposed.dao.id.LongIdTable
|
import org.jetbrains.exposed.dao.id.LongIdTable
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class UserRepositoryImpl(private val database: Database, private val idGenerateService: IdGenerateService) :
|
class UserRepositoryImpl(private val idGenerateService: IdGenerateService) :
|
||||||
UserRepository {
|
UserRepository {
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(Users)
|
|
||||||
SchemaUtils.create(UsersFollowers)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(Users)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(UsersFollowers)
|
|
||||||
SchemaUtils.create(FollowRequests)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(FollowRequests)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun save(user: User): User {
|
override suspend fun save(user: User): User {
|
||||||
val singleOrNull = Users.select { Users.id eq user.id }.singleOrNull()
|
val singleOrNull = Users.select { Users.id eq user.id }.singleOrNull()
|
||||||
|
|
|
@ -4,7 +4,6 @@ import dev.usbharu.hideout.service.core.Transaction
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority
|
import org.springframework.security.core.authority.SimpleGrantedAuthority
|
||||||
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsentService
|
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsentService
|
||||||
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository
|
||||||
|
@ -15,17 +14,9 @@ import org.springframework.security.oauth2.server.authorization.OAuth2Authorizat
|
||||||
class ExposedOAuth2AuthorizationConsentService(
|
class ExposedOAuth2AuthorizationConsentService(
|
||||||
private val registeredClientRepository: RegisteredClientRepository,
|
private val registeredClientRepository: RegisteredClientRepository,
|
||||||
private val transaction: Transaction,
|
private val transaction: Transaction,
|
||||||
private val database: Database
|
|
||||||
) :
|
) :
|
||||||
OAuth2AuthorizationConsentService {
|
OAuth2AuthorizationConsentService {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(OAuth2AuthorizationConsent)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(OAuth2AuthorizationConsent)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun save(authorizationConsent: AuthorizationConsent?) = runBlocking {
|
override fun save(authorizationConsent: AuthorizationConsent?) = runBlocking {
|
||||||
requireNotNull(authorizationConsent)
|
requireNotNull(authorizationConsent)
|
||||||
transaction.transaction {
|
transaction.transaction {
|
||||||
|
|
|
@ -10,7 +10,6 @@ import kotlinx.coroutines.runBlocking
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.javatime.timestamp
|
import org.jetbrains.exposed.sql.javatime.timestamp
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
|
||||||
import org.springframework.security.jackson2.CoreJackson2Module
|
import org.springframework.security.jackson2.CoreJackson2Module
|
||||||
import org.springframework.security.jackson2.SecurityJackson2Modules
|
import org.springframework.security.jackson2.SecurityJackson2Modules
|
||||||
import org.springframework.security.oauth2.core.*
|
import org.springframework.security.oauth2.core.*
|
||||||
|
@ -29,16 +28,9 @@ import org.springframework.stereotype.Service
|
||||||
class ExposedOAuth2AuthorizationService(
|
class ExposedOAuth2AuthorizationService(
|
||||||
private val registeredClientRepository: RegisteredClientRepository,
|
private val registeredClientRepository: RegisteredClientRepository,
|
||||||
private val transaction: Transaction,
|
private val transaction: Transaction,
|
||||||
private val database: Database
|
|
||||||
) :
|
) :
|
||||||
OAuth2AuthorizationService {
|
OAuth2AuthorizationService {
|
||||||
|
|
||||||
init {
|
|
||||||
transaction(database) {
|
|
||||||
SchemaUtils.create(Authorization)
|
|
||||||
SchemaUtils.createMissingTablesAndColumns(Authorization)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("LongMethod", "CyclomaticComplexMethod")
|
@Suppress("LongMethod", "CyclomaticComplexMethod")
|
||||||
override fun save(authorization: OAuth2Authorization?): Unit = runBlocking {
|
override fun save(authorization: OAuth2Authorization?): Unit = runBlocking {
|
||||||
|
|
|
@ -33,8 +33,9 @@ spring:
|
||||||
h2:
|
h2:
|
||||||
console:
|
console:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
exposed:
|
||||||
|
generate-ddl: true
|
||||||
server:
|
server:
|
||||||
|
|
||||||
tomcat:
|
tomcat:
|
||||||
basedir: tomcat
|
basedir: tomcat
|
||||||
accesslog:
|
accesslog:
|
||||||
|
|
Loading…
Reference in New Issue