Init: setup uptrace and swagger

This commit is contained in:
2025-12-07 03:28:07 +08:00
parent a4096bf1a7
commit 56e83b0725
28 changed files with 662 additions and 81 deletions

View File

@@ -1,24 +1,27 @@
package cmds
import (
"database/sql"
"log"
"net/http"
"gitea.konchin.com/go2025/backend/handlers/api"
"gitea.konchin.com/go2025/backend/middlewares"
"gitea.konchin.com/go2025/backend/tracing"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"go.uber.org/zap"
httpSwagger "github.com/swaggo/http-swagger"
"github.com/uptrace/bunrouter"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
_ "gitea.konchin.com/go2025/backend/docs"
)
// @title Golang 2025 Final Project
// @version 0.0.1
// @termsOfService http://swagger.io/terms
// @title Golang 2025 Final Project
// @version 0.0.1
// @termsOfService http://swagger.io/terms
//
// @license.name 0BSD
// @basePath /
// @license.name 0BSD
// @basePath /
var serveCmd = &cobra.Command{
Use: "serve",
Run: func(cmd *cobra.Command, args []string) {
@@ -32,38 +35,44 @@ var serveCmd = &cobra.Command{
defer tracing.DeferUptrace(ctx)
}
// Initialize DB instance
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(
viper.GetString("pg-connection-string"))))
bunDB := bun.NewDB(sqldb, pgdialect.New())
bunDB.AddQueryHook(bunotel.NewQueryHook(bunotel.WithDBName("backend")))
/*
// Initialize DB instance
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(
viper.GetString("pg-connection-string"))))
bunDB := bun.NewDB(sqldb, pgdialect.New())
bunDB.AddQueryHook(bunotel.NewQueryHook(bunotel.WithDBName("backend")))
// Initialize MinIO instance
mc, err := minio.New(viper.GetString("minio-host"), &minio.Options{
Creds: credentials.NewStaticV4(
viper.GetString("minio-accesskey"),
viper.GetString("minio-secretkey"),
"",
),
Secure: viper.GetBool("minio-usessl"),
})
if err != nil {
tracing.Logger.Ctx(ctx).
Error("failed to create minio client",
zap.Error(err))
panic(err)
}
// Initialize MinIO instance
mc, err := minio.New(viper.GetString("minio-host"), &minio.Options{
Creds: credentials.NewStaticV4(
viper.GetString("minio-accesskey"),
viper.GetString("minio-secretkey"),
"",
),
Secure: viper.GetBool("minio-usessl"),
})
if err != nil {
tracing.Logger.Ctx(ctx).
Error("failed to create minio client",
zap.Error(err))
panic(err)
}
if err := utils.InitMinIO(ctx, mc); err != nil {
tracing.Logger.Ctx(ctx).
Error("failed to minio init",
zap.Error(err))
panic(err)
}
if err := utils.InitMinIO(ctx, mc); err != nil {
tracing.Logger.Ctx(ctx).
Error("failed to minio init",
zap.Error(err))
panic(err)
}
// Initialize custom interfaces
db := implements.NewBunDatabase(bunDB)
s3 := implements.NewMinIOObjectStorage(mc)
// Initialize custom interfaces
db := implements.NewBunDatabase(bunDB)
s3 := implements.NewMinIOObjectStorage(mc)
*/
// Initialize handlers
apis := api.NewHandlers()
// Initialize backend router
router := bunrouter.New()
@@ -73,6 +82,9 @@ var serveCmd = &cobra.Command{
Use(middlewares.AccessLog).
Use(middlewares.CORSHandler)
apiGroup := backend.NewGroup("/api")
apiGroup.GET("/images", apis.GetImages)
if viper.GetBool("swagger") {
backend.GET("/swagger/*any",
bunrouter.HTTPHandlerFunc(
@@ -88,6 +100,8 @@ var serveCmd = &cobra.Command{
func init() {
serveCmd.Flags().
String("port", "8080", "Port to listen on")
serveCmd.Flags().
String("cors-origin", "", "CORS origin")
serveCmd.Flags().
Bool("zap-production", true, "Toggle production log format")
@@ -99,15 +113,15 @@ func init() {
"postgres://go2025:go2025@pg:5432/go2025?sslmode=disable",
"Postgres connection string")
backendCmd.Flags().
serveCmd.Flags().
String("minio-host", "minio:9000", "MinIO host[:port]")
backendCmd.Flags().
serveCmd.Flags().
String("minio-bucket", "go2025", "MinIO bucket")
backendCmd.Flags().
serveCmd.Flags().
String("minio-accesskey", "poop", "MinIO accesskey")
backendCmd.Flags().
String("minio-secretkey", "poop", "MinIO secretkey")
backendCmd.Flags().
serveCmd.Flags().
String("minio-secretkey", "poop114514", "MinIO secretkey")
serveCmd.Flags().
Bool("minio-usessl", false, "MinIO usessl")
serveCmd.Flags().