feat: Add location search
This commit is contained in:
1 parent
f520473ed3
commit
26af8af8a9
9 files changed
+417
-104
No files matched your search
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user