-
Notifications
You must be signed in to change notification settings - Fork 2
/
Operation.kt
13 lines (10 loc) · 922 Bytes
/
Operation.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
package commands
sealed class Operation(requestId: String, accountId: String) : Command(requestId, accountId) {
data class Read(override val requestId: String, override val accountId: String) : Operation(requestId, accountId)
data class Credit(val amount: Long, override val requestId: String, override val accountId: String) : Operation(requestId, accountId)
data class Debit(val amount: Long, override val requestId: String, override val accountId: String) : Operation(requestId, accountId)
data class Transfer(val amount: Long, val receiverId: String, override val requestId: String, override val accountId: String) : Operation(requestId, accountId)
}
fun Operation.Transfer.debit() = Operation.Debit(amount, requestId, accountId)
fun Operation.Transfer.credit() = Operation.Credit(amount, requestId, receiverId)
fun Operation.Transfer.compensation() = Operation.Debit(amount, requestId, receiverId)