feat: Add location search

This commit is contained in:
abdus committed 2026-02-21 01:50:59 +03:00
1 parent f520473ed3
commit 26af8af8a9
9 files changed
+417 -104

No files matched your search

+30 -16
View File
@@ -1,40 +1,54 @@
package main
import (
"fmt"
"os"
"strings"
"github.com/rs/zerolog/log"
"prayertimes/internal/api"
"prayertimes/internal/net"
"prayertimes/pkg/citydb"
"prayertimes/pkg/diyanetapi"
"prayertimes/pkg/diyanetcalc"
"prayertimes/pkg/diyanetprovider"
)
func main() {
port := getDefaultEnv("PORT", "8000")
services, err := newServices()
if err != nil {
log.Fatal().Err(err).Msg("failed to init services")
}
app := api.New(services)
err = app.Listen(":" + port)
if err != nil {
log.Fatal().Err(err).Msg("exit with an error")
if err := run(); err != nil {
log.Fatal().Err(err).Msg("failed to run app")
}
}
func newServices() (api.Services, error) {
func run() error {
port := getDefaultEnv("PORT", "8000")
dbPath := strings.TrimSpace(getDefaultEnv("DB_PATH", "./prayertimes.sqlite3"))
if dbPath == "" {
return fmt.Errorf("DB_PATH is not set")
}
locationProvider, err := citydb.Open(dbPath)
if err != nil {
return fmt.Errorf("failed to open city database: %w", err)
}
defer locationProvider.Close()
diyanetAPIProvider := diyanetapi.New(net.ReqClient)
diyanetCalcProvider := diyanetcalc.New()
provider := diyanetprovider.New(diyanetAPIProvider, diyanetCalcProvider)
prayerProvider := diyanetprovider.New(diyanetAPIProvider, diyanetCalcProvider)
return api.Services{
Provider: provider,
}, nil
services := api.Services{
PrayerProvider: prayerProvider,
LocationProvider: locationProvider,
}
app := api.New(services)
if err := app.Listen(":" + port); err != nil {
return fmt.Errorf("failed to listen on http port: %w", err)
}
return nil
}
func getDefaultEnv(name string, defaultValue string) string {