Skip to content

Commit d9ff1f2

Browse files
Merge pull request #1 from vinodnextcoder/feature/users
Feature/users
2 parents da94846 + 4830b42 commit d9ff1f2

File tree

6 files changed

+74
-27
lines changed

6 files changed

+74
-27
lines changed

controllers/users/users.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package controllers
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
"github.com/gin-gonic/gin"
7+
"golang-gin-boilerplate/models"
8+
"golang-gin-boilerplate/database"
9+
)
10+
11+
12+
13+
func CreateUser() gin.HandlerFunc {
14+
return func(c *gin.Context) {
15+
var input models.User
16+
if err := c.ShouldBindJSON(&input); err != nil {
17+
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
18+
return
19+
}
20+
fmt.Println(input)
21+
userCreate := models.User(input)
22+
result := database.Db.Create(&userCreate)
23+
if result.Error != nil {
24+
fmt.Println("something went wrong in db query")
25+
return
26+
}
27+
fmt.Println("record inserted successfully ", result.RowsAffected)
28+
c.JSON(http.StatusOK, input)
29+
}
30+
}

database/db.go

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,34 @@
1-
package db
1+
package database
22

33
import (
4-
"fmt"
5-
"os"
6-
"gorm.io/driver/mysql"
7-
"gorm.io/gorm"
4+
"fmt"
5+
"gorm.io/driver/mysql"
6+
"gorm.io/gorm"
87
)
98

10-
//Database struct
11-
type Database struct {
12-
DB *gorm.DB
13-
}
14-
15-
//NewDatabase : intializes and returns mysql db
16-
func NewDatabase() Database {
17-
USER := os.Getenv("DB_USER")
18-
PASS := os.Getenv("DB_PASSWORD")
19-
HOST := os.Getenv("DB_HOST")
20-
DBNAME := os.Getenv("DB_NAME")
9+
const DB_USERNAME = "root"
10+
const DB_PASSWORD = "test"
11+
const DB_NAME = "test"
12+
const DB_HOST = "127.0.0.1"
13+
const DB_PORT = "3306"
2114

22-
URL := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=True&loc=Local", USER, PASS,
23-
HOST, DBNAME)
24-
fmt.Println(URL)
25-
db, err := gorm.Open(mysql.Open(URL))
15+
var Db *gorm.DB
16+
func InitDb() *gorm.DB {
17+
Db = connectDB()
18+
return Db
19+
}
2620

27-
if err != nil {
28-
panic("Failed to connect to database!")
21+
func connectDB() (*gorm.DB) {
22+
var err error
23+
dsn := DB_USERNAME +":"+ DB_PASSWORD +"@tcp"+ "(" + DB_HOST + ":" + DB_PORT +")/" + DB_NAME + "?" + "parseTime=true&loc=Local"
24+
fmt.Println("dsn : ", dsn)
25+
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
2926

30-
}
27+
if err != nil {
28+
fmt.Println("Error connecting to database : error=%v", err)
29+
return nil
30+
}
3131
fmt.Println("Database connection established")
32-
return Database{
33-
DB: db,
34-
}
3532

33+
return db
3634
}

file-log02-04-2024.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{"level":"info","msg":"golang app started","time":"2024-02-04T17:37:25+05:30"}
2+
{"level":"info","msg":"golang app started","time":"2024-02-04T17:43:50+05:30"}
3+
{"level":"info","msg":"golang app started","time":"2024-02-04T17:52:02+05:30"}
4+
{"level":"info","msg":"golang app started","time":"2024-02-04T17:54:14+05:30"}
5+
{"level":"info","msg":"golang app started","time":"2024-02-04T18:00:07+05:30"}
6+
{"level":"info","msg":"golang app started","time":"2024-02-04T18:10:42+05:30"}
7+
{"level":"info","msg":"golang app started","time":"2024-02-04T18:13:59+05:30"}
8+
{"level":"info","msg":"golang app started","time":"2024-02-04T18:21:08+05:30"}

main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ func main() {
1717
if err != nil {
1818
log.Fatal("Error loading .env file")
1919
}
20-
db.NewDatabase()
20+
database.InitDb()
2121
logservice.Info("golang app started")
2222
port := os.Getenv("PORT")
2323
router := gin.Default()
2424
routes.HealthRoute(router)
25+
routes.UserRoute(router)
2526

2627
router.Run("0.0.0.0:" + port)
2728
}
File renamed without changes.

routes/users.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package routes
2+
3+
import (
4+
"github.com/gin-gonic/gin"
5+
users "golang-gin-boilerplate/controllers/users"
6+
)
7+
8+
func UserRoute(router *gin.Engine) {
9+
router.POST("/create", users.CreateUser())
10+
}

0 commit comments

Comments
 (0)