feat: завершён этап 1 - Фундамент Core Service

- Удалены зависимости: grpc, redis, prometheus
- Упрощена конфигурация (Server, Database, JWT)
- Создан логгер на основе logrus
- Добавлено подключение к PostgreSQL
- Создана миграция с базовыми таблицами
- Обновлены модели с валидацией
- Создан базовый API сервер с health check
- Добавлен .env.example

Готово для этапа 2 - Аутентификация
This commit is contained in:
2025-08-27 14:40:48 +04:00
parent 725d4c4474
commit 9777114e16
10 changed files with 521 additions and 164 deletions

View File

@@ -3,17 +3,15 @@ package config
import (
"os"
"strconv"
"time"
"github.com/joho/godotenv"
)
type Config struct {
Server ServerConfig
Database DatabaseConfig
Redis RedisConfig
JWT JWTConfig
DocumentService DocumentServiceConfig
Log LogConfig
Server ServerConfig
Database DatabaseConfig
JWT JWTConfig
}
type ServerConfig struct {
@@ -30,24 +28,9 @@ type DatabaseConfig struct {
SSLMode string
}
type RedisConfig struct {
Host string
Port string
Password string
DB int
}
type JWTConfig struct {
Secret string
Expiration int // в часах
}
type DocumentServiceConfig struct {
URL string
}
type LogConfig struct {
Level string
Secret string
TTL time.Duration
}
func Load() (*Config, error) {
@@ -67,21 +50,9 @@ func Load() (*Config, error) {
DBName: getEnv("DB_NAME", "erp_mvp"),
SSLMode: getEnv("DB_SSLMODE", "disable"),
},
Redis: RedisConfig{
Host: getEnv("REDIS_HOST", "localhost"),
Port: getEnv("REDIS_PORT", "6379"),
Password: getEnv("REDIS_PASSWORD", ""),
DB: getEnvAsInt("REDIS_DB", 0),
},
JWT: JWTConfig{
Secret: getEnv("JWT_SECRET", "your-secret-key"),
Expiration: getEnvAsInt("JWT_EXPIRATION", 24),
},
DocumentService: DocumentServiceConfig{
URL: getEnv("DOC_SERVICE_URL", "http://localhost:8000"),
},
Log: LogConfig{
Level: getEnv("LOG_LEVEL", "info"),
Secret: getEnv("JWT_SECRET", "your-secret-key"),
TTL: time.Duration(getEnvAsInt("JWT_TTL_HOURS", 24)) * time.Hour,
},
}, nil
}