IP기반 Seed 데이터 생성, 업데이트에 반영

This commit is contained in:
Lectom C Han
2025-12-10 13:01:01 +09:00
parent 766a43f2e4
commit 869f912886
7 changed files with 6827 additions and 0 deletions

View File

@@ -1,12 +1,23 @@
package userprogram
import (
"errors"
"fmt"
"os"
"path/filepath"
"regexp"
"strconv"
"strings"
"time"
"geoip-rest/internal/geo"
)
type Backend string
const (
BackendMMDB Backend = "mmdb"
BackendPostgres Backend = "postgres"
)
const (
@@ -88,6 +99,42 @@ func NewPathsFromEnv() (Paths, error) {
return paths, nil
}
func BackendFromEnv() Backend {
val := strings.ToLower(env("GEOIP_BACKEND", string(BackendMMDB)))
switch val {
case string(BackendMMDB), "":
return BackendMMDB
case string(BackendPostgres):
return BackendPostgres
default:
return BackendMMDB
}
}
func ResolveBackend(cfg geo.Config) (geo.Resolver, error) {
switch Backend(cfg.Backend) {
case BackendMMDB, "":
if cfg.MMDBPath == "" {
return nil, errors.New("MMDBPath required for mmdb backend")
}
return geo.NewResolver(geo.Config{
Backend: geo.BackendMMDB,
MMDBPath: cfg.MMDBPath,
})
case BackendPostgres:
if cfg.DatabaseURL == "" {
return nil, errors.New("DatabaseURL required for postgres backend")
}
return geo.NewResolver(geo.Config{
Backend: geo.BackendPostgres,
DatabaseURL: cfg.DatabaseURL,
LookupQuery: cfg.LookupQuery,
})
default:
return nil, fmt.Errorf("unsupported backend %s", cfg.Backend)
}
}
func ParseTargetDate(raw string) (time.Time, error) {
if raw == "" {
return yesterdayKST(), nil