Skip to content

Commit

Permalink
Add new transaction reasons (#2514)
Browse files Browse the repository at this point in the history
* Add sonhos coin flip bets as a transaction reason

* Whoops, forgot about this

* Add sonhos emoji fight bets as a transaction reason

* Add divine intervention as a transaction reason

* Improve divine intervention message

* Add payment as a transaction reason

* Refactor, because our old idea wouldn't work as well as it could

* Add sonhos bundle purchase as a transaction reason
  • Loading branch information
MrPowerGamerBR authored Mar 12, 2022
1 parent 5611132 commit c5e5997
Show file tree
Hide file tree
Showing 20 changed files with 572 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ object Emotes {
val loriAmeno = DiscordEmote(673868465433477126, "lori_ameno", false)
val LoriStonks = DiscordEmote(788434890927505448L, "lori_stonks", false)
val LoriBanHammer = DiscordEmote(741058240455901254L, "lori_ban_hammer", false)
val LoriKiss = DiscordEmote(950112551541289010L, "lori_kiss", false)

val PantufaGaming = DiscordEmote(853048446922784819L, "pantufa_gaming", false)

Expand Down Expand Up @@ -82,6 +83,8 @@ object Emotes {
val Gift = UnicodeEmote("\uD83C\uDF81")
val MoneyWithWings = UnicodeEmote("\uD83D\uDCB8")
val DollarBill = UnicodeEmote("\uD83D\uDCB5")
val Rooster = UnicodeEmote("\uD83D\uDC13")
val Star = UnicodeEmote("")

val Discord = DiscordEmote(314003252830011395, "discord", false)
val Undertale = DiscordEmote(412576128340066304L, "undertale_heart", false)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package net.perfectdreams.loritta.cinnamon.common.utils

enum class DivineInterventionTransactionEntryAction {
ADDED_SONHOS,
REMOVED_SONHOS
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,26 @@ enum class TransactionType(
val description: StringI18nData,
val emote: Emote
) {
PAYMENT(
I18nKeysData.Commands.Command.Transactions.Types.Payment.Title,
I18nKeysData.Commands.Command.Transactions.Types.Payment.Description,
Emotes.Star
),
COINFLIP_BET(
I18nKeysData.Commands.Command.Transactions.Types.CoinFlipBet.Title,
I18nKeysData.Commands.Command.Transactions.Types.CoinFlipBet.Description,
Emotes.CoinHeads
),
COINFLIP_BET_GLOBAL(
I18nKeysData.Commands.Command.Transactions.Types.CoinFlipBetGlobal.Title,
I18nKeysData.Commands.Command.Transactions.Types.CoinFlipBetGlobal.Description,
Emotes.CoinTails
),
EMOJI_FIGHT_BET(
I18nKeysData.Commands.Command.Transactions.Types.EmojiFightBet.Title,
I18nKeysData.Commands.Command.Transactions.Types.EmojiFightBet.Description,
Emotes.Rooster
),
HOME_BROKER(
I18nKeysData.Commands.Command.Transactions.Types.HomeBroker.Title,
I18nKeysData.Commands.Command.Transactions.Types.HomeBroker.Description,
Expand All @@ -25,9 +40,19 @@ enum class TransactionType(
I18nKeysData.Commands.Command.Transactions.Types.SparklyPowerLsx.Description,
Emotes.PantufaGaming,
),
SONHOS_BUNDLE_PURCHASE(
I18nKeysData.Commands.Command.Transactions.Types.SonhosBundlePurchase.Title,
I18nKeysData.Commands.Command.Transactions.Types.SonhosBundlePurchase.Description,
Emotes.LoriRich,
),
INACTIVE_DAILY_TAX(
I18nKeysData.Commands.Command.Transactions.Types.InactiveDailyTax.Title,
I18nKeysData.Commands.Command.Transactions.Types.InactiveDailyTax.Description,
Emotes.LoriSob,
),
DIVINE_INTERVENTION(
I18nKeysData.Commands.Command.Transactions.Types.DivineIntervention.Title,
I18nKeysData.Commands.Command.Transactions.Types.DivineIntervention.Description,
Emotes.Jesus,
)
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import net.perfectdreams.loritta.cinnamon.common.achievements.AchievementType
import net.perfectdreams.loritta.cinnamon.common.commands.ApplicationCommandType
import net.perfectdreams.loritta.cinnamon.common.components.ComponentType
import net.perfectdreams.loritta.cinnamon.common.utils.DailyTaxPendingDirectMessageState
import net.perfectdreams.loritta.cinnamon.common.utils.DivineInterventionTransactionEntryAction
import net.perfectdreams.loritta.cinnamon.common.utils.LorittaBovespaBrokerUtils
import net.perfectdreams.loritta.cinnamon.common.utils.SparklyPowerLSXTransactionEntryAction
import net.perfectdreams.loritta.cinnamon.pudding.services.BackgroundsService
Expand All @@ -35,22 +36,33 @@ import net.perfectdreams.loritta.cinnamon.pudding.tables.CachedDiscordUsersDirec
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetGlobalMatchmakingQueue
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetGlobalMatchmakingResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetGlobalSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetMatchmakingResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.Dailies
import net.perfectdreams.loritta.cinnamon.pudding.tables.DailyTaxPendingDirectMessages
import net.perfectdreams.loritta.cinnamon.pudding.tables.DailyTaxSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.DailyTaxUsersToSkipDirectMessages
import net.perfectdreams.loritta.cinnamon.pudding.tables.DivineInterventionSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.EmojiFightMatches
import net.perfectdreams.loritta.cinnamon.pudding.tables.EmojiFightMatchmakingResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.EmojiFightParticipants
import net.perfectdreams.loritta.cinnamon.pudding.tables.EmojiFightSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.ExecutedApplicationCommandsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.ExecutedComponentsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.GuildCountStats
import net.perfectdreams.loritta.cinnamon.pudding.tables.InteractionsData
import net.perfectdreams.loritta.cinnamon.pudding.tables.Marriages
import net.perfectdreams.loritta.cinnamon.pudding.tables.PaymentSonhosTransactionResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.PaymentSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.Payments
import net.perfectdreams.loritta.cinnamon.pudding.tables.ProfileDesignGroups
import net.perfectdreams.loritta.cinnamon.pudding.tables.ProfileDesigns
import net.perfectdreams.loritta.cinnamon.pudding.tables.Profiles
import net.perfectdreams.loritta.cinnamon.pudding.tables.ServerConfigs
import net.perfectdreams.loritta.cinnamon.pudding.tables.Sets
import net.perfectdreams.loritta.cinnamon.pudding.tables.ShipEffects
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosBundlePurchaseSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosBundles
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.SparklyPowerLSXSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.TickerPrices
Expand Down Expand Up @@ -228,7 +240,18 @@ class Pudding(val hikariDataSource: HikariDataSource, private val database: Data
CachedDiscordUsersDirectMessageChannels,
DailyTaxPendingDirectMessages,
DailyTaxSonhosTransactionsLog,
DailyTaxUsersToSkipDirectMessages
DailyTaxUsersToSkipDirectMessages,
CoinFlipBetMatchmakingResults,
CoinFlipBetSonhosTransactionsLog,
EmojiFightMatches,
EmojiFightParticipants,
EmojiFightMatchmakingResults,
EmojiFightSonhosTransactionsLog,
DivineInterventionSonhosTransactionsLog,
PaymentSonhosTransactionResults,
PaymentSonhosTransactionsLog,
SonhosBundles,
SonhosBundlePurchaseSonhosTransactionsLog
)

if (schemas.isNotEmpty())
Expand All @@ -239,6 +262,7 @@ class Pudding(val hikariDataSource: HikariDataSource, private val database: Data
createOrUpdatePostgreSQLEnum(LorittaBovespaBrokerUtils.BrokerSonhosTransactionsEntryAction.values())
createOrUpdatePostgreSQLEnum(SparklyPowerLSXTransactionEntryAction.values())
createOrUpdatePostgreSQLEnum(DailyTaxPendingDirectMessageState.values())
createOrUpdatePostgreSQLEnum(DivineInterventionTransactionEntryAction.values())

logger.info { "Tables to be created or updated: $schemas" }
SchemaUtils.createMissingTablesAndColumns(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,19 @@ import net.perfectdreams.loritta.cinnamon.pudding.data.Background
import net.perfectdreams.loritta.cinnamon.pudding.data.BackgroundVariation
import net.perfectdreams.loritta.cinnamon.pudding.data.BrokerSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.CoinFlipBetGlobalSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.CoinFlipBetSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.Daily
import net.perfectdreams.loritta.cinnamon.pudding.data.DailyTaxSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.DefaultBackgroundVariation
import net.perfectdreams.loritta.cinnamon.pudding.data.DivineInterventionSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.Marriage
import net.perfectdreams.loritta.cinnamon.pudding.data.PaymentSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.ProfileDesignGroupBackgroundVariation
import net.perfectdreams.loritta.cinnamon.pudding.data.ProfileSettings
import net.perfectdreams.loritta.cinnamon.pudding.data.Rectangle
import net.perfectdreams.loritta.cinnamon.pudding.data.ServerConfigRoot
import net.perfectdreams.loritta.cinnamon.pudding.data.ShipEffect
import net.perfectdreams.loritta.cinnamon.pudding.data.SonhosBundlePurchaseSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.SonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.SparklyPowerLSXSonhosTransaction
import net.perfectdreams.loritta.cinnamon.pudding.data.UnknownSonhosTransaction
Expand All @@ -36,12 +40,19 @@ import net.perfectdreams.loritta.cinnamon.pudding.tables.Backgrounds
import net.perfectdreams.loritta.cinnamon.pudding.tables.BrokerSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetGlobalMatchmakingResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetGlobalSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetMatchmakingResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.CoinFlipBetSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.Dailies
import net.perfectdreams.loritta.cinnamon.pudding.tables.DailyTaxSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.DivineInterventionSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.Marriages
import net.perfectdreams.loritta.cinnamon.pudding.tables.PaymentSonhosTransactionResults
import net.perfectdreams.loritta.cinnamon.pudding.tables.PaymentSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.Profiles
import net.perfectdreams.loritta.cinnamon.pudding.tables.ServerConfigs
import net.perfectdreams.loritta.cinnamon.pudding.tables.ShipEffects
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosBundlePurchaseSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosBundles
import net.perfectdreams.loritta.cinnamon.pudding.tables.SonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.SparklyPowerLSXSonhosTransactionsLog
import net.perfectdreams.loritta.cinnamon.pudding.tables.UserAchievements
Expand Down Expand Up @@ -154,7 +165,16 @@ fun BackgroundVariation.Companion.fromRow(row: ResultRow): BackgroundVariation {

fun SonhosTransaction.Companion.fromRow(row: ResultRow): SonhosTransaction {
// "hasValue" does not work, because it only checks if the value is present on the table BUT it is always present! (but it is null)
return if (row.getOrNull(BrokerSonhosTransactionsLog.id) != null) {
return if (row.getOrNull(PaymentSonhosTransactionsLog.id) != null) {
PaymentSonhosTransaction(
row[SonhosTransactionsLog.id].value,
row[SonhosTransactionsLog.timestamp].toKotlinInstant(),
UserId(row[SonhosTransactionsLog.user].value),
UserId(row[PaymentSonhosTransactionResults.givenBy].value),
UserId(row[PaymentSonhosTransactionResults.receivedBy].value),
row[PaymentSonhosTransactionResults.sonhos],
)
} else if (row.getOrNull(BrokerSonhosTransactionsLog.id) != null) {
BrokerSonhosTransaction(
row[SonhosTransactionsLog.id].value,
row[SonhosTransactionsLog.timestamp].toKotlinInstant(),
Expand All @@ -178,6 +198,18 @@ fun SonhosTransaction.Companion.fromRow(row: ResultRow): SonhosTransaction {
row[CoinFlipBetGlobalMatchmakingResults.taxPercentage],
row[CoinFlipBetGlobalMatchmakingResults.timeOnQueue].toMillis(),
)
} else if (row.getOrNull(CoinFlipBetSonhosTransactionsLog.id) != null) {
CoinFlipBetSonhosTransaction(
row[SonhosTransactionsLog.id].value,
row[SonhosTransactionsLog.timestamp].toKotlinInstant(),
UserId(row[SonhosTransactionsLog.user].value),
UserId(row[CoinFlipBetMatchmakingResults.winner].value),
UserId(row[CoinFlipBetMatchmakingResults.loser].value),
row[CoinFlipBetMatchmakingResults.quantity],
row[CoinFlipBetMatchmakingResults.quantityAfterTax],
row[CoinFlipBetMatchmakingResults.tax],
row[CoinFlipBetMatchmakingResults.taxPercentage]
)
} else if (row.getOrNull(SparklyPowerLSXSonhosTransactionsLog.id) != null) {
SparklyPowerLSXSonhosTransaction(
row[SonhosTransactionsLog.id].value,
Expand All @@ -199,6 +231,23 @@ fun SonhosTransaction.Companion.fromRow(row: ResultRow): SonhosTransaction {
row[DailyTaxSonhosTransactionsLog.maxDayThreshold],
row[DailyTaxSonhosTransactionsLog.minimumSonhosForTrigger]
)
} else if (row.getOrNull(SonhosBundlePurchaseSonhosTransactionsLog.id) != null) {
SonhosBundlePurchaseSonhosTransaction(
row[SonhosTransactionsLog.id].value,
row[SonhosTransactionsLog.timestamp].toKotlinInstant(),
UserId(row[SonhosTransactionsLog.user].value),
row[SonhosBundles.sonhos]
)
} else if (row.getOrNull(DivineInterventionSonhosTransactionsLog.id) != null) {
DivineInterventionSonhosTransaction(
row[SonhosTransactionsLog.id].value,
row[SonhosTransactionsLog.timestamp].toKotlinInstant(),
UserId(row[SonhosTransactionsLog.user].value),
row[DivineInterventionSonhosTransactionsLog.action],
row[DivineInterventionSonhosTransactionsLog.givenBy]?.let { UserId(it.value) },
row[DivineInterventionSonhosTransactionsLog.sonhos],
row[DivineInterventionSonhosTransactionsLog.reason]
)
} else {
UnknownSonhosTransaction(
row[SonhosTransactionsLog.id].value,
Expand Down
Loading

0 comments on commit c5e5997

Please sign in to comment.