1 Commits

Author SHA1 Message Date
86eb4a2c66 Merge pull request #1 from ferdzo/fix/logging-and-fixes
Fixed missing code and introduced features
2025-08-07 20:50:21 +02:00
5 changed files with 27 additions and 30 deletions

View File

@@ -1,8 +0,0 @@
REDIS_PASSWORD=
DB_PASSWORD=
DB_NAME=
DB_USER=
DB_HOST=
REDIS_PORT=
REDIS_HOST=
BASE_URL=

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
.env
build/
build/

View File

@@ -53,7 +53,6 @@ func NewHandler(service *Service, baseURL string) (*Handler, error) {
return &Handler{service: service, baseURL: baseURL}, nil
}
func (h *Handler) CreateShortURL(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")
@@ -108,8 +107,7 @@ func (h *Handler) CreateShortURL(w http.ResponseWriter, r *http.Request) {
ExpiresAt: expiresAt,
}
err = h.service.storeUrl(newUrl)
if err != nil {
if err := h.service.storeUrl(newUrl); err != nil {
log.Error("Failed to store URL", "error", err)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
@@ -331,6 +329,7 @@ func (s *Service) storeUrl(u db.URL) error {
}
}()
wg.Add(1)
go func() {
defer wg.Done()
if err := s.database.InsertNewURL(u); err != nil {
@@ -350,10 +349,10 @@ func (s *Service) storeUrl(u db.URL) error {
wg.Wait()
close(errChan)
for err := range errChan {
if err != nil {
return err
}
select {
case err := <-errChan:
return err
default:
return nil
}
return nil
}

View File

@@ -15,7 +15,6 @@ var log = logrus.New()
func main() {
log.Info("Starting ferurl URL shortener service")
utils.LoadDotEnv()
redisConfig, err := utils.LoadRedisConfig()
if err != nil {

View File

@@ -5,11 +5,8 @@ import (
"os"
"github.com/joho/godotenv"
"github.com/sirupsen/logrus"
)
var log = logrus.New()
type RedisConfig struct {
Host string
Port string
@@ -25,6 +22,15 @@ type DatabaseConfig struct {
Name string
}
func LoadEnv() error {
err := godotenv.Load()
if err != nil {
return fmt.Errorf("failed to load .env file: %w", err)
}
return nil
}
func GetEnv(key string, defaultValue string) string {
value := os.Getenv(key)
if value == "" {
@@ -33,15 +39,6 @@ func GetEnv(key string, defaultValue string) string {
return value
}
func LoadDotEnv() {
if err := godotenv.Load(); err != nil {
// .env file not found, continue using environment variables
log.Info("No .env file found, using environment variables")
}
}
func DatabaseUrl() string {
return fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable", GetEnv("DB_USERNAME", "postgres"),
GetEnv("DB_PASSWORD", "postgres"), GetEnv("DB_HOST", "localhost"), GetEnv("DB_PORT", "5432"), GetEnv("DB_NAME", "postgres"))
@@ -52,6 +49,11 @@ func RedisUrl() string {
}
func LoadRedisConfig() (RedisConfig, error) {
err := LoadEnv()
if err != nil {
return RedisConfig{}, err
}
return RedisConfig{
Host: GetEnv("REDIS_HOST", "localhost"),
Port: GetEnv("REDIS_PORT", "6379"),
@@ -61,6 +63,11 @@ func LoadRedisConfig() (RedisConfig, error) {
}
func LoadDbConfig() (DatabaseConfig, error) {
err := LoadEnv()
if err != nil {
return DatabaseConfig{}, err
}
return DatabaseConfig{
Host: GetEnv("POSTGRES_HOST", "localhost"),
Port: GetEnv("POSTGRES_PORT", "5432"),