MoneyMgr/moneymgr_web/src/api/MovementsApi.ts

77 lines
1.4 KiB
TypeScript

import { APIClient } from "./ApiClient";
export interface Balances {
[key: number]: number;
}
export interface MovementUpdate {
account_id: number;
time: number;
label: String;
file_id?: number;
amount: number;
checked: boolean;
}
export interface Movement {
id: number;
account_id: number;
time: number;
label: string;
file_id?: number;
amount: number;
checked: boolean;
time_create: number;
time_update: number;
}
export class MovementApi {
/**
* Get all accounts balances
*/
static async GetAllBalances(): Promise<Balances> {
return (
await APIClient.exec({
uri: `/accounts/balances`,
method: "GET",
})
).data;
}
/**
* Create a new movement
*/
static async Create(q: MovementUpdate): Promise<void> {
await APIClient.exec({
uri: `/movement`,
method: "POST",
jsonData: q,
});
}
/**
* Get all the movements of an account
*/
static async GetAccountMovements(account_id: number): Promise<Movement[]> {
return (
await APIClient.exec({
uri: `/account/${account_id}/movements`,
method: "GET",
})
).data;
}
/**
* Update a movement information
*/
static async Update(movement: Movement): Promise<Movement> {
return (
await APIClient.exec({
uri: `/movement/${movement.id}`,
method: "PUT",
jsonData: movement,
})
).data;
}
}