implemented removal of transactions
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -297,7 +297,15 @@ public class AccountingModule extends BaseHandler implements AccountingService {
|
||||
var key = body(ex);
|
||||
var tags = accountDb.searchTagsContaining(key,accountId);
|
||||
if (tags.size()<10) tags.addAll(tagService().search(key,user));
|
||||
return sendContent(ex,tags);
|
||||
return sendContent(ex,egalize(tags,key));
|
||||
}
|
||||
|
||||
private List<String> egalize(Set<String> tags, String key) {
|
||||
var result = new HashSet<String>();
|
||||
var lower = key.toLowerCase();
|
||||
var len = key.length();
|
||||
for (var tag : tags) result.add(tag.toLowerCase().startsWith(lower) ? key + tag.substring(len) : tag);
|
||||
return result.stream().sorted(String.CASE_INSENSITIVE_ORDER).toList();
|
||||
}
|
||||
|
||||
private boolean postToAccount(long accountId, Path path, UmbrellaUser user, HttpExchange ex) throws IOException {
|
||||
|
||||
@@ -223,7 +223,7 @@ public class SqliteDb extends BaseDb implements AccountDb {
|
||||
var timestamp = transaction.date().toEpochSecond(ZoneOffset.UTC);
|
||||
if (transaction.id() == 0) {
|
||||
try {
|
||||
var rs = Query.insertInto(TABLE_TRANSACTIONS, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
|
||||
var rs = insertInto(TABLE_TRANSACTIONS, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
|
||||
.values(transaction.accountId(), timestamp, transaction.source().value(), transaction.destination().value(), transaction.amount(), transaction.purpose())
|
||||
.execute(db).getGeneratedKeys();
|
||||
if (rs.next()) transaction = transaction.withId(rs.getLong(1));
|
||||
@@ -233,9 +233,13 @@ public class SqliteDb extends BaseDb implements AccountDb {
|
||||
}
|
||||
} else if (transaction.isDirty()) {
|
||||
try {
|
||||
Query.replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
|
||||
.values(transaction.id(), transaction.accountId(), timestamp, transaction.source().value(), transaction.destination().value(), transaction.amount(), transaction.purpose())
|
||||
.execute(db).close();
|
||||
if (transaction.amount() == 0) {
|
||||
delete().from(TABLE_TRANSACTIONS).where(Field.ID, equal(transaction.id())).where(ACCOUNT, equal(transaction.accountId())).execute(db);
|
||||
} else {
|
||||
replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
|
||||
.values(transaction.id(), transaction.accountId(), timestamp, transaction.source().value(), transaction.destination().value(), transaction.amount(), transaction.purpose())
|
||||
.execute(db).close();
|
||||
}
|
||||
return transaction.clearDirtyState();
|
||||
} catch (SQLException e) {
|
||||
throw failedToStoreObject(transaction);
|
||||
|
||||
Reference in New Issue
Block a user