This commit is contained in:
2025-11-12 09:41:52 +03:00
commit 2a8566712a
44 changed files with 2602 additions and 0 deletions

69
cmd/main.go Normal file
View File

@@ -0,0 +1,69 @@
package main
import (
"context"
"fmt"
"github.com/nats-io/nats.go"
"madsky.ru/go-tracker/internal/broker"
"madsky.ru/go-tracker/internal/config"
"madsky.ru/go-tracker/internal/database"
"madsky.ru/go-tracker/internal/logger"
"madsky.ru/go-tracker/internal/server"
"madsky.ru/go-tracker/internal/storage"
"os"
)
func main() {
cfg := config.MustLoad("./config/config.yaml")
log := logger.NewLogger()
dsn := getDSN(cfg.Database.Host, cfg.Database.Port, cfg.Database.User, cfg.Database.Password, cfg.Database.Name)
//ctx := context.WithValue(context.Background(), "value", "foo bar")
//ctx := context.Background()
ctx, cancel := context.WithCancel(context.WithValue(context.Background(), "value", "foo bar"))
defer cancel()
// broker section
n := broker.NewBroker(cfg)
defer n.Close()
pubErr := n.Publish("test", []byte("foobar"))
if pubErr != nil {
fmt.Println(pubErr)
}
_, subErr := n.Subscribe("test", func(msg *nats.Msg) {
fmt.Println(msg.Subject, string(msg.Data))
})
if subErr != nil {
log.Error("Error subscribing", subErr)
}
// end broker section
client, err := database.NewClient(ctx, dsn, log)
if err != nil {
log.Error("Error connecting to database", err)
os.Exit(1)
}
defer client.Close()
store := storage.NewStorage(client)
app := &server.Application{
Config: cfg,
Storage: store,
Ctx: ctx,
}
r := app.Routes()
if err = app.Start(r); err != nil {
log.Error("Error starting http server", err)
os.Exit(1)
}
}
func getDSN(host, port, user, password, name string) string {
return fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
host, port, user, password, name)
}