diff --git a/Makefile b/Makefile index a4fa332..e36a22c 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +include .env + .PHONY: run test lint migrate-up migrate-down run: diff --git a/cmd/server/main.go b/cmd/server/main.go index 0cff81e..31be593 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,5 +1,31 @@ package main +import ( + "log" + "os" + + "github.com/jmoiron/sqlx" + "github.com/joho/godotenv" + _ "github.com/lib/pq" +) + func main() { - println("Ojsa") + // Load .env file if present (local development). + // In production, Docker Compose injects env vars directly — no .env file + // exists in the container, so godotenv silently does nothing. + _ = godotenv.Load() + + // From this point on, os.Getenv works identically in both environments. + dsn := os.Getenv("DATABASE_URL") + if dsn == "" { + log.Fatal("DATABASE_URL is not set") + } + + db, err := sqlx.Connect("postgres", dsn) + if err != nil { + log.Fatalf("failed to connect to database: %v", err) + } + defer db.Close() + + log.Println("connected to database successfully") } diff --git a/go.mod b/go.mod index 651c580..38c79d2 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect + github.com/joho/godotenv v1.5.1 github.com/lib/pq v1.12.3 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/sys/user v0.3.0 // indirect diff --git a/go.sum b/go.sum index d0a9008..4ee8cc9 100644 --- a/go.sum +++ b/go.sum @@ -36,6 +36,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= diff --git a/migrations/000001_create_tasks_table.up.sql b/migrations/000001_create_tasks_table.up.sql index 2c68b4a..2048548 100644 --- a/migrations/000001_create_tasks_table.up.sql +++ b/migrations/000001_create_tasks_table.up.sql @@ -1 +1,8 @@ -CREATE TABLE tasks (id UUID PK, title TEXT NOT NULL, status TEXT NOT NULL DEFAULT pending, payload JSONB, created_at TIMESTAMPTZ, updated_at TIMESTAMPTZ) \ No newline at end of file +CREATE TABLE tasks ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + title TEXT NOT NULL, + status TEXT NOT NULL DEFAULT 'pending', + payload JSONB, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); \ No newline at end of file