mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gitlab.com/mbugroup/lti-api.git/internal/cache"
|
|
"gitlab.com/mbugroup/lti-api.git/internal/config"
|
|
"gitlab.com/mbugroup/lti-api.git/internal/readapi"
|
|
"gitlab.com/mbugroup/lti-api.git/internal/route"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
func main() {
|
|
root, err := findRepoRoot()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
readapi.PrimeBuildConfig()
|
|
cache.SetRedis(redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379"}))
|
|
app := fiber.New(config.FiberConfig())
|
|
app.Get("/healthz", func(c *fiber.Ctx) error {
|
|
return c.JSON(fiber.Map{"status": "ok", "service": "api", "version": config.Version})
|
|
})
|
|
app.Get("/readyz", func(c *fiber.Ctx) error {
|
|
return c.JSON(fiber.Map{"status": "ok", "db": "up", "redis": "up"})
|
|
})
|
|
route.Routes(app, nil)
|
|
|
|
artifacts, err := readapi.BuildArtifactsFromApp(app)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
files := map[string][]byte{
|
|
filepath.Join(root, "docs", "openapi", "read-api.json"): artifacts.OpenAPIJSON,
|
|
filepath.Join(root, "docs", "openapi", "read-api.yaml"): artifacts.OpenAPIYAML,
|
|
filepath.Join(root, "docs", "postman", "read-api.collection.json"): artifacts.PostmanCollectionJSON,
|
|
filepath.Join(root, "docs", "postman", "read-api.environment.json"): artifacts.PostmanEnvironmentJSON,
|
|
}
|
|
|
|
for path, body := range files {
|
|
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
|
|
panic(err)
|
|
}
|
|
if err := os.WriteFile(path, body, 0o644); err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Printf("wrote %s\n", path)
|
|
}
|
|
}
|
|
|
|
func findRepoRoot() (string, error) {
|
|
wd, err := os.Getwd()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
current := wd
|
|
for {
|
|
if _, err := os.Stat(filepath.Join(current, "go.mod")); err == nil {
|
|
return current, nil
|
|
}
|
|
parent := filepath.Dir(current)
|
|
if parent == current {
|
|
return "", fmt.Errorf("go.mod not found from %s", wd)
|
|
}
|
|
current = parent
|
|
}
|
|
}
|