finnow/finnow-api/source/transaction/data.d

48 lines
1.5 KiB
D

module transaction.data;
import handy_http_primitives : Optional;
import std.datetime;
import transaction.model;
import transaction.api : TransactionsListItem;
import util.money;
import util.pagination;
interface TransactionVendorRepository {
Optional!TransactionVendor findById(ulong id);
TransactionVendor[] findAll();
bool existsByName(string name);
TransactionVendor insert(string name, string description);
void deleteById(ulong id);
TransactionVendor updateById(ulong id, string name, string description);
}
interface TransactionCategoryRepository {
Optional!TransactionCategory findById(ulong id);
TransactionCategory[] findAllByParentId(Optional!ulong parentId);
TransactionCategory insert(Optional!ulong parentId, string name, string description, string color);
void deleteById(ulong id);
TransactionCategory updateById(ulong id, string name, string description, string color);
}
interface TransactionTagRepository {
string[] findAllByTransactionId(ulong transactionId);
void updateTags(ulong transactionId, string[] tags);
string[] findAll();
}
interface TransactionRepository {
Page!TransactionsListItem findAll(PageRequest pr);
Optional!Transaction findById(ulong id);
Transaction insert(
SysTime timestamp,
SysTime addedAt,
ulong amount,
Currency currency,
string description,
Optional!ulong vendorId,
Optional!ulong categoryId
);
void deleteById(ulong id);
}