Skip to content

Commit

Permalink
feat: upgrade codebase for parsek v2
Browse files Browse the repository at this point in the history
  • Loading branch information
duruer committed Apr 2, 2024
1 parent 6bbfb24 commit 10e0e5f
Show file tree
Hide file tree
Showing 12 changed files with 115 additions and 131 deletions.
5 changes: 5 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ val pf4jVersion: String by project
val vertxVersion: String by project
val gsonVersion: String by project
val handlebarsVersion: String by project
val springContextVersion: String by project

val bootstrap = (project.findProperty("bootstrap") as String?)?.toBoolean() ?: false
val pluginsDir: File? by rootProject.extra

Expand Down Expand Up @@ -51,6 +53,9 @@ dependencies {

// https://mvnrepository.com/artifact/com.github.jknack/handlebars
compileOnly("com.github.jknack:handlebars:$handlebarsVersion")

// https://mvnrepository.com/artifact/org.springframework/spring-context
compileOnly("org.springframework:spring-context:$springContextVersion")
}

tasks {
Expand Down
3 changes: 2 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ pluginDependencies=parsek-plugin-database, parsek-plugin-auth, parsek-plugin-pay
pf4jVersion=3.10.0
vertxVersion=4.5.1
gsonVersion=2.10.1
handlebarsVersion=4.3.1
handlebarsVersion=4.3.1
springContextVersion=5.3.33
Original file line number Diff line number Diff line change
@@ -1,38 +1,48 @@
package co.statu.rule.plugins.balance

import co.statu.parsek.PluginEventManager
import co.statu.parsek.api.config.PluginConfigManager
import co.statu.parsek.error.BadRequest
import co.statu.parsek.model.Successful
import co.statu.parsek.util.TextUtil.compileInline
import co.statu.rule.auth.db.model.User
import co.statu.rule.database.Dao.Companion.get
import co.statu.rule.database.DatabaseManager
import co.statu.rule.plugins.balance.db.dao.BalanceDao
import co.statu.rule.plugins.balance.db.impl.BalanceDaoImpl
import co.statu.rule.plugins.balance.event.BalanceEventListener
import co.statu.rule.plugins.payment.api.Checkout
import co.statu.rule.plugins.payment.api.TypeListener
import co.statu.rule.plugins.payment.db.model.Purchase
import co.statu.rule.plugins.payment.util.TextUtil.toCurrencyFormat
import org.springframework.beans.factory.config.ConfigurableBeanFactory
import org.springframework.context.annotation.Scope
import org.springframework.stereotype.Component

class BalancePaymentListener : TypeListener {
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
class BalancePaymentListener(private val balancePlugin: BalancePlugin) : TypeListener {
private val balanceEventHandlers by lazy {
BalancePlugin.INSTANCE.context.pluginEventManager.getEventHandlers<BalanceEventListener>()
PluginEventManager.getEventListeners<BalanceEventListener>()
}

private val balanceConfig by lazy {
BalancePlugin.pluginConfigManager.config
private val pluginConfigManager by lazy {
balancePlugin.pluginBeanContext.getBean(PluginConfigManager::class.java) as PluginConfigManager<BalanceConfig>
}

private val compiledDescription by lazy {
balanceConfig.description.compileInline()
private val databaseManager by lazy {
balancePlugin.pluginBeanContext.getBean(DatabaseManager::class.java)
}

private val balanceDao by lazy {
get<BalanceDao>(BalancePlugin.tables)
private val balanceConfig by lazy {
pluginConfigManager.config
}

private val databaseManager by lazy {
BalancePlugin.databaseManager
private val compiledDescription by lazy {
balanceConfig.description.compileInline()
}

private val balanceDao: BalanceDao = BalanceDaoImpl()

private val jdbcPool by lazy {
databaseManager.getConnectionPool()
}
Expand Down
68 changes: 15 additions & 53 deletions src/main/kotlin/co/statu/rule/plugins/balance/BalancePlugin.kt
Original file line number Diff line number Diff line change
@@ -1,68 +1,30 @@
package co.statu.rule.plugins.balance

import co.statu.parsek.api.ParsekPlugin
import co.statu.parsek.api.PluginContext
import co.statu.parsek.api.config.PluginConfigManager
import co.statu.rule.auth.provider.AuthProvider
import co.statu.rule.database.Dao
import co.statu.rule.database.DatabaseManager
import co.statu.rule.database.DatabaseMigration
import co.statu.rule.database.api.DatabaseHelper
import co.statu.rule.plugins.balance.db.impl.BalanceDaoImpl
import co.statu.rule.plugins.balance.db.impl.BalanceRegisterGiftDaoImpl
import co.statu.rule.plugins.balance.db.impl.BalanceUsageDaoImpl
import co.statu.rule.plugins.balance.db.migration.DbMigration1To2
import co.statu.rule.plugins.balance.db.migration.DbMigration2To3
import co.statu.rule.plugins.balance.db.migration.DbMigration3To4
import co.statu.rule.plugins.balance.event.*
import co.statu.rule.plugins.payment.db.impl.PurchaseDaoImpl
import org.slf4j.Logger
import org.slf4j.LoggerFactory

class BalancePlugin(pluginContext: PluginContext) : ParsekPlugin(pluginContext) {
companion object {
internal val logger: Logger = LoggerFactory.getLogger(BalancePlugin::class.java)

internal lateinit var pluginConfigManager: PluginConfigManager<BalanceConfig>

internal lateinit var INSTANCE: BalancePlugin

internal lateinit var databaseManager: DatabaseManager

internal lateinit var authProvider: AuthProvider

internal val tables by lazy {
mutableListOf<Dao<*>>(
BalanceDaoImpl(),
BalanceUsageDaoImpl(),
BalanceRegisterGiftDaoImpl()
)
}

internal val externalTables by lazy {
mutableListOf(
PurchaseDaoImpl()
)
}

internal val migrations by lazy {
listOf(
DbMigration1To2(),
DbMigration2To3(),
DbMigration3To4()
)
}
class BalancePlugin : ParsekPlugin(), DatabaseHelper {
override val tables: List<Dao<*>> by lazy {
listOf<Dao<*>>(
BalanceDaoImpl(),
BalanceUsageDaoImpl(),
BalanceRegisterGiftDaoImpl()
)
}

init {
INSTANCE = this

logger.info("Initialized instance")

context.pluginEventManager.register(this, DatabaseEventHandler())
context.pluginEventManager.register(this, AuthEventHandler())
context.pluginEventManager.register(this, RouterEventHandler())
context.pluginEventManager.register(this, PaymentEventHandler())
context.pluginEventManager.register(this, ParsekEventHandler())

logger.info("Registered events")
override val migrations: List<DatabaseMigration> by lazy {
listOf(
DbMigration1To2(),
DbMigration2To3(),
DbMigration3To4()
)
}
}
Original file line number Diff line number Diff line change
@@ -1,48 +1,48 @@
package co.statu.rule.plugins.balance.event

import co.statu.parsek.api.annotation.EventListener
import co.statu.parsek.api.config.PluginConfigManager
import co.statu.rule.auth.db.model.User
import co.statu.rule.auth.event.AuthEventListener
import co.statu.rule.auth.provider.AuthProvider
import co.statu.rule.auth.util.StringUtil
import co.statu.rule.database.Dao.Companion.get
import co.statu.rule.database.DatabaseManager
import co.statu.rule.plugins.balance.BalanceConfig
import co.statu.rule.plugins.balance.BalancePlugin
import co.statu.rule.plugins.balance.db.dao.BalanceDao
import co.statu.rule.plugins.balance.db.dao.BalanceRegisterGiftDao
import co.statu.rule.plugins.balance.db.impl.BalanceDaoImpl
import co.statu.rule.plugins.balance.db.impl.BalanceRegisterGiftDaoImpl
import co.statu.rule.plugins.balance.db.model.Balance
import co.statu.rule.plugins.balance.db.model.BalanceRegisterGift
import co.statu.rule.plugins.payment.db.dao.PurchaseDao
import co.statu.rule.plugins.payment.db.impl.PurchaseDaoImpl
import co.statu.rule.plugins.payment.db.model.Purchase
import co.statu.rule.plugins.payment.db.model.PurchaseStatus
import io.vertx.core.json.JsonObject

class AuthEventHandler : AuthEventListener {
@EventListener
class AuthEventHandler(private val balancePlugin: BalancePlugin) : AuthEventListener {

private val balanceDao by lazy {
get<BalanceDao>(BalancePlugin.tables)
private val pluginConfigManager by lazy {
balancePlugin.pluginBeanContext.getBean(PluginConfigManager::class.java) as PluginConfigManager<BalanceConfig>
}

private val pluginConfigManager by lazy {
BalancePlugin.pluginConfigManager
private val databaseManager by lazy {
balancePlugin.pluginBeanContext.getBean(DatabaseManager::class.java)
}

private val config by lazy {
pluginConfigManager.config
}

private val purchaseDao by lazy {
get<PurchaseDao>(BalancePlugin.externalTables)
}
private val balanceDao: BalanceDao = BalanceDaoImpl()

private val balanceRegisterGiftDao by lazy {
get<BalanceRegisterGiftDao>(BalancePlugin.tables)
}
private val purchaseDao: PurchaseDao = PurchaseDaoImpl()

override suspend fun onReady(authProvider: AuthProvider) {
BalancePlugin.authProvider = authProvider
}
private val balanceRegisterGiftDao: BalanceRegisterGiftDao = BalanceRegisterGiftDaoImpl()

override suspend fun onRegistrationComplete(user: User) {
val jdbcPool = BalancePlugin.databaseManager.getConnectionPool()
val jdbcPool = databaseManager.getConnectionPool()
val email = StringUtil.extractOriginalEmail(user.email.lowercase())

val registerGiftExists = balanceRegisterGiftDao.existsByEmail(email, jdbcPool)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package co.statu.rule.plugins.balance.event

import co.statu.parsek.api.PluginEvent
import co.statu.parsek.api.event.PluginEventListener
import co.statu.rule.auth.db.model.User

interface BalanceEventListener : PluginEvent {
interface BalanceEventListener : PluginEventListener {
suspend fun verifyAmount(user: User, amount: Long)

suspend fun setPriceOfAmount(user: User, amount: Long, price: Long): Long
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
package co.statu.rule.plugins.balance.event

import co.statu.parsek.api.annotation.EventListener
import co.statu.parsek.api.config.PluginConfigManager
import co.statu.parsek.api.event.ParsekEventListener
import co.statu.parsek.api.event.CoreEventListener
import co.statu.parsek.config.ConfigManager
import co.statu.rule.plugins.balance.BalanceConfig
import co.statu.rule.plugins.balance.BalancePlugin
import co.statu.rule.plugins.balance.BalancePlugin.Companion.logger
import co.statu.rule.plugins.balance.config.migration.ConfigMigration1to2
import org.slf4j.Logger

class ParsekEventHandler : ParsekEventListener {
@EventListener
class CoreEventHandler(private val balancePlugin: BalancePlugin, private val logger: Logger) : CoreEventListener {
override suspend fun onConfigManagerReady(configManager: ConfigManager) {
BalancePlugin.pluginConfigManager = PluginConfigManager(
val pluginConfigManager = PluginConfigManager(
configManager,
BalancePlugin.INSTANCE,
balancePlugin,
BalanceConfig::class.java,
logger,
listOf(ConfigMigration1to2()),
listOf("balance")
)

balancePlugin.pluginBeanContext.beanFactory.registerSingleton(
pluginConfigManager.javaClass.name,
pluginConfigManager
)

logger.info("Initialized plugin config")
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package co.statu.rule.plugins.balance.event

import co.statu.parsek.api.annotation.EventListener
import co.statu.rule.database.DatabaseManager
import co.statu.rule.database.event.DatabaseEventListener
import co.statu.rule.plugins.balance.BalancePlugin

class DatabaseEventHandler : DatabaseEventListener {
@EventListener
class DatabaseEventHandler(private val balancePlugin: BalancePlugin) : DatabaseEventListener {
override suspend fun onReady(databaseManager: DatabaseManager) {
databaseManager.migrateNewPluginId("balance", BalancePlugin.INSTANCE.context.pluginId, BalancePlugin.INSTANCE)
databaseManager.migrateNewPluginId("balance", balancePlugin.pluginId, balancePlugin)

databaseManager.initialize(BalancePlugin.INSTANCE, BalancePlugin.tables, BalancePlugin.migrations)

BalancePlugin.databaseManager = databaseManager
databaseManager.initialize(balancePlugin, balancePlugin)
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
package co.statu.rule.plugins.balance.event

import co.statu.parsek.api.annotation.EventListener
import co.statu.rule.plugins.balance.BalancePaymentListener
import co.statu.rule.plugins.balance.BalancePlugin
import co.statu.rule.plugins.payment.PaymentSystem
import co.statu.rule.plugins.payment.event.PaymentEventListener

class PaymentEventHandler : PaymentEventListener {
@EventListener
class PaymentEventHandler(private val balancePlugin: BalancePlugin) : PaymentEventListener {
private val balancePaymentListener by lazy {
balancePlugin.pluginBeanContext.getBean(BalancePaymentListener::class.java)
}

override fun onPaymentSystemInit(paymentSystem: PaymentSystem) {
paymentSystem.register(BalancePaymentListener())
paymentSystem.register(balancePaymentListener)
}
}

This file was deleted.

Loading

0 comments on commit 10e0e5f

Please sign in to comment.