Recount-Server/web/data_endpoints.go

97 lines
2.7 KiB
Go
Raw Normal View History

2024-01-17 19:58:31 -08:00
package web
import (
"context"
"database/sql"
"encoding/json"
"fmt"
"net/http"
"time"
2024-01-19 21:05:08 -08:00
"github.com/go-chi/chi/v5"
2024-01-17 19:58:31 -08:00
"github.com/rs/zerolog/log"
"nickiel.net/recount_server/types"
)
const DEFAULT_RESULT_COUNT = 20;
2024-01-20 15:05:06 -08:00
func getTransactionsRows(w http.ResponseWriter, req *http.Request) {
2024-01-17 19:58:31 -08:00
transactions := make([]types.HumanLegibleTransaction, 10)
// Populate the slice with dummy data (you can replace this with your actual data)
for i := 10; i > 0; i-- {
transaction := types.HumanLegibleTransaction{
Id: i,
Amount: fmt.Sprintf("%d.00", (i+1)*100),
Description: sql.NullString{String: fmt.Sprintf("Transaction %d", i+1), Valid: true},
AccountName: sql.NullString{String: "Savings", Valid: true},
Account: 123,
Bucket: sql.NullInt64{Int64: int64(i + 100), Valid: true},
BucketName: sql.NullString{String: fmt.Sprintf("Bucket %d", i+1), Valid: true},
Date: time.Now(),
}
transactions[10 - i] = transaction
}
component := transaction_rows(&transactions);
component.Render(context.Background(), w);
}
2024-01-24 18:58:29 -08:00
func getTransactionQuickAccess(w http.ResponseWriter, req *http.Request) {
component := transaction_quick_access();
component.Render(context.Background(), w);
}
func getRightPanelQuickAccess(w http.ResponseWriter, req *http.Request) {
component := right_panel_quick_access();
component.Render(context.Background(), w);
}
2024-01-17 19:58:31 -08:00
func getExpenditureChart(w http.ResponseWriter, req *http.Request) {
2024-01-18 18:57:03 -08:00
data_package := struct{
Labels []string `json:"labels"`
IncomeDataset []int `json:"income_data"`
ExpensesDataset []int `json:"expenses_data"`
} {
2024-01-17 19:58:31 -08:00
Labels: []string{"Income", "Expenses"},
2024-01-18 18:57:03 -08:00
IncomeDataset: []int {300, 250},
ExpensesDataset: []int {200, 100},
2024-01-17 19:58:31 -08:00
};
json_data, err := json.Marshal(data_package);
if err != nil {
log.Fatal().Err(err).Msg("Could not jsonify data_package");
}
w.Write(json_data);
}
2024-01-19 21:05:08 -08:00
func getAccountSummaries(w http.ResponseWriter, req *http.Request) {
accounts := make([]types.TwoIntsItem, 20)
for i := 0; i < 20; i++ {
accounts[i] = types.TwoIntsItem {Item1: i*100, Item2: i+5}
}
component := account_summary_rows(&accounts)
component.Render(context.Background(), w)
}
func getAccountSummaryChart(w http.ResponseWriter, req *http.Request) {
accountID := chi.URLParam(req, "accountID")
data_package := types.ChartjsData {
Labels: []string {accountID, "1/10", "1/17", "1/24"},
Data: []int {100, 0, -50, 25},
}
json_data, err := json.Marshal(data_package);
if err != nil {
log.Fatal().Err(err).Msg("Could not jsonify data_package");
}
w.Write(json_data);
}