feat(api): Add compatibility layer for API v1

This commit is contained in:
abdus committed 2026-02-22 18:39:14 +03:00
1 parent 82f252f32f
commit ad1a9364b8
6 files changed
+8624 -10

No files matched your search

+27 -5
View File
@@ -1,17 +1,21 @@
package main
import (
"database/sql"
"fmt"
"os"
"strings"
"github.com/rs/zerolog/log"
_ "modernc.org/sqlite"
"prayertimes/internal/api"
"prayertimes/internal/net"
"prayertimes/pkg/citydb"
"prayertimes/pkg/diyanetapi"
"prayertimes/pkg/diyanetcalc"
"prayertimes/pkg/diyanetcitydb"
"prayertimes/pkg/diyanetprovider"
)
@@ -28,19 +32,23 @@ func run() error {
return fmt.Errorf("DB_PATH is not set")
}
locationProvider, err := citydb.Open(dbPath)
conn, err := newDB(dbPath)
if err != nil {
return fmt.Errorf("failed to open city database: %w", err)
return fmt.Errorf("failed to initialize database connection: %w", err)
}
defer locationProvider.Close()
defer conn.Close()
locationProvider := citydb.NewWithConn(conn)
legacyLocationProvider := diyanetcitydb.New(conn)
diyanetAPIProvider := diyanetapi.New(net.ReqClient)
diyanetCalcProvider := diyanetcalc.New()
prayerProvider := diyanetprovider.New(diyanetAPIProvider, diyanetCalcProvider)
services := api.Services{
PrayerProvider: prayerProvider,
LocationProvider: locationProvider,
PrayerProvider: prayerProvider,
LocationProvider: locationProvider,
LegacyLocationProvider: legacyLocationProvider,
}
app := api.New(services)
@@ -58,3 +66,17 @@ func getDefaultEnv(name string, defaultValue string) string {
}
return v
}
func newDB(path string) (*sql.DB, error) {
conn, err := sql.Open("sqlite", path)
if err != nil {
return nil, fmt.Errorf("failed to open database connection: %w", err)
}
if err := conn.Ping(); err != nil {
_ = conn.Close()
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
return conn, nil
}