From 3dacf06005600d90b143af7ec62db42160db61d8 Mon Sep 17 00:00:00 2001 From: Leyla Becker Date: Mon, 21 Apr 2025 17:34:39 -0500 Subject: [PATCH] made db module --- internal/api/routes.go | 33 ---------------------- internal/application/application.go | 22 +++++++++++++++ internal/application/handlers.go | 11 ++++++++ internal/application/routes.go | 18 ++++++++++++ internal/application/services.go | 5 ++++ internal/{ => application}/utils/logger.go | 0 internal/database/claims.go | 10 +++++++ internal/database/claims_dao.go | 11 -------- internal/database/database.go | 23 ++++++++++----- internal/handlers/claims_handler.go | 24 ---------------- internal/services/claims_service.go | 9 ------ internal/utils/io.go | 15 ---------- 12 files changed, 82 insertions(+), 99 deletions(-) delete mode 100644 internal/api/routes.go create mode 100644 internal/application/application.go create mode 100644 internal/application/handlers.go create mode 100644 internal/application/routes.go create mode 100644 internal/application/services.go rename internal/{ => application}/utils/logger.go (100%) create mode 100644 internal/database/claims.go delete mode 100644 internal/database/claims_dao.go delete mode 100644 internal/handlers/claims_handler.go delete mode 100644 internal/services/claims_service.go delete mode 100644 internal/utils/io.go diff --git a/internal/api/routes.go b/internal/api/routes.go deleted file mode 100644 index 621272f..0000000 --- a/internal/api/routes.go +++ /dev/null @@ -1,33 +0,0 @@ -package api - -import ( - "vegan-barcode/internal/database" - "vegan-barcode/internal/utils" - - "github.com/gin-gonic/gin" -) - -db := nil -log := nil - -func Start() error { - router := gin.Default() - - db = database.InitializeDatabase() - log = utils.InitializeLogger() - - s.bindRoutes(router) - router.Run("localhost:8080") -} - -// TODO: Service should get moved somewhere else. Not sure on naming. -func bindRoutes(router *gin.Engine) { - - // router.GET("/test", s.runTest) - - router.Group("/claims") - { - router.GET("/:barcode", handlers.GetClaimsHandler) - // router.POST("/:barcode", s.) - } -} diff --git a/internal/application/application.go b/internal/application/application.go new file mode 100644 index 0000000..7af28a6 --- /dev/null +++ b/internal/application/application.go @@ -0,0 +1,22 @@ +package application + +import ( + "vegan-barcode/internal/application/utils" + "vegan-barcode/internal/database" + + "github.com/sirupsen/logrus" +) + +type Application struct { + db database.Database + log *logrus.Logger +} + +func Start() { + application := Application{ + db: database.InitializeDatabase(), + log: utils.InitializeLogger(), + } + + application.bindRoutes() +} diff --git a/internal/application/handlers.go b/internal/application/handlers.go new file mode 100644 index 0000000..4f5d673 --- /dev/null +++ b/internal/application/handlers.go @@ -0,0 +1,11 @@ +package application + +import "github.com/gin-gonic/gin" + +func (application *Application) GetClaimsHandler(c *gin.Context) { + system := c.DefaultQuery("system", "upc") + barcode := c.Query("barcode") + + application.GetClaims(system, barcode) + // TODO: 404 when claims are not found +} diff --git a/internal/application/routes.go b/internal/application/routes.go new file mode 100644 index 0000000..22d8784 --- /dev/null +++ b/internal/application/routes.go @@ -0,0 +1,18 @@ +package application + +import ( + "github.com/gin-gonic/gin" +) + +// TODO: Service should get moved somewhere else. Not sure on naming. +func (application *Application) bindRoutes() { + + router := gin.Default() + + router.Group("/claims") + { + router.GET("/:barcode", application.GetClaimsHandler) + } + + router.Run("localhost:8080") +} diff --git a/internal/application/services.go b/internal/application/services.go new file mode 100644 index 0000000..bb47226 --- /dev/null +++ b/internal/application/services.go @@ -0,0 +1,5 @@ +package application + +func (application *Application) GetClaims(system string, barcode string) { + application.db.FindClaimsByBarcode(system, barcode) +} diff --git a/internal/utils/logger.go b/internal/application/utils/logger.go similarity index 100% rename from internal/utils/logger.go rename to internal/application/utils/logger.go diff --git a/internal/database/claims.go b/internal/database/claims.go new file mode 100644 index 0000000..5c366be --- /dev/null +++ b/internal/database/claims.go @@ -0,0 +1,10 @@ +package database + +import ( + "context" +) + +func (database *Database) FindClaimsByBarcode(system string, barcode string) { + ctx := context.Background() + database.db.Exec(ctx, "SELECT * FROM user_claims") +} diff --git a/internal/database/claims_dao.go b/internal/database/claims_dao.go deleted file mode 100644 index a2eceb2..0000000 --- a/internal/database/claims_dao.go +++ /dev/null @@ -1,11 +0,0 @@ -package database - -import ( - "context" -) - -func FindClaimsByBarcode(system string, barcode string) { - ctx := context.Background() - api.db.Exec("SELECT * FROM user_claims") - -} diff --git a/internal/database/database.go b/internal/database/database.go index a1489cc..bd09f42 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -16,8 +16,12 @@ var UserClaimsTable = ksql.NewTable("user_claims", "id") var AutomatedClaimsTable = ksql.NewTable("automated_claims", "id") +type Database struct { + db *ksql.DB +} + // initializeDatabase creates the database and calls createTables. -func InitializeDatabase() *ksql.DB { +func InitializeDatabase() Database { ctx := context.Background() // urlExample := "postgres://username:password@localhost:5432/database_name" @@ -30,13 +34,18 @@ func InitializeDatabase() *ksql.DB { if err != nil { log.Fatalf("Unable to connect to database: %v\n", err) } - createTables(ctx, db) - return &db + + database := Database{ + db: &db, + } + + database.createTables(ctx) + return database } // createTables adds the product, automated_claims, and user_claims tables to the initialized database. -func createTables(ctx context.Context, db ksql.DB) { - _, err := db.Exec(ctx, ` +func (database *Database) createTables(ctx context.Context) { + _, err := database.db.Exec(ctx, ` CREATE TABLE IF NOT EXISTS products ( id BIGSERIAL PRIMARY KEY, system TEXT, @@ -47,7 +56,7 @@ func createTables(ctx context.Context, db ksql.DB) { if err != nil { log.Fatal(err) } - _, err = db.Exec(ctx, ` + _, err = database.db.Exec(ctx, ` CREATE TABLE IF NOT EXISTS user_claims ( id BIGSERIAL PRIMARY KEY, product_id INTEGER, @@ -66,7 +75,7 @@ func createTables(ctx context.Context, db ksql.DB) { if err != nil { log.Fatal(err) } - _, err = db.Exec(ctx, ` + _, err = database.db.Exec(ctx, ` CREATE TABLE IF NOT EXISTS automated_claims ( id BIGSERIAL PRIMARY KEY, product_id INTEGER, diff --git a/internal/handlers/claims_handler.go b/internal/handlers/claims_handler.go deleted file mode 100644 index feeb05c..0000000 --- a/internal/handlers/claims_handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package handlers - -import ( - "net/http" - - "github.com/gin-gonic/gin" - "github.com/labstack/gommon/log" - - "vegan-barcode/internal/services" -) - -func runTest(c *gin.Context) { - queryParam := c.Param("id") - log.Debug("Test was successful.") - c.JSON(http.StatusOK, gin.H{"message": "Hello World!", "query_param": queryParam}) -} - -func GetClaimsHandler(c *gin.Context) { - system := c.DefaultQuery("system", "upc") - barcode := c.Query("barcode") - - claims := services.GetClaims(system, barcode) - // TODO: 404 when claims are not found -} diff --git a/internal/services/claims_service.go b/internal/services/claims_service.go deleted file mode 100644 index 272d68f..0000000 --- a/internal/services/claims_service.go +++ /dev/null @@ -1,9 +0,0 @@ -package services - -import ( - "vegan-barcode/internal/database" -) - -func GetClaims(system string, barcode string) { - database.FindClaimsByBarcode(system, barcode) -} diff --git a/internal/utils/io.go b/internal/utils/io.go deleted file mode 100644 index ab668d4..0000000 --- a/internal/utils/io.go +++ /dev/null @@ -1,15 +0,0 @@ -package utils - -import ( - "github.com/sirupsen/logrus" - "github.com/vingarcia/ksql" -) - -// TODO Figure out where this should be -// This exists so that you don't have to individually pass around the logger and database. -type ApiService struct { - db *ksql.DB - log *logrus.Logger -} - -var s *ApiService