All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.provenance.p8e.shared.domain.AffiliateShare.kt Maven / Gradle / Ivy

package io.provenance.p8e.shared.domain

import io.p8e.util.toHex
import io.p8e.util.toJavaPublicKey
import io.provenance.p8e.shared.sql.offsetDatetime
import org.jetbrains.exposed.dao.*
import org.jetbrains.exposed.dao.id.EntityID
import org.jetbrains.exposed.dao.id.UUIDTable
import org.jetbrains.exposed.sql.and
import java.security.PublicKey
import java.time.OffsetDateTime
import java.util.UUID

data class AffiliateSharePublicKeys(val value: Set)

object AffiliateShareTable : UUIDTable(name = "affiliate_share", columnName = "uuid") {
    val affiliatePublicKey = text("affiliate_public_key")
    val publicKey = text("public_key")
    val created = offsetDatetime("created").clientDefault { OffsetDateTime.now() }
}

open class AffiliateShareEntityClass: UUIDEntityClass(
    AffiliateShareTable
) {
    fun findByAffiliate(publicKey: PublicKey) = find { AffiliateShareTable.affiliatePublicKey eq publicKey.toHex() }

    fun findByAffiliateAndPublicKey(affiliatePublicKey: PublicKey, publicKey: PublicKey) = find {
        (AffiliateShareTable.affiliatePublicKey eq affiliatePublicKey.toHex()) and (AffiliateShareTable.publicKey eq publicKey.toHex())
    }.firstOrNull()

    fun insert(affiliatePublicKey: PublicKey, publicKey: PublicKey) = new {
        this.affiliatePublicKey = affiliatePublicKey.toHex()
        this.publicKey = publicKey.toHex()
    }

    fun findByAffiliates(publicKeys: Collection) = find {
        AffiliateShareTable.affiliatePublicKey inList publicKeys.map { it.toHex() }
    }
}

class AffiliateShareRecord(uuid: EntityID): UUIDEntity(uuid) {
    companion object: AffiliateShareEntityClass()

    var uuid by AffiliateShareTable.id
    var affiliatePublicKey by AffiliateShareTable.affiliatePublicKey
    var publicKey by AffiliateShareTable.publicKey
    var created by AffiliateShareTable.created

    fun typedAffiliatePublicKey(): PublicKey = affiliatePublicKey.toJavaPublicKey()
    fun typedPublicKey(): PublicKey = publicKey.toJavaPublicKey()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy