chore: refactor project structure
This commit is contained in:
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
|
||||||
|
|
||||||
|
"git.ksdemosapps.com/kylesoda/pgx-learning/internal/models"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@@ -15,14 +15,6 @@ import (
|
|||||||
var pool *pgxpool.Pool
|
var pool *pgxpool.Pool
|
||||||
var ctx = context.Background()
|
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() {
|
func init() {
|
||||||
if err := godotenv.Load(); err != nil {
|
if err := godotenv.Load(); err != nil {
|
||||||
log.Fatal("Error al cargar el archivo .env", err)
|
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"},
|
&cli.BoolFlag{Name: "pending", Aliases: []string{"p"}, Usage: "List only pending tasks"},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
var tasks []Task
|
var tasks []models.Task
|
||||||
var err error
|
var err error
|
||||||
title := "Pending Tasks:"
|
title := "Pending Tasks:"
|
||||||
|
|
||||||
@@ -176,7 +168,7 @@ func createTask(text string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAllTasks() ([]Task, error) {
|
func getAllTasks() ([]models.Task, error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT id, text, completed, created_at, updated_at
|
SELECT id, text, completed, created_at, updated_at
|
||||||
FROM tasks
|
FROM tasks
|
||||||
@@ -189,9 +181,9 @@ func getAllTasks() ([]Task, error) {
|
|||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
var tasks []Task
|
var tasks []models.Task
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var task Task
|
var task models.Task
|
||||||
err := rows.Scan(
|
err := rows.Scan(
|
||||||
&task.Id,
|
&task.Id,
|
||||||
&task.Text,
|
&task.Text,
|
||||||
@@ -265,7 +257,7 @@ func deleteTask(id int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPendingTasks() ([]Task, error) {
|
func getPendingTasks() ([]models.Task, error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT id, text, completed, created_at, updated_at
|
SELECT id, text, completed, created_at, updated_at
|
||||||
FROM tasks
|
FROM tasks
|
||||||
@@ -279,9 +271,9 @@ func getPendingTasks() ([]Task, error) {
|
|||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
var tasks []Task
|
var tasks []models.Task
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var task Task
|
var task models.Task
|
||||||
err := rows.Scan(
|
err := rows.Scan(
|
||||||
&task.Id,
|
&task.Id,
|
||||||
&task.Text,
|
&task.Text,
|
||||||
@@ -302,7 +294,7 @@ func getPendingTasks() ([]Task, error) {
|
|||||||
return tasks, nil
|
return tasks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCompletedTasks() ([]Task, error) {
|
func getCompletedTasks() ([]models.Task, error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT id, text, completed, created_at, updated_at
|
SELECT id, text, completed, created_at, updated_at
|
||||||
FROM tasks
|
FROM tasks
|
||||||
@@ -316,9 +308,9 @@ func getCompletedTasks() ([]Task, error) {
|
|||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
var tasks []Task
|
var tasks []models.Task
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var task Task
|
var task models.Task
|
||||||
err := rows.Scan(
|
err := rows.Scan(
|
||||||
&task.Id,
|
&task.Id,
|
||||||
&task.Text,
|
&task.Text,
|
||||||
@@ -339,7 +331,7 @@ func getCompletedTasks() ([]Task, error) {
|
|||||||
return tasks, nil
|
return tasks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func printTasks(tasks []Task) {
|
func printTasks(tasks []models.Task) {
|
||||||
if len(tasks) == 0 {
|
if len(tasks) == 0 {
|
||||||
fmt.Println("No tasks found")
|
fmt.Println("No tasks found")
|
||||||
return
|
return
|
||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.ksdemosapps.com/kylesoda/pgx-learning/internal/models"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
)
|
)
|
||||||
@@ -40,19 +41,11 @@ func truncateTasksTable(db *pgxpool.Pool, ctx context.Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type Task struct {
|
func generateTasks(count int) []models.Task {
|
||||||
Id int64
|
tasks := make([]models.Task, count)
|
||||||
Text string
|
|
||||||
Completed bool
|
|
||||||
Created_at time.Time
|
|
||||||
Updated_at time.Time
|
|
||||||
}
|
|
||||||
|
|
||||||
func generateTasks(count int) []Task {
|
|
||||||
tasks := make([]Task, count)
|
|
||||||
|
|
||||||
for i := 1; i <= count; i++ {
|
for i := 1; i <= count; i++ {
|
||||||
tasks[i-1] = Task{
|
tasks[i-1] = models.Task{
|
||||||
Text: fmt.Sprintf("random task Nº %v", i),
|
Text: fmt.Sprintf("random task Nº %v", i),
|
||||||
Completed: rand.Float64() > 0.5,
|
Completed: rand.Float64() > 0.5,
|
||||||
}
|
}
|
||||||
@@ -61,7 +54,7 @@ func generateTasks(count int) []Task {
|
|||||||
return tasks
|
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 {
|
if len(tasks) == 0 {
|
||||||
return nil
|
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