chore: refactor project structure

This commit is contained in:
2026-03-28 14:44:07 -05:00
parent 89f692ac6d
commit a9ca077edd
3 changed files with 28 additions and 32 deletions

View File

@@ -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

View File

@@ -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
}

11
internal/models/task.go Normal file
View File

@@ -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"`
}