86 lines
2.5 KiB
Go
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)
|
|
}
|
|
}
|