Add stubs for more transaction API endpoints.
This commit is contained in:
parent
4b9e859c85
commit
277a6dc591
|
@ -64,6 +64,10 @@ HttpRequestHandler mapApiHandlers(string webOrigin) {
|
|||
a.map(HttpMethod.DELETE, PROFILE_PATH ~ "/vendors/:vendorId:ulong", &handleDeleteVendor);
|
||||
|
||||
a.map(HttpMethod.GET, PROFILE_PATH ~ "/transactions", &handleGetTransactions);
|
||||
a.map(HttpMethod.GET, PROFILE_PATH ~ "/transactions/:transactionId:ulong", &handleGetTransaction);
|
||||
a.map(HttpMethod.POST, PROFILE_PATH ~ "/transactions", &handleAddTransaction);
|
||||
a.map(HttpMethod.PUT, PROFILE_PATH ~ "/transactions/:transactionId:ulong", &handleUpdateTransaction);
|
||||
a.map(HttpMethod.DELETE, PROFILE_PATH ~ "/transactions/:transactionId:ulong", &handleDeleteTransaction);
|
||||
|
||||
import data_api;
|
||||
// Various other data endpoints:
|
||||
|
|
|
@ -4,6 +4,7 @@ import handy_http_primitives;
|
|||
import handy_http_data.json;
|
||||
import handy_http_handlers.path_handler;
|
||||
import slf4d;
|
||||
import std.typecons;
|
||||
|
||||
import transaction.model;
|
||||
import transaction.data;
|
||||
|
@ -15,6 +16,8 @@ import util.money;
|
|||
import util.pagination;
|
||||
import util.data;
|
||||
|
||||
// Transactions API
|
||||
|
||||
immutable DEFAULT_TRANSACTION_PAGE = PageRequest(1, 10, [Sort("timestamp", SortDir.DESC)]);
|
||||
|
||||
struct TransactionsListItemAccount {
|
||||
|
@ -65,6 +68,49 @@ void handleGetTransactions(ref ServerHttpRequest request, ref ServerHttpResponse
|
|||
writeJsonBody(response, responsePage);
|
||||
}
|
||||
|
||||
void handleGetTransaction(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
struct AddTransactionPayloadLineItem {
|
||||
long valuePerItem;
|
||||
ulong quantity;
|
||||
string description;
|
||||
Nullable!ulong categoryId;
|
||||
}
|
||||
|
||||
struct AddTransactionPayload {
|
||||
string timestamp;
|
||||
ulong amount;
|
||||
string currencyCode;
|
||||
string description;
|
||||
Nullable!ulong vendorId;
|
||||
Nullable!ulong categoryId;
|
||||
Nullable!ulong creditedAccountId;
|
||||
Nullable!ulong debitedAccountId;
|
||||
string[] tags;
|
||||
AddTransactionPayloadLineItem[] lineItems;
|
||||
}
|
||||
|
||||
void handleAddTransaction(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
ProfileDataSource ds = getProfileDataSource(request);
|
||||
auto payload = readJsonBodyAs!AddTransactionPayload(request);
|
||||
addTransaction2(ds, payload);
|
||||
}
|
||||
|
||||
void handleUpdateTransaction(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void handleDeleteTransaction(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
ProfileDataSource ds = getProfileDataSource(request);
|
||||
// TODO
|
||||
}
|
||||
|
||||
private ulong getTransactionIdOrThrow(in ServerHttpRequest request) {
|
||||
return getPathParamOrThrow(request, "transactionId");
|
||||
}
|
||||
|
||||
// Vendors API
|
||||
|
||||
void handleGetVendors(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
|
|
|
@ -19,6 +19,10 @@ Page!TransactionsListItem getTransactions(ProfileDataSource ds, in PageRequest p
|
|||
return page; // Return an empty page for now!
|
||||
}
|
||||
|
||||
void addTransaction2(ProfileDataSource ds, in AddTransactionPayload payload) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void addTransaction(
|
||||
ProfileDataSource ds,
|
||||
SysTime timestamp,
|
||||
|
|
Loading…
Reference in New Issue