101 lines
2.3 KiB
Go

package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
// Transaction struct represents a transaction
type Transaction struct {
ID int64 `json:"id"`
Date string `json:"date"`
Description string `json:"description"`
Value float64 `json:"value"`
Category string `json:"category,omitempty"`
}
// Bank struct represents a bank
type Bank struct {
ID string `json:"id"`
Name string `json:"name"`
NordigenID string `json:"nordigenId,omitempty"`
}
// ResponseError struct represents an error response
type ResponseError struct {
Message string `json:"message"`
}
// Handlers
func retrieveTransactions(c *gin.Context) {
// Handle the logic for retrieving transactions here
// limit := c.Query("limit")
// offset := c.Query("offset")
// bank := c.Query("bank")
// sort := c.Query("sort")
// Placeholder response
transactions := []Transaction{
{ID: 1, Date: "2024-01-24", Description: "Groceries", Value: -50.0, Category: "Food"},
{ID: 2, Date: "2024-01-23", Description: "Salary", Value: 3000.0, Category: "Income"},
}
c.JSON(http.StatusOK, transactions)
}
func retrieveTransactionByID(c *gin.Context) {
// Handle the logic for retrieving a transaction by ID here
// transactionID := c.Param("transactionId")
// Placeholder response
transaction := Transaction{
ID: 1,
Date: "2024-01-24",
Description: "Groceries",
Value: -50.0,
Category: "Food",
}
c.JSON(http.StatusOK, transaction)
}
func retrieveBanks(c *gin.Context) {
// Handle the logic for retrieving banks here
// Placeholder response
banks := []Bank{
{ID: "1", Name: "Bank A", NordigenID: "uuid1"},
{ID: "2", Name: "Bank B", NordigenID: "uuid2"},
}
c.JSON(http.StatusOK, banks)
}
func retrieveBankByID(c *gin.Context) {
// Handle the logic for retrieving a bank by ID here
bankID := c.Param("bankId")
// Placeholder response
bank := Bank{ID: bankID, Name: "Bank A", NordigenID: "uuid1"}
c.JSON(http.StatusOK, bank)
}
func main() {
router := gin.Default()
// Routes
router.GET("/transactions", retrieveTransactions)
router.GET("/transactions/:transactionId", retrieveTransactionByID)
router.GET("/banks", retrieveBanks)
router.GET("/banks/:bankId", retrieveBankByID)
// Start server
port := 8080
fmt.Printf("Server is running on :%d...\n", port)
router.Run(fmt.Sprintf(":%d", port))
}