[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] 05/11: Reducing code.
From: |
gnunet |
Subject: |
[libeufin] 05/11: Reducing code. |
Date: |
Thu, 30 Apr 2020 21:46:48 +0200 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository libeufin.
commit 9eb0e75ab5d57b61e0dd268b7f1e171134f770d5
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Apr 30 16:32:57 2020 +0200
Reducing code.
Use only one table to map <nexus users, ebics subscribers, bank accounts>
---
nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 26 +++++++---------------
.../src/main/kotlin/tech/libeufin/nexus/Helpers.kt | 20 ++++++++---------
nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 19 ++++++++--------
nexus/src/main/kotlin/tech/libeufin/nexus/taler.kt | 3 ++-
4 files changed, 30 insertions(+), 38 deletions(-)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
index 858ac50..ba22010 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
@@ -217,26 +217,16 @@ class NexusUserEntity(id: EntityID<String>) :
Entity<String>(id) {
var password by NexusUsersTable.password
}
-object UserToBankAccountsTable : IntIdTable() {
- val nexusUser = reference("nexusUser", NexusUsersTable)
- val bankAccount = reference("bankAccount", BankAccountsTable)
-}
-
-class UserToBankAccountEntity(id: EntityID<Int>): IntEntity(id) {
- companion object :
IntEntityClass<UserToBankAccountEntity>(UserToBankAccountsTable)
- var nexusUser by NexusUserEntity referencedOn
UserToBankAccountsTable.nexusUser
- var bankAccount by BankAccountEntity referencedOn
EbicsToBankAccountsTable.bankAccount
-}
-
-object EbicsToBankAccountsTable : IntIdTable() {
+object BankAccountMapsTable : IntIdTable() {
val ebicsSubscriber = reference("ebicsSubscriber", EbicsSubscribersTable)
val bankAccount = reference("bankAccount", BankAccountsTable)
+ val nexusUser = reference("nexusUser", NexusUsersTable)
}
-
-class EbicsToBankAccountEntity(id: EntityID<Int>): IntEntity(id) {
- companion object :
IntEntityClass<EbicsToBankAccountEntity>(EbicsToBankAccountsTable)
- var ebicsSubscriber by EbicsSubscriberEntity referencedOn
EbicsToBankAccountsTable.ebicsSubscriber
- var bankAccount by BankAccountEntity referencedOn
EbicsToBankAccountsTable.bankAccount
+class BankAccountMapEntity(id: EntityID<Int>): IntEntity(id) {
+ companion object :
IntEntityClass<BankAccountMapEntity>(BankAccountMapsTable)
+ var ebicsSubscriber by EbicsSubscriberEntity referencedOn
BankAccountMapsTable.ebicsSubscriber
+ var bankAccount by BankAccountEntity referencedOn
BankAccountMapsTable.bankAccount
+ var nexusUser by NexusUserEntity referencedOn
BankAccountMapsTable.nexusUser
}
fun dbCreateTables() {
@@ -252,7 +242,7 @@ fun dbCreateTables() {
TalerIncomingPayments,
TalerRequestedPayments,
NexusUsersTable,
- EbicsToBankAccountsTable
+ BankAccountMapsTable
)
}
}
\ No newline at end of file
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
index 78fb2f9..50018b5 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
@@ -70,8 +70,8 @@ fun extractFirstBic(bankCodes:
List<EbicsTypes.AbstractBankCode>?): String? {
*/
fun getSubscriberDetailsFromBankAccount(bankAccountId: String):
EbicsClientSubscriberDetails {
return transaction {
- val map = EbicsToBankAccountEntity.find {
- EbicsToBankAccountsTable.bankAccount eq bankAccountId
+ val map = BankAccountMapEntity.find {
+ BankAccountMapsTable.bankAccount eq bankAccountId
}.firstOrNull() ?: throw NexusError(
HttpStatusCode.NotFound,
"Such bank account '$bankAccountId' has no EBICS subscriber
associated"
@@ -90,8 +90,8 @@ fun getSubscriberDetailsFromBankAccount(bankAccountId:
String): EbicsClientSubsc
fun getBankAccountFromNexusUserId(id: String): BankAccountEntity {
logger.debug("Looking up bank account of user '$id'")
val map = transaction {
- UserToBankAccountEntity.find {
- UserToBankAccountsTable.nexusUser eq id
+ BankAccountMapEntity.find {
+ BankAccountMapsTable.nexusUser eq id
}
}.firstOrNull() ?: throw NexusError(
HttpStatusCode.NotFound,
@@ -420,9 +420,9 @@ fun authenticateRequest(authorization: String?): String {
*/
fun subscriberHasRights(subscriber: EbicsSubscriberEntity, bankAccount:
BankAccountEntity): Boolean {
val row = transaction {
- EbicsToBankAccountEntity.find {
- EbicsToBankAccountsTable.bankAccount eq bankAccount.id and
- (EbicsToBankAccountsTable.ebicsSubscriber eq subscriber.id)
+ BankAccountMapEntity.find {
+ BankAccountMapsTable.bankAccount eq bankAccount.id and
+ (BankAccountMapsTable.ebicsSubscriber eq subscriber.id)
}.firstOrNull()
}
return row != null
@@ -443,9 +443,9 @@ fun getBankAccountFromIban(iban: String): BankAccountEntity
{
fun userHasRights(nexusUser: NexusUserEntity, iban: String): Boolean {
val row = transaction {
val bankAccount = getBankAccountFromIban(iban)
- UserToBankAccountEntity.find {
- UserToBankAccountsTable.bankAccount eq bankAccount.id and
- (UserToBankAccountsTable.nexusUser eq nexusUser.id)
+ BankAccountMapEntity.find {
+ BankAccountMapsTable.bankAccount eq bankAccount.id and
+ (BankAccountMapsTable.nexusUser eq nexusUser.id)
}.firstOrNull()
}
return row != null
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 14bd1ea..9344ed0 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -238,15 +238,15 @@ fun main() {
val id = expectId(call.parameters["id"])
val ret = BankAccountsInfoResponse()
transaction {
- BankAccountEntity.find {
- UserToBankAccountsTable.nexusUser eq id
+ BankAccountMapEntity.find {
+ BankAccountMapsTable.nexusUser eq id
}.forEach {
ret.accounts.add(
BankAccountInfoElement(
- accountHolderName = it.accountHolder,
- iban = it.iban,
- bankCode = it.bankCode,
- accountId = it.id.value
+ accountHolderName =
it.bankAccount.accountHolder,
+ iban = it.bankAccount.iban,
+ bankCode = it.bankAccount.bankCode,
+ accountId = it.bankAccount.id.value
)
)
}
@@ -263,8 +263,8 @@ fun main() {
val ret = RawPayments()
transaction {
val nexusUser = extractNexusUser(nexusUserId)
- val bankAccountsMap = UserToBankAccountEntity.find {
- UserToBankAccountsTable.nexusUser eq nexusUser.id
+ val bankAccountsMap = BankAccountMapEntity.find {
+ BankAccountMapsTable.nexusUser eq nexusUser.id
}
bankAccountsMap.forEach {
Pain001Entity.find {
@@ -760,8 +760,9 @@ fun main() {
iban =
extractFirstIban(it.accountNumberList) ?: throw
NexusError(HttpStatusCode.NotFound, reason = "bank gave no IBAN")
bankCode =
extractFirstBic(it.bankCodeList) ?: throw NexusError(HttpStatusCode.NotFound,
reason = "bank gave no BIC")
}
- EbicsToBankAccountEntity.new {
+ BankAccountMapEntity.new {
ebicsSubscriber =
getEbicsSubscriberFromUser(nexusUser)
+ this.nexusUser = nexusUser
this.bankAccount = bankAccount
}
}
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/taler.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/taler.kt
index 640fce1..a5abf92 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/taler.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/taler.kt
@@ -547,9 +547,10 @@ class Taler(app: Route) {
bankCode = "localhost"
}
val nexusUser = extractNexusUser(exchangeId)
- EbicsToBankAccountEntity.new {
+ BankAccountMapEntity.new {
bankAccount = newBankAccount
ebicsSubscriber =
getEbicsSubscriberFromUser(nexusUser)
+ this.nexusUser = nexusUser
}
}
}
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [libeufin] branch master updated (9cd5454 -> 96b5026), gnunet, 2020/04/30
- [libeufin] 04/11: Integration test., gnunet, 2020/04/30
- [libeufin] 01/11: Sandbox admin., gnunet, 2020/04/30
- [libeufin] 03/11: fix db problem in test, gnunet, 2020/04/30
- [libeufin] 02/11: HTD response content comes from DB now., gnunet, 2020/04/30
- [libeufin] 06/11: Integration test., gnunet, 2020/04/30
- [libeufin] 07/11: Fix CCT handling., gnunet, 2020/04/30
- [libeufin] 09/11: fix time parser, gnunet, 2020/04/30
- [libeufin] 11/11: Fix amount format., gnunet, 2020/04/30
- [libeufin] 05/11: Reducing code.,
gnunet <=
- [libeufin] 10/11: Move more generic helpers to util package., gnunet, 2020/04/30
- [libeufin] 08/11: Integration test., gnunet, 2020/04/30