Files
dance-lessons-coach/cmd/server/main.go
Gabriel Radureau d661098c5c
Some checks failed
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (pull_request) Successful in 11m33s
🔧 feat: add OpenTelemetry instrumentation to persistence layer
- Added persistence telemetry configuration option (telemetry.persistence.enabled)
- Created PersistenceTelemetryConfig struct for fine-grained control
- Added GetPersistenceTelemetryEnabled() helper method
- Implemented telemetry span creation in SQLite repository
- Added OpenTelemetry instrumentation to key repository methods:
  - CreateUser: Tracks user creation with error recording
  - GetUserByUsername: Tracks queries with username attribute
- Maintained backward compatibility - telemetry is optional and disabled by default
- Updated all tests to pass config parameter to repository constructor
- Added proper error recording and span attributes for observability

Benefits:
- Performance monitoring of database operations
- Flamegraph generation capability for persistence layer
- Distributed tracing across service boundaries
- Configurable instrumentation for production vs development

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-04-07 00:50:17 +02:00

61 lines
1.5 KiB
Go

// Package main provides the dance-lessons-coach server entry point
//
// @title dance-lessons-coach API
// @version 1.2.0
// @description API for dance-lessons-coach service providing greeting functionality
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @contact.url http://www.arcodange.fr/support
// @contact.email support@arcodange.fr
// @license.name MIT
// @license.url https://opensource.org/licenses/MIT
// @host localhost:8080
// @BasePath /api
// @schemes http https
//
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name Authorization
// @description JWT authentication using Bearer token. Format: Bearer <token>
package main
import (
"context"
"fmt"
"os"
"dance-lessons-coach/pkg/config"
"dance-lessons-coach/pkg/server"
"dance-lessons-coach/pkg/version"
"github.com/rs/zerolog/log"
)
func main() {
// Check for version flag first (before config loading)
if len(os.Args) > 1 && (os.Args[1] == "--version" || os.Args[1] == "-version") {
fmt.Println(version.Full())
os.Exit(0)
}
// Load configuration (this will also setup logging)
cfg, err := config.LoadConfig()
if err != nil {
log.Fatal().Err(err).Msg("Failed to load configuration")
}
// Create readiness context to control readiness state
readyCtx, readyCancel := context.WithCancel(context.Background())
defer readyCancel()
// Create and run server
server := server.NewServer(cfg, readyCtx)
if err := server.Run(); err != nil {
log.Fatal().Err(err).Msg("Server failed")
}
}