Files
whereismymoney/main.go
T
Matthias Hinrichs 189e7a2329 first commit
2025-08-26 03:17:49 +02:00

86 lines
2.5 KiB
Go

package main
import (
"log"
"whereismymoney/internal/config"
"whereismymoney/internal/database"
"whereismymoney/internal/handlers"
"github.com/gin-gonic/gin"
)
func main() {
// Load configuration
cfg, err := config.Load()
if err != nil {
log.Fatal("Fehler beim Laden der Konfiguration:", err)
}
// Connect to database
db, err := database.Connect(cfg)
if err != nil {
log.Fatal("Fehler beim Verbinden zur Datenbank:", err)
}
// Initialize handlers
h := handlers.NewHandler(db)
// Setup Gin router
r := gin.Default()
// Statische Dateien servieren
r.Static("/static", "./static")
// Auth Routes
r.GET("/login", h.ShowLogin)
r.POST("/login", h.Login)
r.GET("/register", h.ShowRegister)
r.POST("/register", h.Register)
r.POST("/logout", h.Logout)
// Protected Routes
r.GET("/", h.Dashboard)
r.GET("/api/dashboard-data", h.DashboardDataAPI)
r.GET("/accounts", h.ShowAccounts)
r.POST("/accounts/bank", h.CreateBankAccount)
r.POST("/accounts/depot", h.CreateDepot)
// Test Route für wiederkehrende Transaktionen
r.GET("/test/recurring", h.TestRecurringTransactions)
// Transaction Routes
r.GET("/transactions", h.ShowTransactions)
r.POST("/transactions", h.CreateTransaction)
r.POST("/transactions/recurring", h.CreateRecurringTransaction)
r.DELETE("/transactions/:id", h.DeleteTransaction)
r.GET("/transactions/:id/data", h.GetTransactionData)
r.PUT("/transactions/:id", h.UpdateTransaction)
r.PUT("/transactions/multi-update", h.MultiUpdateTransactions)
r.DELETE("/transactions/multi-delete", h.MultiDeleteTransactions)
r.POST("/transactions/recurring/:id/toggle", h.ToggleRecurrenceRule)
// Recurring Transactions Management
r.GET("/recurring", h.ShowRecurringTransactions)
// Recurring Transaction Management Routes
r.GET("/api/recurring-rules", h.GetRecurrenceRules)
r.PUT("/api/recurring-rules/:id", h.UpdateRecurrenceRule)
r.DELETE("/api/recurring-rules/:id", h.DeleteRecurrenceRule)
// Settings Routes
r.GET("/settings", h.ShowSettings)
r.PUT("/settings/user", h.UpdateUserSettings)
r.PUT("/settings/password", h.UpdatePassword)
r.POST("/settings/categories", h.CreateCategory)
r.DELETE("/settings/categories/:id", h.DeleteCategory)
r.DELETE("/settings/accounts/:id", h.DeleteBankAccount)
addr := cfg.Server.Host + ":" + cfg.Server.Port
log.Printf("Server startet auf %s...", addr)
log.Printf("Öffne http://%s in deinem Browser", addr)
if err := r.Run(":" + cfg.Server.Port); err != nil {
log.Fatal("Server konnte nicht gestartet werden:", err)
}
}