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

44 lines
1.5 KiB
D

module transaction.data;
import handy_http_primitives : Optional;
import std.datetime;
import transaction.model;
import transaction.dto;
import util.money;
import util.pagination;
interface TransactionVendorRepository {
Optional!TransactionVendor findById(ulong id);
TransactionVendor[] findAll();
bool existsByName(string name);
bool existsById(ulong id);
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);
bool existsById(ulong id);
TransactionCategory[] findAll();
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, in string[] tags);
string[] findAll();
}
interface TransactionRepository {
Page!TransactionsListItem findAll(PageRequest pr);
Optional!TransactionDetail findById(ulong id);
TransactionDetail insert(in AddTransactionPayload data);
TransactionDetail update(ulong transactionId, in AddTransactionPayload data);
void deleteById(ulong id);
}