chore: refactor project structure
This commit is contained in:
@@ -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
|
||||
@@ -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
11
internal/models/task.go
Normal 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"`
|
||||
}
|
||||
Reference in New Issue
Block a user