transactionItem relationship

This commit is contained in:
2024-11-13 16:15:18 +01:00
parent 73d382aa1f
commit db744d634b
23 changed files with 189 additions and 287 deletions
+13 -9
View File
@@ -1,19 +1,16 @@
{ {
"annotations": { "annotations": {
"changelogDate": "20241113135446" "changelogDate": "20241113151058"
}, },
"fields": [ "fields": [
{ {
"fieldName": "amount", "fieldName": "amount",
"fieldType": "BigDecimal" "fieldType": "BigDecimal"
}, },
{
"fieldName": "date",
"fieldType": "LocalDate"
},
{ {
"fieldName": "comment", "fieldName": "comment",
"fieldType": "String" "fieldType": "String",
"fieldValidateRules": []
} }
], ],
"name": "TransactionItem", "name": "TransactionItem",
@@ -21,12 +18,12 @@
"readOnly": false, "readOnly": false,
"relationships": [ "relationships": [
{ {
"otherEntityField": "name", "otherEntityField": "id",
"otherEntityName": "userAccount", "otherEntityName": "userAccount",
"otherEntityRelationshipName": "transactionItem", "otherEntityRelationshipName": "transactionItem",
"relationshipName": "userAccount", "relationshipName": "userAccount",
"relationshipSide": "left", "relationshipSide": "left",
"relationshipType": "many-to-many" "relationshipType": "many-to-one"
}, },
{ {
"otherEntityField": "id", "otherEntityField": "id",
@@ -34,7 +31,14 @@
"otherEntityRelationshipName": "transactionItem", "otherEntityRelationshipName": "transactionItem",
"relationshipName": "transaction", "relationshipName": "transaction",
"relationshipSide": "left", "relationshipSide": "left",
"relationshipType": "one-to-many" "relationshipType": "many-to-one"
},
{
"otherEntityField": "name",
"otherEntityName": "event",
"relationshipName": "event",
"relationshipSide": "left",
"relationshipType": "many-to-one"
} }
], ],
"searchEngine": "no", "searchEngine": "no",
+1 -1
View File
@@ -18,7 +18,7 @@
"entities": ["Charge", "Event", "Registration", "Transaction", "UserAccount", "TransactionItem"], "entities": ["Charge", "Event", "Registration", "Transaction", "UserAccount", "TransactionItem"],
"feignClient": null, "feignClient": null,
"jhipsterVersion": "8.7.2", "jhipsterVersion": "8.7.2",
"lastLiquibaseTimestamp": 1731506086000, "lastLiquibaseTimestamp": 1731510658000,
"messageBroker": false, "messageBroker": false,
"microfrontend": null, "microfrontend": null,
"microfrontends": [], "microfrontends": [],
@@ -48,7 +48,7 @@ public class Event implements Serializable {
private Set<Registration> registrations = new HashSet<>(); private Set<Registration> registrations = new HashSet<>();
@OneToMany(fetch = FetchType.LAZY, mappedBy = "event") @OneToMany(fetch = FetchType.LAZY, mappedBy = "event")
@JsonIgnoreProperties(value = { "event", "transactionItem" }, allowSetters = true) @JsonIgnoreProperties(value = { "event", "transactionItems" }, allowSetters = true)
private Set<Transaction> transactions = new HashSet<>(); private Set<Transaction> transactions = new HashSet<>();
// jhipster-needle-entity-add-field - JHipster will add fields here // jhipster-needle-entity-add-field - JHipster will add fields here
@@ -5,6 +5,8 @@ import com.sasiedzi.event.domain.enumeration.TransactionType;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;
/** /**
* A Transaction. * A Transaction.
@@ -36,9 +38,9 @@ public class Transaction implements Serializable {
@JsonIgnoreProperties(value = { "registrations", "transactions" }, allowSetters = true) @JsonIgnoreProperties(value = { "registrations", "transactions" }, allowSetters = true)
private Event event; private Event event;
@ManyToOne(fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY, mappedBy = "transaction")
@JsonIgnoreProperties(value = { "userAccounts", "transactions" }, allowSetters = true) @JsonIgnoreProperties(value = { "userAccount", "transaction", "event" }, allowSetters = true)
private TransactionItem transactionItem; private Set<TransactionItem> transactionItems = new HashSet<>();
// jhipster-needle-entity-add-field - JHipster will add fields here // jhipster-needle-entity-add-field - JHipster will add fields here
@@ -107,16 +109,34 @@ public class Transaction implements Serializable {
return this; return this;
} }
public TransactionItem getTransactionItem() { public Set<TransactionItem> getTransactionItems() {
return this.transactionItem; return this.transactionItems;
} }
public void setTransactionItem(TransactionItem transactionItem) { public void setTransactionItems(Set<TransactionItem> transactionItems) {
this.transactionItem = transactionItem; if (this.transactionItems != null) {
this.transactionItems.forEach(i -> i.setTransaction(null));
}
if (transactionItems != null) {
transactionItems.forEach(i -> i.setTransaction(this));
}
this.transactionItems = transactionItems;
} }
public Transaction transactionItem(TransactionItem transactionItem) { public Transaction transactionItems(Set<TransactionItem> transactionItems) {
this.setTransactionItem(transactionItem); this.setTransactionItems(transactionItems);
return this;
}
public Transaction addTransactionItem(TransactionItem transactionItem) {
this.transactionItems.add(transactionItem);
transactionItem.setTransaction(this);
return this;
}
public Transaction removeTransactionItem(TransactionItem transactionItem) {
this.transactionItems.remove(transactionItem);
transactionItem.setTransaction(null);
return this; return this;
} }
@@ -4,9 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;
/** /**
* A TransactionItem. * A TransactionItem.
@@ -27,24 +24,20 @@ public class TransactionItem implements Serializable {
@Column(name = "amount", precision = 21, scale = 2) @Column(name = "amount", precision = 21, scale = 2)
private BigDecimal amount; private BigDecimal amount;
@Column(name = "date")
private LocalDate date;
@Column(name = "comment") @Column(name = "comment")
private String comment; private String comment;
@ManyToMany(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinTable(
name = "rel_transaction_item__user_account",
joinColumns = @JoinColumn(name = "transaction_item_id"),
inverseJoinColumns = @JoinColumn(name = "user_account_id")
)
@JsonIgnoreProperties(value = { "users", "transactionItems" }, allowSetters = true) @JsonIgnoreProperties(value = { "users", "transactionItems" }, allowSetters = true)
private Set<UserAccount> userAccounts = new HashSet<>(); private UserAccount userAccount;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "transactionItem") @ManyToOne(fetch = FetchType.LAZY)
@JsonIgnoreProperties(value = { "event", "transactionItem" }, allowSetters = true) @JsonIgnoreProperties(value = { "event", "transactionItems" }, allowSetters = true)
private Set<Transaction> transactions = new HashSet<>(); private Transaction transaction;
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnoreProperties(value = { "registrations", "transactions" }, allowSetters = true)
private Event event;
// jhipster-needle-entity-add-field - JHipster will add fields here // jhipster-needle-entity-add-field - JHipster will add fields here
@@ -74,19 +67,6 @@ public class TransactionItem implements Serializable {
this.amount = amount; this.amount = amount;
} }
public LocalDate getDate() {
return this.date;
}
public TransactionItem date(LocalDate date) {
this.setDate(date);
return this;
}
public void setDate(LocalDate date) {
this.date = date;
}
public String getComment() { public String getComment() {
return this.comment; return this.comment;
} }
@@ -100,57 +80,42 @@ public class TransactionItem implements Serializable {
this.comment = comment; this.comment = comment;
} }
public Set<UserAccount> getUserAccounts() { public UserAccount getUserAccount() {
return this.userAccounts; return this.userAccount;
} }
public void setUserAccounts(Set<UserAccount> userAccounts) { public void setUserAccount(UserAccount userAccount) {
this.userAccounts = userAccounts; this.userAccount = userAccount;
} }
public TransactionItem userAccounts(Set<UserAccount> userAccounts) { public TransactionItem userAccount(UserAccount userAccount) {
this.setUserAccounts(userAccounts); this.setUserAccount(userAccount);
return this; return this;
} }
public TransactionItem addUserAccount(UserAccount userAccount) { public Transaction getTransaction() {
this.userAccounts.add(userAccount); return this.transaction;
}
public void setTransaction(Transaction transaction) {
this.transaction = transaction;
}
public TransactionItem transaction(Transaction transaction) {
this.setTransaction(transaction);
return this; return this;
} }
public TransactionItem removeUserAccount(UserAccount userAccount) { public Event getEvent() {
this.userAccounts.remove(userAccount); return this.event;
return this;
} }
public Set<Transaction> getTransactions() { public void setEvent(Event event) {
return this.transactions; this.event = event;
} }
public void setTransactions(Set<Transaction> transactions) { public TransactionItem event(Event event) {
if (this.transactions != null) { this.setEvent(event);
this.transactions.forEach(i -> i.setTransactionItem(null));
}
if (transactions != null) {
transactions.forEach(i -> i.setTransactionItem(this));
}
this.transactions = transactions;
}
public TransactionItem transactions(Set<Transaction> transactions) {
this.setTransactions(transactions);
return this;
}
public TransactionItem addTransaction(Transaction transaction) {
this.transactions.add(transaction);
transaction.setTransactionItem(this);
return this;
}
public TransactionItem removeTransaction(Transaction transaction) {
this.transactions.remove(transaction);
transaction.setTransactionItem(null);
return this; return this;
} }
@@ -179,7 +144,6 @@ public class TransactionItem implements Serializable {
return "TransactionItem{" + return "TransactionItem{" +
"id=" + getId() + "id=" + getId() +
", amount=" + getAmount() + ", amount=" + getAmount() +
", date='" + getDate() + "'" +
", comment='" + getComment() + "'" + ", comment='" + getComment() + "'" +
"}"; "}";
} }
@@ -33,8 +33,8 @@ public class UserAccount implements Serializable {
) )
private Set<User> users = new HashSet<>(); private Set<User> users = new HashSet<>();
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "userAccounts") @OneToMany(fetch = FetchType.LAZY, mappedBy = "userAccount")
@JsonIgnoreProperties(value = { "userAccounts", "transactions" }, allowSetters = true) @JsonIgnoreProperties(value = { "userAccount", "transaction", "event" }, allowSetters = true)
private Set<TransactionItem> transactionItems = new HashSet<>(); private Set<TransactionItem> transactionItems = new HashSet<>();
// jhipster-needle-entity-add-field - JHipster will add fields here // jhipster-needle-entity-add-field - JHipster will add fields here
@@ -94,10 +94,10 @@ public class UserAccount implements Serializable {
public void setTransactionItems(Set<TransactionItem> transactionItems) { public void setTransactionItems(Set<TransactionItem> transactionItems) {
if (this.transactionItems != null) { if (this.transactionItems != null) {
this.transactionItems.forEach(i -> i.removeUserAccount(this)); this.transactionItems.forEach(i -> i.setUserAccount(null));
} }
if (transactionItems != null) { if (transactionItems != null) {
transactionItems.forEach(i -> i.addUserAccount(this)); transactionItems.forEach(i -> i.setUserAccount(this));
} }
this.transactionItems = transactionItems; this.transactionItems = transactionItems;
} }
@@ -109,13 +109,13 @@ public class UserAccount implements Serializable {
public UserAccount addTransactionItem(TransactionItem transactionItem) { public UserAccount addTransactionItem(TransactionItem transactionItem) {
this.transactionItems.add(transactionItem); this.transactionItems.add(transactionItem);
transactionItem.getUserAccounts().add(this); transactionItem.setUserAccount(this);
return this; return this;
} }
public UserAccount removeTransactionItem(TransactionItem transactionItem) { public UserAccount removeTransactionItem(TransactionItem transactionItem) {
this.transactionItems.remove(transactionItem); this.transactionItems.remove(transactionItem);
transactionItem.getUserAccounts().remove(this); transactionItem.setUserAccount(null);
return this; return this;
} }
@@ -6,25 +6,37 @@ import java.util.Optional;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.*; import org.springframework.data.jpa.repository.*;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
* Spring Data JPA repository for the TransactionItem entity. * Spring Data JPA repository for the TransactionItem entity.
*
* When extending this class, extend TransactionItemRepositoryWithBagRelationships too.
* For more information refer to https://github.com/jhipster/generator-jhipster/issues/17990.
*/ */
@Repository @Repository
public interface TransactionItemRepository extends TransactionItemRepositoryWithBagRelationships, JpaRepository<TransactionItem, Long> { public interface TransactionItemRepository extends JpaRepository<TransactionItem, Long> {
default Optional<TransactionItem> findOneWithEagerRelationships(Long id) { default Optional<TransactionItem> findOneWithEagerRelationships(Long id) {
return this.fetchBagRelationships(this.findById(id)); return this.findOneWithToOneRelationships(id);
} }
default List<TransactionItem> findAllWithEagerRelationships() { default List<TransactionItem> findAllWithEagerRelationships() {
return this.fetchBagRelationships(this.findAll()); return this.findAllWithToOneRelationships();
} }
default Page<TransactionItem> findAllWithEagerRelationships(Pageable pageable) { default Page<TransactionItem> findAllWithEagerRelationships(Pageable pageable) {
return this.fetchBagRelationships(this.findAll(pageable)); return this.findAllWithToOneRelationships(pageable);
} }
@Query(
value = "select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event",
countQuery = "select count(transactionItem) from TransactionItem transactionItem"
)
Page<TransactionItem> findAllWithToOneRelationships(Pageable pageable);
@Query("select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event")
List<TransactionItem> findAllWithToOneRelationships();
@Query(
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event where transactionItem.id =:id"
)
Optional<TransactionItem> findOneWithToOneRelationships(@Param("id") Long id);
} }
@@ -1,14 +0,0 @@
package com.sasiedzi.event.repository;
import com.sasiedzi.event.domain.TransactionItem;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
public interface TransactionItemRepositoryWithBagRelationships {
Optional<TransactionItem> fetchBagRelationships(Optional<TransactionItem> transactionItem);
List<TransactionItem> fetchBagRelationships(List<TransactionItem> transactionItems);
Page<TransactionItem> fetchBagRelationships(Page<TransactionItem> transactionItems);
}
@@ -1,67 +0,0 @@
package com.sasiedzi.event.repository;
import com.sasiedzi.event.domain.TransactionItem;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.stream.IntStream;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
/**
* Utility repository to load bag relationships based on https://vladmihalcea.com/hibernate-multiplebagfetchexception/
*/
public class TransactionItemRepositoryWithBagRelationshipsImpl implements TransactionItemRepositoryWithBagRelationships {
private static final String ID_PARAMETER = "id";
private static final String TRANSACTIONITEMS_PARAMETER = "transactionItems";
@PersistenceContext
private EntityManager entityManager;
@Override
public Optional<TransactionItem> fetchBagRelationships(Optional<TransactionItem> transactionItem) {
return transactionItem.map(this::fetchUserAccounts);
}
@Override
public Page<TransactionItem> fetchBagRelationships(Page<TransactionItem> transactionItems) {
return new PageImpl<>(
fetchBagRelationships(transactionItems.getContent()),
transactionItems.getPageable(),
transactionItems.getTotalElements()
);
}
@Override
public List<TransactionItem> fetchBagRelationships(List<TransactionItem> transactionItems) {
return Optional.of(transactionItems).map(this::fetchUserAccounts).orElse(Collections.emptyList());
}
TransactionItem fetchUserAccounts(TransactionItem result) {
return entityManager
.createQuery(
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.userAccounts where transactionItem.id = :id",
TransactionItem.class
)
.setParameter(ID_PARAMETER, result.getId())
.getSingleResult();
}
List<TransactionItem> fetchUserAccounts(List<TransactionItem> transactionItems) {
HashMap<Object, Integer> order = new HashMap<>();
IntStream.range(0, transactionItems.size()).forEach(index -> order.put(transactionItems.get(index).getId(), index));
List<TransactionItem> result = entityManager
.createQuery(
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.userAccounts where transactionItem in :transactionItems",
TransactionItem.class
)
.setParameter(TRANSACTIONITEMS_PARAMETER, transactionItems)
.getResultList();
Collections.sort(result, (o1, o2) -> Integer.compare(order.get(o1.getId()), order.get(o2.getId())));
return result;
}
}
@@ -124,9 +124,6 @@ public class TransactionItemResource {
if (transactionItem.getAmount() != null) { if (transactionItem.getAmount() != null) {
existingTransactionItem.setAmount(transactionItem.getAmount()); existingTransactionItem.setAmount(transactionItem.getAmount());
} }
if (transactionItem.getDate() != null) {
existingTransactionItem.setDate(transactionItem.getDate());
}
if (transactionItem.getComment() != null) { if (transactionItem.getComment() != null) {
existingTransactionItem.setComment(transactionItem.getComment()); existingTransactionItem.setComment(transactionItem.getComment());
} }
@@ -26,9 +26,6 @@
<column name="event_id" type="bigint"> <column name="event_id" type="bigint">
<constraints nullable="true" /> <constraints nullable="true" />
</column> </column>
<column name="transaction_item_id" type="bigint">
<constraints nullable="true" />
</column>
<!-- jhipster-needle-liquibase-add-column - JHipster will add columns here --> <!-- jhipster-needle-liquibase-add-column - JHipster will add columns here -->
</createTable> </createTable>
</changeSet> </changeSet>
@@ -16,12 +16,5 @@
referencedColumnNames="id" referencedColumnNames="id"
referencedTableName="event" referencedTableName="event"
/> />
<addForeignKeyConstraint baseColumnNames="transaction_item_id"
baseTableName="transaction"
constraintName="fk_transaction__transaction_item_id"
referencedColumnNames="id"
referencedTableName="transaction_item"
/>
</changeSet> </changeSet>
</databaseChangeLog> </databaseChangeLog>
@@ -9,7 +9,7 @@
<!-- <!--
Added the entity TransactionItem. Added the entity TransactionItem.
--> -->
<changeSet id="20241113135446-1" author="jhipster"> <changeSet id="20241113151058-1" author="jhipster">
<createTable tableName="transaction_item"> <createTable tableName="transaction_item">
<column name="id" type="bigint"> <column name="id" type="bigint">
<constraints primaryKey="true" nullable="false"/> <constraints primaryKey="true" nullable="false"/>
@@ -17,30 +17,22 @@
<column name="amount" type="decimal(21,2)"> <column name="amount" type="decimal(21,2)">
<constraints nullable="true" /> <constraints nullable="true" />
</column> </column>
<column name="date" type="date"> <column name="comment" type="varchar(255)">
<constraints nullable="true" /> <constraints nullable="true" />
</column> </column>
<column name="comment" type="varchar(255)"> <column name="user_account_id" type="bigint">
<constraints nullable="true" />
</column>
<column name="transaction_id" type="bigint">
<constraints nullable="true" />
</column>
<column name="event_id" type="bigint">
<constraints nullable="true" /> <constraints nullable="true" />
</column> </column>
<!-- jhipster-needle-liquibase-add-column - JHipster will add columns here --> <!-- jhipster-needle-liquibase-add-column - JHipster will add columns here -->
</createTable> </createTable>
</changeSet> </changeSet>
<changeSet id="20241113135446-1-relations" author="jhipster">
<createTable tableName="rel_transaction_item__user_account">
<column name="user_account_id" type="bigint">
<constraints nullable="false"/>
</column>
<column name="transaction_item_id" type="bigint">
<constraints nullable="false"/>
</column>
</createTable>
<addPrimaryKey columnNames="transaction_item_id, user_account_id" tableName="rel_transaction_item__user_account"/>
</changeSet>
<!-- jhipster-needle-liquibase-add-changeset - JHipster will add changesets here --> <!-- jhipster-needle-liquibase-add-changeset - JHipster will add changesets here -->
<!-- <!--
@@ -51,7 +43,7 @@
This can be customized by adding or removing 'faker' in the 'spring.liquibase.contexts' This can be customized by adding or removing 'faker' in the 'spring.liquibase.contexts'
Spring Boot configuration key. Spring Boot configuration key.
--> -->
<changeSet id="20241113135446-1-data" author="jhipster" context="faker"> <changeSet id="20241113151058-1-data" author="jhipster" context="faker">
<loadData <loadData
file="config/liquibase/fake-data/transaction_item.csv" file="config/liquibase/fake-data/transaction_item.csv"
separator=";" separator=";"
@@ -59,7 +51,6 @@
usePreparedStatements="true"> usePreparedStatements="true">
<column name="id" type="numeric"/> <column name="id" type="numeric"/>
<column name="amount" type="numeric"/> <column name="amount" type="numeric"/>
<column name="date" type="date"/>
<column name="comment" type="string"/> <column name="comment" type="string"/>
<!-- jhipster-needle-liquibase-add-loadcolumn - JHipster (and/or extensions) can add load columns here --> <!-- jhipster-needle-liquibase-add-loadcolumn - JHipster (and/or extensions) can add load columns here -->
</loadData> </loadData>
@@ -8,20 +8,27 @@
<!-- <!--
Added the constraints for entity TransactionItem. Added the constraints for entity TransactionItem.
--> -->
<changeSet id="20241113135446-2" author="jhipster"> <changeSet id="20241113151058-2" author="jhipster">
<addForeignKeyConstraint baseColumnNames="transaction_item_id"
baseTableName="rel_transaction_item__user_account"
constraintName="fk_rel_transaction_item__user_account__transaction_item_id"
referencedColumnNames="id"
referencedTableName="transaction_item"
/>
<addForeignKeyConstraint baseColumnNames="user_account_id" <addForeignKeyConstraint baseColumnNames="user_account_id"
baseTableName="rel_transaction_item__user_account" baseTableName="transaction_item"
constraintName="fk_rel_transaction_item__user_account__user_account_id" constraintName="fk_transaction_item__user_account_id"
referencedColumnNames="id" referencedColumnNames="id"
referencedTableName="user_account" referencedTableName="user_account"
/> />
<addForeignKeyConstraint baseColumnNames="transaction_id"
baseTableName="transaction_item"
constraintName="fk_transaction_item__transaction_id"
referencedColumnNames="id"
referencedTableName="transaction"
/>
<addForeignKeyConstraint baseColumnNames="event_id"
baseTableName="transaction_item"
constraintName="fk_transaction_item__event_id"
referencedColumnNames="id"
referencedTableName="event"
/>
</changeSet> </changeSet>
</databaseChangeLog> </databaseChangeLog>
@@ -1,11 +1,11 @@
id;amount;date;comment id;amount;comment
1;11521.38;2024-11-13;until knowingly antagonize 1;11521.38;per cautiously out
2;25335.92;2024-11-13;paintwork 2;974.75;since below bah
3;18782.46;2024-11-13;whoever 3;25825.62;outlaw
4;31380.57;2024-11-13;saturate snow vestment 4;862.08;seriously
5;16957.5;2024-11-13;desecrate 5;618.2;faithfully past versus
6;21000.66;2024-11-13;card 6;3528.31;because cap ah
7;21849.26;2024-11-13;as hourly ha 7;14487.7;beneath festival grandiose
8;11729.78;2024-11-13;on fledgling 8;24535.73;roughly wonderfully
9;17672.41;2024-11-13;sarcastic or 9;22363.52;extra-large
10;22248.04;2024-11-12;where gadzooks out 10;5071.75;tectonics fortunate
1 id amount date comment
2 1 11521.38 2024-11-13 until knowingly antagonize per cautiously out
3 2 25335.92 974.75 2024-11-13 paintwork since below bah
4 3 18782.46 25825.62 2024-11-13 whoever outlaw
5 4 31380.57 862.08 2024-11-13 saturate snow vestment seriously
6 5 16957.5 618.2 2024-11-13 desecrate faithfully past versus
7 6 21000.66 3528.31 2024-11-13 card because cap ah
8 7 21849.26 14487.7 2024-11-13 as hourly ha beneath festival grandiose
9 8 11729.78 24535.73 2024-11-13 on fledgling roughly wonderfully
10 9 17672.41 22363.52 2024-11-13 sarcastic or extra-large
11 10 22248.04 5071.75 2024-11-12 where gadzooks out tectonics fortunate
@@ -16,13 +16,13 @@
<include file="config/liquibase/changelog/20241105091003_added_entity_Registration.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241105091003_added_entity_Registration.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113134007_added_entity_Transaction.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113134007_added_entity_Transaction.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113135042_added_entity_UserAccount.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113135042_added_entity_UserAccount.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113135446_added_entity_TransactionItem.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113151058_added_entity_TransactionItem.xml" relativeToChangelogFile="false"/>
<!-- jhipster-needle-liquibase-add-changelog - JHipster will add liquibase changelogs here --> <!-- jhipster-needle-liquibase-add-changelog - JHipster will add liquibase changelogs here -->
<include file="config/liquibase/changelog/20241105091001_added_entity_constraints_Charge.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241105091001_added_entity_constraints_Charge.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241105091003_added_entity_constraints_Registration.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241105091003_added_entity_constraints_Registration.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113134007_added_entity_constraints_Transaction.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113134007_added_entity_constraints_Transaction.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113135042_added_entity_constraints_UserAccount.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113135042_added_entity_constraints_UserAccount.xml" relativeToChangelogFile="false"/>
<include file="config/liquibase/changelog/20241113135446_added_entity_constraints_TransactionItem.xml" relativeToChangelogFile="false"/> <include file="config/liquibase/changelog/20241113151058_added_entity_constraints_TransactionItem.xml" relativeToChangelogFile="false"/>
<!-- jhipster-needle-liquibase-add-constraints-changelog - JHipster will add liquibase constraints changelogs here --> <!-- jhipster-needle-liquibase-add-constraints-changelog - JHipster will add liquibase constraints changelogs here -->
<!-- jhipster-needle-liquibase-add-incremental-changelog - JHipster will add incremental liquibase changelogs here --> <!-- jhipster-needle-liquibase-add-incremental-changelog - JHipster will add incremental liquibase changelogs here -->
</databaseChangeLog> </databaseChangeLog>
@@ -61,7 +61,6 @@ public class TransactionAsserts {
public static void assertTransactionUpdatableRelationshipsEquals(Transaction expected, Transaction actual) { public static void assertTransactionUpdatableRelationshipsEquals(Transaction expected, Transaction actual) {
assertThat(expected) assertThat(expected)
.as("Verify Transaction relationships") .as("Verify Transaction relationships")
.satisfies(e -> assertThat(e.getEvent()).as("check event").isEqualTo(actual.getEvent())) .satisfies(e -> assertThat(e.getEvent()).as("check event").isEqualTo(actual.getEvent()));
.satisfies(e -> assertThat(e.getTransactionItem()).as("check transactionItem").isEqualTo(actual.getTransactionItem()));
} }
} }
@@ -49,7 +49,6 @@ public class TransactionItemAsserts {
assertThat(expected) assertThat(expected)
.as("Verify TransactionItem relevant properties") .as("Verify TransactionItem relevant properties")
.satisfies(e -> assertThat(e.getAmount()).as("check amount").usingComparator(bigDecimalCompareTo).isEqualTo(actual.getAmount())) .satisfies(e -> assertThat(e.getAmount()).as("check amount").usingComparator(bigDecimalCompareTo).isEqualTo(actual.getAmount()))
.satisfies(e -> assertThat(e.getDate()).as("check date").isEqualTo(actual.getDate()))
.satisfies(e -> assertThat(e.getComment()).as("check comment").isEqualTo(actual.getComment())); .satisfies(e -> assertThat(e.getComment()).as("check comment").isEqualTo(actual.getComment()));
} }
@@ -62,6 +61,8 @@ public class TransactionItemAsserts {
public static void assertTransactionItemUpdatableRelationshipsEquals(TransactionItem expected, TransactionItem actual) { public static void assertTransactionItemUpdatableRelationshipsEquals(TransactionItem expected, TransactionItem actual) {
assertThat(expected) assertThat(expected)
.as("Verify TransactionItem relationships") .as("Verify TransactionItem relationships")
.satisfies(e -> assertThat(e.getUserAccounts()).as("check userAccounts").isEqualTo(actual.getUserAccounts())); .satisfies(e -> assertThat(e.getUserAccount()).as("check userAccount").isEqualTo(actual.getUserAccount()))
.satisfies(e -> assertThat(e.getTransaction()).as("check transaction").isEqualTo(actual.getTransaction()))
.satisfies(e -> assertThat(e.getEvent()).as("check event").isEqualTo(actual.getEvent()));
} }
} }
@@ -1,13 +1,12 @@
package com.sasiedzi.event.domain; package com.sasiedzi.event.domain;
import static com.sasiedzi.event.domain.EventTestSamples.*;
import static com.sasiedzi.event.domain.TransactionItemTestSamples.*; import static com.sasiedzi.event.domain.TransactionItemTestSamples.*;
import static com.sasiedzi.event.domain.TransactionTestSamples.*; import static com.sasiedzi.event.domain.TransactionTestSamples.*;
import static com.sasiedzi.event.domain.UserAccountTestSamples.*; import static com.sasiedzi.event.domain.UserAccountTestSamples.*;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import com.sasiedzi.event.web.rest.TestUtil; import com.sasiedzi.event.web.rest.TestUtil;
import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class TransactionItemTest { class TransactionItemTest {
@@ -31,17 +30,11 @@ class TransactionItemTest {
TransactionItem transactionItem = getTransactionItemRandomSampleGenerator(); TransactionItem transactionItem = getTransactionItemRandomSampleGenerator();
UserAccount userAccountBack = getUserAccountRandomSampleGenerator(); UserAccount userAccountBack = getUserAccountRandomSampleGenerator();
transactionItem.addUserAccount(userAccountBack); transactionItem.setUserAccount(userAccountBack);
assertThat(transactionItem.getUserAccounts()).containsOnly(userAccountBack); assertThat(transactionItem.getUserAccount()).isEqualTo(userAccountBack);
transactionItem.removeUserAccount(userAccountBack); transactionItem.userAccount(null);
assertThat(transactionItem.getUserAccounts()).doesNotContain(userAccountBack); assertThat(transactionItem.getUserAccount()).isNull();
transactionItem.userAccounts(new HashSet<>(Set.of(userAccountBack)));
assertThat(transactionItem.getUserAccounts()).containsOnly(userAccountBack);
transactionItem.setUserAccounts(new HashSet<>());
assertThat(transactionItem.getUserAccounts()).doesNotContain(userAccountBack);
} }
@Test @Test
@@ -49,20 +42,22 @@ class TransactionItemTest {
TransactionItem transactionItem = getTransactionItemRandomSampleGenerator(); TransactionItem transactionItem = getTransactionItemRandomSampleGenerator();
Transaction transactionBack = getTransactionRandomSampleGenerator(); Transaction transactionBack = getTransactionRandomSampleGenerator();
transactionItem.addTransaction(transactionBack); transactionItem.setTransaction(transactionBack);
assertThat(transactionItem.getTransactions()).containsOnly(transactionBack); assertThat(transactionItem.getTransaction()).isEqualTo(transactionBack);
assertThat(transactionBack.getTransactionItem()).isEqualTo(transactionItem);
transactionItem.removeTransaction(transactionBack); transactionItem.transaction(null);
assertThat(transactionItem.getTransactions()).doesNotContain(transactionBack); assertThat(transactionItem.getTransaction()).isNull();
assertThat(transactionBack.getTransactionItem()).isNull(); }
transactionItem.transactions(new HashSet<>(Set.of(transactionBack))); @Test
assertThat(transactionItem.getTransactions()).containsOnly(transactionBack); void eventTest() {
assertThat(transactionBack.getTransactionItem()).isEqualTo(transactionItem); TransactionItem transactionItem = getTransactionItemRandomSampleGenerator();
Event eventBack = getEventRandomSampleGenerator();
transactionItem.setTransactions(new HashSet<>()); transactionItem.setEvent(eventBack);
assertThat(transactionItem.getTransactions()).doesNotContain(transactionBack); assertThat(transactionItem.getEvent()).isEqualTo(eventBack);
assertThat(transactionBack.getTransactionItem()).isNull();
transactionItem.event(null);
assertThat(transactionItem.getEvent()).isNull();
} }
} }
@@ -6,6 +6,8 @@ import static com.sasiedzi.event.domain.TransactionTestSamples.*;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import com.sasiedzi.event.web.rest.TestUtil; import com.sasiedzi.event.web.rest.TestUtil;
import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class TransactionTest { class TransactionTest {
@@ -41,10 +43,20 @@ class TransactionTest {
Transaction transaction = getTransactionRandomSampleGenerator(); Transaction transaction = getTransactionRandomSampleGenerator();
TransactionItem transactionItemBack = getTransactionItemRandomSampleGenerator(); TransactionItem transactionItemBack = getTransactionItemRandomSampleGenerator();
transaction.setTransactionItem(transactionItemBack); transaction.addTransactionItem(transactionItemBack);
assertThat(transaction.getTransactionItem()).isEqualTo(transactionItemBack); assertThat(transaction.getTransactionItems()).containsOnly(transactionItemBack);
assertThat(transactionItemBack.getTransaction()).isEqualTo(transaction);
transaction.transactionItem(null); transaction.removeTransactionItem(transactionItemBack);
assertThat(transaction.getTransactionItem()).isNull(); assertThat(transaction.getTransactionItems()).doesNotContain(transactionItemBack);
assertThat(transactionItemBack.getTransaction()).isNull();
transaction.transactionItems(new HashSet<>(Set.of(transactionItemBack)));
assertThat(transaction.getTransactionItems()).containsOnly(transactionItemBack);
assertThat(transactionItemBack.getTransaction()).isEqualTo(transaction);
transaction.setTransactionItems(new HashSet<>());
assertThat(transaction.getTransactionItems()).doesNotContain(transactionItemBack);
assertThat(transactionItemBack.getTransaction()).isNull();
} }
} }
@@ -57,8 +57,6 @@ public class UserAccountAsserts {
* @param actual the actual entity * @param actual the actual entity
*/ */
public static void assertUserAccountUpdatableRelationshipsEquals(UserAccount expected, UserAccount actual) { public static void assertUserAccountUpdatableRelationshipsEquals(UserAccount expected, UserAccount actual) {
assertThat(expected) // empty method
.as("Verify UserAccount relationships")
.satisfies(e -> assertThat(e.getTransactionItems()).as("check transactionItems").isEqualTo(actual.getTransactionItems()));
} }
} }
@@ -32,18 +32,18 @@ class UserAccountTest {
userAccount.addTransactionItem(transactionItemBack); userAccount.addTransactionItem(transactionItemBack);
assertThat(userAccount.getTransactionItems()).containsOnly(transactionItemBack); assertThat(userAccount.getTransactionItems()).containsOnly(transactionItemBack);
assertThat(transactionItemBack.getUserAccounts()).containsOnly(userAccount); assertThat(transactionItemBack.getUserAccount()).isEqualTo(userAccount);
userAccount.removeTransactionItem(transactionItemBack); userAccount.removeTransactionItem(transactionItemBack);
assertThat(userAccount.getTransactionItems()).doesNotContain(transactionItemBack); assertThat(userAccount.getTransactionItems()).doesNotContain(transactionItemBack);
assertThat(transactionItemBack.getUserAccounts()).doesNotContain(userAccount); assertThat(transactionItemBack.getUserAccount()).isNull();
userAccount.transactionItems(new HashSet<>(Set.of(transactionItemBack))); userAccount.transactionItems(new HashSet<>(Set.of(transactionItemBack)));
assertThat(userAccount.getTransactionItems()).containsOnly(transactionItemBack); assertThat(userAccount.getTransactionItems()).containsOnly(transactionItemBack);
assertThat(transactionItemBack.getUserAccounts()).containsOnly(userAccount); assertThat(transactionItemBack.getUserAccount()).isEqualTo(userAccount);
userAccount.setTransactionItems(new HashSet<>()); userAccount.setTransactionItems(new HashSet<>());
assertThat(userAccount.getTransactionItems()).doesNotContain(transactionItemBack); assertThat(userAccount.getTransactionItems()).doesNotContain(transactionItemBack);
assertThat(transactionItemBack.getUserAccounts()).doesNotContain(userAccount); assertThat(transactionItemBack.getUserAccount()).isNull();
} }
} }
@@ -16,8 +16,6 @@ import com.sasiedzi.event.domain.TransactionItem;
import com.sasiedzi.event.repository.TransactionItemRepository; import com.sasiedzi.event.repository.TransactionItemRepository;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
@@ -48,9 +46,6 @@ class TransactionItemResourceIT {
private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal(1); private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal(1);
private static final BigDecimal UPDATED_AMOUNT = new BigDecimal(2); private static final BigDecimal UPDATED_AMOUNT = new BigDecimal(2);
private static final LocalDate DEFAULT_DATE = LocalDate.ofEpochDay(0L);
private static final LocalDate UPDATED_DATE = LocalDate.now(ZoneId.systemDefault());
private static final String DEFAULT_COMMENT = "AAAAAAAAAA"; private static final String DEFAULT_COMMENT = "AAAAAAAAAA";
private static final String UPDATED_COMMENT = "BBBBBBBBBB"; private static final String UPDATED_COMMENT = "BBBBBBBBBB";
@@ -86,7 +81,7 @@ class TransactionItemResourceIT {
* if they test an entity which requires the current entity. * if they test an entity which requires the current entity.
*/ */
public static TransactionItem createEntity() { public static TransactionItem createEntity() {
return new TransactionItem().amount(DEFAULT_AMOUNT).date(DEFAULT_DATE).comment(DEFAULT_COMMENT); return new TransactionItem().amount(DEFAULT_AMOUNT).comment(DEFAULT_COMMENT);
} }
/** /**
@@ -96,7 +91,7 @@ class TransactionItemResourceIT {
* if they test an entity which requires the current entity. * if they test an entity which requires the current entity.
*/ */
public static TransactionItem createUpdatedEntity() { public static TransactionItem createUpdatedEntity() {
return new TransactionItem().amount(UPDATED_AMOUNT).date(UPDATED_DATE).comment(UPDATED_COMMENT); return new TransactionItem().amount(UPDATED_AMOUNT).comment(UPDATED_COMMENT);
} }
@BeforeEach @BeforeEach
@@ -168,7 +163,6 @@ class TransactionItemResourceIT {
.andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(jsonPath("$.[*].id").value(hasItem(transactionItem.getId().intValue()))) .andExpect(jsonPath("$.[*].id").value(hasItem(transactionItem.getId().intValue())))
.andExpect(jsonPath("$.[*].amount").value(hasItem(sameNumber(DEFAULT_AMOUNT)))) .andExpect(jsonPath("$.[*].amount").value(hasItem(sameNumber(DEFAULT_AMOUNT))))
.andExpect(jsonPath("$.[*].date").value(hasItem(DEFAULT_DATE.toString())))
.andExpect(jsonPath("$.[*].comment").value(hasItem(DEFAULT_COMMENT))); .andExpect(jsonPath("$.[*].comment").value(hasItem(DEFAULT_COMMENT)));
} }
@@ -202,7 +196,6 @@ class TransactionItemResourceIT {
.andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(jsonPath("$.id").value(transactionItem.getId().intValue())) .andExpect(jsonPath("$.id").value(transactionItem.getId().intValue()))
.andExpect(jsonPath("$.amount").value(sameNumber(DEFAULT_AMOUNT))) .andExpect(jsonPath("$.amount").value(sameNumber(DEFAULT_AMOUNT)))
.andExpect(jsonPath("$.date").value(DEFAULT_DATE.toString()))
.andExpect(jsonPath("$.comment").value(DEFAULT_COMMENT)); .andExpect(jsonPath("$.comment").value(DEFAULT_COMMENT));
} }
@@ -225,7 +218,7 @@ class TransactionItemResourceIT {
TransactionItem updatedTransactionItem = transactionItemRepository.findById(transactionItem.getId()).orElseThrow(); TransactionItem updatedTransactionItem = transactionItemRepository.findById(transactionItem.getId()).orElseThrow();
// Disconnect from session so that the updates on updatedTransactionItem are not directly saved in db // Disconnect from session so that the updates on updatedTransactionItem are not directly saved in db
em.detach(updatedTransactionItem); em.detach(updatedTransactionItem);
updatedTransactionItem.amount(UPDATED_AMOUNT).date(UPDATED_DATE).comment(UPDATED_COMMENT); updatedTransactionItem.amount(UPDATED_AMOUNT).comment(UPDATED_COMMENT);
restTransactionItemMockMvc restTransactionItemMockMvc
.perform( .perform(
@@ -310,7 +303,7 @@ class TransactionItemResourceIT {
TransactionItem partialUpdatedTransactionItem = new TransactionItem(); TransactionItem partialUpdatedTransactionItem = new TransactionItem();
partialUpdatedTransactionItem.setId(transactionItem.getId()); partialUpdatedTransactionItem.setId(transactionItem.getId());
partialUpdatedTransactionItem.amount(UPDATED_AMOUNT).date(UPDATED_DATE); partialUpdatedTransactionItem.comment(UPDATED_COMMENT);
restTransactionItemMockMvc restTransactionItemMockMvc
.perform( .perform(
@@ -342,7 +335,7 @@ class TransactionItemResourceIT {
TransactionItem partialUpdatedTransactionItem = new TransactionItem(); TransactionItem partialUpdatedTransactionItem = new TransactionItem();
partialUpdatedTransactionItem.setId(transactionItem.getId()); partialUpdatedTransactionItem.setId(transactionItem.getId());
partialUpdatedTransactionItem.amount(UPDATED_AMOUNT).date(UPDATED_DATE).comment(UPDATED_COMMENT); partialUpdatedTransactionItem.amount(UPDATED_AMOUNT).comment(UPDATED_COMMENT);
restTransactionItemMockMvc restTransactionItemMockMvc
.perform( .perform(