first commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"portfolio-tracker/internal/handler"
|
||||
"portfolio-tracker/internal/model"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create data directory if it doesn't exist
|
||||
if err := os.MkdirAll("data", 0755); err != nil {
|
||||
panic("failed to create data directory: " + err.Error())
|
||||
}
|
||||
|
||||
dbPath := "data/portfolio.db"
|
||||
fmt.Printf("Opening database at: %s\n", dbPath)
|
||||
|
||||
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Error),
|
||||
})
|
||||
|
||||
// Set the global DB variable for the handlers
|
||||
handler.DB = db
|
||||
|
||||
// Auto-migrate all models
|
||||
err = db.AutoMigrate(
|
||||
&model.User{},
|
||||
&model.Portfolio{},
|
||||
&model.Activity{},
|
||||
)
|
||||
if err != nil {
|
||||
panic("failed to migrate database: " + err.Error())
|
||||
}
|
||||
|
||||
fmt.Println("Database migrations completed successfully")
|
||||
|
||||
// Routes - organized by functionality
|
||||
|
||||
// Main pages
|
||||
http.HandleFunc("/", handler.Handler)
|
||||
http.HandleFunc("/details", handler.DetailsHandler)
|
||||
|
||||
// API endpoints
|
||||
http.HandleFunc("/api/yahoo", handler.JsonEndpoint)
|
||||
http.HandleFunc("/api/yahoomaxdividends", handler.YahooMaxDividendsHandler)
|
||||
http.HandleFunc("/api/stocksearch", handler.StockSearchEndpoint)
|
||||
|
||||
// Admin endpoints
|
||||
http.HandleFunc("/api/admin/clear-currency-cache", handler.ClearCurrencyCacheHandler)
|
||||
http.HandleFunc("/api/admin/currency-cache-info", handler.CurrencyCacheInfoHandler)
|
||||
|
||||
// Authentication
|
||||
http.HandleFunc("/user/register", handler.RegisterHandler)
|
||||
http.HandleFunc("/user/login", handler.LoginHandler)
|
||||
http.HandleFunc("/user/logout", handler.LogoutHandler)
|
||||
|
||||
// Portfolio management
|
||||
http.HandleFunc("/portfolio", handler.PortfolioHandler)
|
||||
http.HandleFunc("/portfolio/create", handler.CreatePortfolioHandler)
|
||||
http.HandleFunc("/portfolio/transaction", handler.PortfolioTransactionHandler)
|
||||
http.HandleFunc("/portfolio/transaction/edit", handler.EditTransactionHandler)
|
||||
http.HandleFunc("/portfolio/transaction/delete", handler.DeleteTransactionHandler)
|
||||
http.HandleFunc("/portfolio/", handler.PortfolioDetailHandler) // Note the trailing slash
|
||||
|
||||
fmt.Println("Server läuft auf http://localhost:8080")
|
||||
http.ListenAndServe(":8080", nil)
|
||||
}
|
||||
Reference in New Issue
Block a user