Skip to content

Commit a144559

Browse files
committed
Release v1.1.0
1 parent 32a4ed4 commit a144559

22 files changed

Lines changed: 613 additions & 255 deletions

.github/workflows/test.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
name: Tests
2-
permissions:
3-
contents: read
42

53
on:
64
push:

backend/cmd/api/main.go

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"context"
55
"database/sql"
6+
"flag"
67
"fmt"
78
"log"
89
"net/http"
@@ -19,17 +20,34 @@ import (
1920
"github.com/lucendex/backend/internal/store"
2021
)
2122

23+
var (
24+
version = "dev"
25+
buildTime = "unknown"
26+
showVersion = flag.Bool("version", false, "Show version and exit")
27+
)
28+
2229
func main() {
23-
ctx := context.Background()
30+
flag.Parse()
31+
32+
if *showVersion {
33+
fmt.Printf("lucendex-api, build %s\n", buildTime)
34+
return
35+
}
2436

25-
dbHost := getEnv("DB_HOST", "localhost")
26-
dbPort := getEnv("DB_PORT", "5432")
27-
dbName := getEnv("DB_NAME", "lucendex")
28-
dbUser := getEnv("DB_USER", "api_ro")
29-
dbPassword := getEnv("DB_PASSWORD", "")
37+
ctx := context.Background()
3038

31-
apiConnStr := fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=disable",
32-
dbHost, dbPort, dbName, dbUser, dbPassword)
39+
// Use DATABASE_URL if provided (for Docker), otherwise fall back to individual vars
40+
apiConnStr := getEnv("DATABASE_URL", "")
41+
if apiConnStr == "" {
42+
dbHost := getEnv("DB_HOST", "localhost")
43+
dbPort := getEnv("DB_PORT", "5432")
44+
dbName := getEnv("DB_NAME", "lucendex")
45+
dbUser := getEnv("DB_USER", "api_ro")
46+
dbPassword := getEnv("DB_PASSWORD", "")
47+
dbSSLMode := getEnv("DB_SSLMODE", "require")
48+
apiConnStr = fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=%s",
49+
dbHost, dbPort, dbName, dbUser, dbPassword, dbSSLMode)
50+
}
3351

3452
db, err := sql.Open("postgres", apiConnStr)
3553
if err != nil {
@@ -42,26 +60,26 @@ func main() {
4260
}
4361

4462
kvStore := kv.NewMemoryStore()
63+
internalToken := getEnv("INTERNAL_TOKEN", "")
4564

46-
routerConnStr := fmt.Sprintf("host=%s port=%s dbname=%s user=router_ro password=%s sslmode=disable",
47-
dbHost, dbPort, dbName, getEnv("ROUTER_PASSWORD", ""))
48-
routerStore, err := store.NewRouterStore(routerConnStr)
65+
// Router uses same database for read-only access (reuse connection)
66+
routerStore, err := store.NewRouterStore(apiConnStr)
4967
if err != nil {
5068
log.Fatalf("failed to create router store: %v", err)
5169
}
5270
defer routerStore.Close()
53-
71+
5472
validator := router.NewValidator()
5573
pathfinder := router.NewPathfinder([]router.AMMPool{}, []router.Offer{})
5674
breaker := router.NewCircuitBreaker(0.05)
5775
quoteEngine := router.NewQuoteEngine(validator, pathfinder, breaker, kvStore, 20)
58-
r := router.NewRouter(quoteEngine, routerStore)
76+
r := router.NewRouter(quoteEngine, routerStore, kvStore)
5977

6078
apiStore := api.NewPostgresStore(db)
6179

6280
authMiddleware := api.NewAuthMiddleware(apiStore)
6381
rateLimiter := api.NewRateLimiter(kvStore, apiStore)
64-
handlers := api.NewHandlers(r, apiStore, kvStore)
82+
handlers := api.NewHandlers(r, apiStore, kvStore, internalToken)
6583

6684
mux := http.NewServeMux()
6785

@@ -72,6 +90,7 @@ func main() {
7290
partnerMux.HandleFunc("/partner/v1/health", handlers.HealthHandler)
7391

7492
mux.Handle("/partner/", rateLimiter.Middleware(authMiddleware.Middleware(partnerMux)))
93+
mux.HandleFunc("/internal/v1/ledger", handlers.LedgerUpdateHandler)
7594

7695
port := getEnv("API_PORT", "8080")
7796
srv := &http.Server{

0 commit comments

Comments
 (0)