From a9ca077edde2c1b6e50841119f70fcc39a7213b1 Mon Sep 17 00:00:00 2001 From: Kylesoda <249518290+kylesoda@users.noreply.github.com> Date: Sat, 28 Mar 2026 14:44:07 -0500 Subject: [PATCH] chore: refactor project structure --- main.go => cmd/main.go | 32 +++++++------------ .../create-tasks.fixture.go | 17 +++------- internal/models/task.go | 11 +++++++ 3 files changed, 28 insertions(+), 32 deletions(-) rename main.go => cmd/main.go (93%) rename {scripts/fixtures => fixtures}/create-tasks.fixture.go (93%) create mode 100644 internal/models/task.go diff --git a/main.go b/cmd/main.go similarity index 93% rename from main.go rename to cmd/main.go index c8cd0a0..fa83bac 100644 --- a/main.go +++ b/cmd/main.go @@ -5,8 +5,8 @@ import ( "fmt" "log" "os" - "time" + "git.ksdemosapps.com/kylesoda/pgx-learning/internal/models" "github.com/jackc/pgx/v5/pgxpool" "github.com/joho/godotenv" "github.com/urfave/cli/v2" @@ -15,14 +15,6 @@ import ( var pool *pgxpool.Pool var ctx = context.Background() -type Task struct { - Id int `json:"id"` - Text string `json:"text"` - Completed bool `json:"completed"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} - func init() { if err := godotenv.Load(); err != nil { log.Fatal("Error al cargar el archivo .env", err) @@ -78,7 +70,7 @@ func main() { &cli.BoolFlag{Name: "pending", Aliases: []string{"p"}, Usage: "List only pending tasks"}, }, Action: func(c *cli.Context) error { - var tasks []Task + var tasks []models.Task var err error title := "Pending Tasks:" @@ -176,7 +168,7 @@ func createTask(text string) error { return nil } -func getAllTasks() ([]Task, error) { +func getAllTasks() ([]models.Task, error) { sql := ` SELECT id, text, completed, created_at, updated_at FROM tasks @@ -189,9 +181,9 @@ func getAllTasks() ([]Task, error) { } defer rows.Close() - var tasks []Task + var tasks []models.Task for rows.Next() { - var task Task + var task models.Task err := rows.Scan( &task.Id, &task.Text, @@ -265,7 +257,7 @@ func deleteTask(id int) error { return nil } -func getPendingTasks() ([]Task, error) { +func getPendingTasks() ([]models.Task, error) { sql := ` SELECT id, text, completed, created_at, updated_at FROM tasks @@ -279,9 +271,9 @@ func getPendingTasks() ([]Task, error) { } defer rows.Close() - var tasks []Task + var tasks []models.Task for rows.Next() { - var task Task + var task models.Task err := rows.Scan( &task.Id, &task.Text, @@ -302,7 +294,7 @@ func getPendingTasks() ([]Task, error) { return tasks, nil } -func getCompletedTasks() ([]Task, error) { +func getCompletedTasks() ([]models.Task, error) { sql := ` SELECT id, text, completed, created_at, updated_at FROM tasks @@ -316,9 +308,9 @@ func getCompletedTasks() ([]Task, error) { } defer rows.Close() - var tasks []Task + var tasks []models.Task for rows.Next() { - var task Task + var task models.Task err := rows.Scan( &task.Id, &task.Text, @@ -339,7 +331,7 @@ func getCompletedTasks() ([]Task, error) { return tasks, nil } -func printTasks(tasks []Task) { +func printTasks(tasks []models.Task) { if len(tasks) == 0 { fmt.Println("No tasks found") return diff --git a/scripts/fixtures/create-tasks.fixture.go b/fixtures/create-tasks.fixture.go similarity index 93% rename from scripts/fixtures/create-tasks.fixture.go rename to fixtures/create-tasks.fixture.go index ecb24ac..25cfa1e 100644 --- a/scripts/fixtures/create-tasks.fixture.go +++ b/fixtures/create-tasks.fixture.go @@ -9,6 +9,7 @@ import ( "strings" "time" + "git.ksdemosapps.com/kylesoda/pgx-learning/internal/models" "github.com/jackc/pgx/v5/pgxpool" "github.com/joho/godotenv" ) @@ -40,19 +41,11 @@ func truncateTasksTable(db *pgxpool.Pool, ctx context.Context) error { return nil } -type Task struct { - Id int64 - Text string - Completed bool - Created_at time.Time - Updated_at time.Time -} - -func generateTasks(count int) []Task { - tasks := make([]Task, count) +func generateTasks(count int) []models.Task { + tasks := make([]models.Task, count) for i := 1; i <= count; i++ { - tasks[i-1] = Task{ + tasks[i-1] = models.Task{ Text: fmt.Sprintf("random task NÂș %v", i), Completed: rand.Float64() > 0.5, } @@ -61,7 +54,7 @@ func generateTasks(count int) []Task { return tasks } -func bulkInsertTasks(db *pgxpool.Pool, ctx context.Context, tasks []Task) error { +func bulkInsertTasks(db *pgxpool.Pool, ctx context.Context, tasks []models.Task) error { if len(tasks) == 0 { return nil } diff --git a/internal/models/task.go b/internal/models/task.go new file mode 100644 index 0000000..c0da30e --- /dev/null +++ b/internal/models/task.go @@ -0,0 +1,11 @@ +package models + +import "time" + +type Task struct { + Id int `json:"id"` + Text string `json:"text"` + Completed bool `json:"completed"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +}