feat: scaffold initial RSS reader project with Go backend and React frontend
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Port string
|
||||
DBPath string
|
||||
AdminUsername string
|
||||
AdminPassword string
|
||||
JWTSecret string
|
||||
CrawlerIntervalMinutes int
|
||||
CrawlerWorkers int
|
||||
}
|
||||
|
||||
func LoadConfig() *Config {
|
||||
port := os.Getenv("PORT")
|
||||
if port == "" {
|
||||
port = "8080"
|
||||
}
|
||||
|
||||
dbPath := os.Getenv("DB_PATH")
|
||||
if dbPath == "" {
|
||||
dbPath = "./data/rsspipe.db"
|
||||
}
|
||||
|
||||
adminUser := os.Getenv("ADMIN_USERNAME")
|
||||
if adminUser == "" {
|
||||
adminUser = "admin"
|
||||
}
|
||||
|
||||
adminPass := os.Getenv("ADMIN_PASSWORD")
|
||||
if adminPass == "" {
|
||||
adminPass = "admin123456"
|
||||
}
|
||||
|
||||
jwtSecret := os.Getenv("JWT_SECRET")
|
||||
if jwtSecret == "" {
|
||||
jwtSecret = "rsspipe-super-secret-jwt-key-2026"
|
||||
}
|
||||
|
||||
intervalMin := 15
|
||||
if intervalStr := os.Getenv("CRAWLER_INTERVAL_MINUTES"); intervalStr != "" {
|
||||
if v, err := strconv.Atoi(intervalStr); err == nil && v > 0 {
|
||||
intervalMin = v
|
||||
}
|
||||
}
|
||||
|
||||
workers := 10
|
||||
if workerStr := os.Getenv("CRAWLER_WORKERS"); workerStr != "" {
|
||||
if v, err := strconv.Atoi(workerStr); err == nil && v > 0 {
|
||||
workers = v
|
||||
}
|
||||
}
|
||||
|
||||
return &Config{
|
||||
Port: port,
|
||||
DBPath: dbPath,
|
||||
AdminUsername: adminUser,
|
||||
AdminPassword: adminPass,
|
||||
JWTSecret: jwtSecret,
|
||||
CrawlerIntervalMinutes: intervalMin,
|
||||
CrawlerWorkers: workers,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user