1 line
5.2 KiB
JSON
1 line
5.2 KiB
JSON
{"repo": "4444urka/llm-analytics", "files": {"backend/config/config.go": {"75124230cbb211f80515abe6efd49f8a4f939e30": {"t": 1785746079.8523111, "n": 2170, "h": "72631309c8e95e25", "c": "package config\n\nimport (\n\t\"bufio\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Config struct {\n\tLLMAPIKey string\n\tLLMAPIBase string\n\tLLMModel string\n\tPort string\n\tDBPath string\n\tMaxUploadSizeMB int64\n\tPythonBin string\n\tPythonTimeout int\n\tFrontendOrigin string\n}\n\nfunc Load() *Config {\n\tloadDotEnv()\n\n\treturn &Config{\n\t\tLLMAPIKey: getEnv(\"LLM_API_KEY\", \"\"),\n\t\tLLMAPIBase: getEnv(\"LLM_API_BASE\", \"https://api.deepseek.com/v1\"),\n\t\tLLMModel: getEnv(\"LLM_MODEL\", \"deepseek-v4-flash\"),\n\t\tPort: getEnv(\"PORT\", \"8080\"),\n\t\tDBPath: getEnv(\"DB_PATH\", \"./data.db\"),\n\t\tMaxUploadSizeMB: getEnvInt64(\"MAX_UPLOAD_SIZE_MB\", 50),\n\t\tPythonBin: getEnv(\"PYTHON_BIN\", \"python3\"),\n\t\tPythonTimeout: getEnvInt(\"PYTHON_TIMEOUT_SEC\", 60),\n\t\tFrontendOrigin: getEnv(\"FRONTEND_ORIGIN\", \"\"),\n\t}\n}\n\nfunc loadDotEnv() {\n\tcandidates := []string{\".env\", \"../.env\"}\n\n\texe, err := os.Executable()\n\tif err == nil {\n\t\tdir := filepath.Dir(exe)\n\t\tcandidates = append(candidates, filepath.Join(dir, \".env\"))\n\t}\n\n\tfor _, path := range candidates {\n\t\tf, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tscanner := bufio.NewScanner(f)\n\t\tfor scanner.Scan() {\n\t\t\tline := strings.TrimSpace(scanner.Text())\n\n\t\t\tif line == \"\" || strings.HasPrefix(line, \"#\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tline = strings.TrimPrefix(line, \"export \")\n\n\t\t\teq := strings.Index(line, \"=\")\n\t\t\tif eq < 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tkey := strings.TrimSpace(line[:eq])\n\t\t\tval := strings.TrimSpace(line[eq+1:])\n\n\t\t\tval = strings.Trim(val, `\"'`)\n\n\t\t\tif os.Getenv(key) == \"\" {\n\t\t\t\tos.Setenv(key, val)\n\t\t\t}\n\t\t}\n\t\tf.Close()\n\n\t\tlog.Printf(\"Loaded .env from %s\", path)\n\t\treturn\n\t}\n}\n\nfunc getEnv(key, fallback string) string {\n\tif v := os.Getenv(key); v != \"\" {\n\t\treturn v\n\t}\n\treturn fallback\n}\n\nfunc getEnvInt(key string, fallback int) int {\n\tif v := os.Getenv(key); v != \"\" {\n\t\tif n, err := strconv.Atoi(v); err == nil {\n\t\t\treturn n\n\t\t}\n\t}\n\treturn fallback\n}\n\nfunc getEnvInt64(key string, fallback int64) int64 {\n\tif v := os.Getenv(key); v != \"\" {\n\t\tif n, err := strconv.ParseInt(v, 10, 64); err == nil {\n\t\t\treturn n\n\t\t}\n\t}\n\treturn fallback\n}\n"}, "7ba032e6bd0d60b38f356d15c747b3c7bdfb9236": {"t": 1785759647.2423768, "n": 2191, "h": "f87ee2866ce85a9d", "c": "package config\n\nimport (\n\t\"bufio\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Config struct {\n\tLLMAPIKey string\n\tLLMAPIBase string\n\tLLMModel string\n\tPort string\n\tDBPath string\n\tMaxUploadSizeMB int64\n\tPythonBin string\n\tPythonTimeout int\n\tFrontendOrigin string\n}\n\nfunc Load() *Config {\n\tloadDotEnv()\n\n\treturn &Config{\n\t\tLLMAPIKey: getEnv(\"LLM_API_KEY\", \"\"),\n\t\tLLMAPIBase: getEnv(\"LLM_API_BASE\", \"https://api.deepseek.com/v1\"),\n\t\tLLMModel: getEnv(\"LLM_MODEL\", \"deepseek-v4-flash\"),\n\t\tPort: getEnv(\"PORT\", \"8080\"),\n\t\tDBPath: getEnv(\"DB_PATH\", \"./data.db\"),\n\t\tMaxUploadSizeMB: getEnvInt64(\"MAX_UPLOAD_SIZE_MB\", 50),\n\t\tPythonBin: getEnv(\"PYTHON_BIN\", \"python3\"),\n\t\tPythonTimeout: getEnvInt(\"PYTHON_TIMEOUT_SEC\", 60),\n\t\tFrontendOrigin: getEnv(\"FRONTEND_ORIGIN\", \"http://localhost:5173\"),\n\t}\n}\n\nfunc loadDotEnv() {\n\tcandidates := []string{\".env\", \"../.env\"}\n\n\texe, err := os.Executable()\n\tif err == nil {\n\t\tdir := filepath.Dir(exe)\n\t\tcandidates = append(candidates, filepath.Join(dir, \".env\"))\n\t}\n\n\tfor _, path := range candidates {\n\t\tf, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tscanner := bufio.NewScanner(f)\n\t\tfor scanner.Scan() {\n\t\t\tline := strings.TrimSpace(scanner.Text())\n\n\t\t\tif line == \"\" || strings.HasPrefix(line, \"#\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tline = strings.TrimPrefix(line, \"export \")\n\n\t\t\teq := strings.Index(line, \"=\")\n\t\t\tif eq < 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tkey := strings.TrimSpace(line[:eq])\n\t\t\tval := strings.TrimSpace(line[eq+1:])\n\n\t\t\tval = strings.Trim(val, `\"'`)\n\n\t\t\tif os.Getenv(key) == \"\" {\n\t\t\t\tos.Setenv(key, val)\n\t\t\t}\n\t\t}\n\t\tf.Close()\n\n\t\tlog.Printf(\"Loaded .env from %s\", path)\n\t\treturn\n\t}\n}\n\nfunc getEnv(key, fallback string) string {\n\tif v := os.Getenv(key); v != \"\" {\n\t\treturn v\n\t}\n\treturn fallback\n}\n\nfunc getEnvInt(key string, fallback int) int {\n\tif v := os.Getenv(key); v != \"\" {\n\t\tif n, err := strconv.Atoi(v); err == nil {\n\t\t\treturn n\n\t\t}\n\t}\n\treturn fallback\n}\n\nfunc getEnvInt64(key string, fallback int64) int64 {\n\tif v := os.Getenv(key); v != \"\" {\n\t\tif n, err := strconv.ParseInt(v, 10, 64); err == nil {\n\t\t\treturn n\n\t\t}\n\t}\n\treturn fallback\n}\n"}}}} |