From 275fe53c90694644cb42267f08bebe240c1c09ba Mon Sep 17 00:00:00 2001 From: log101 Date: Thu, 4 Jul 2024 20:12:39 +0300 Subject: [PATCH] feat: add db init and access functions --- .gitignore | 2 ++ db/db.go | 30 ++++++++++++++++++++++++++++++ go.mod | 6 ++++++ go.sum | 12 ++++++++++++ models/KonuluKonum.go | 5 ++++- server.go | 24 ++++++++++++++++++++++++ 6 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 db/db.go diff --git a/.gitignore b/.gitignore index 42b3ec5..2f117dd 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ go.work TODO +.env +test.db diff --git a/db/db.go b/db/db.go new file mode 100644 index 0000000..bd64205 --- /dev/null +++ b/db/db.go @@ -0,0 +1,30 @@ +package db + +import ( + "log101/konulu-konum-backend/models" + "os" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +var db *gorm.DB +var err error + +func InitDB() { + dbPath := os.Getenv("DB_PATH") + db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{}) + if err != nil { + panic("failed to create database") + } + + db.AutoMigrate(&models.KonuluKonum{}) +} + +func GetDB() *gorm.DB { + return db +} + +func SetDB(database *gorm.DB) { + db = database +} diff --git a/go.mod b/go.mod index d536d07..042002d 100644 --- a/go.mod +++ b/go.mod @@ -11,13 +11,19 @@ require ( require ( github.com/andybalholm/brotli v1.0.5 // indirect github.com/google/uuid v1.5.0 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/joho/godotenv v1.5.1 // indirect github.com/klauspost/compress v1.17.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.51.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect golang.org/x/sys v0.15.0 // indirect + gorm.io/driver/sqlite v1.5.6 // indirect + gorm.io/gorm v1.25.10 // indirect ) diff --git a/go.sum b/go.sum index 8fa18bd..2de861c 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,12 @@ github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/h2non/bimg v1.1.9 h1:WH20Nxko9l/HFm4kZCA3Phbgu2cbHvYzxwxn9YROEGg= github.com/h2non/bimg v1.1.9/go.mod h1:R3+UiYwkK4rQl6KVFTOFJHitgLbZXBZNFh2cv3AEbp8= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -17,6 +23,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -29,3 +37,7 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= +gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= +gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s= +gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= diff --git a/models/KonuluKonum.go b/models/KonuluKonum.go index 070e0de..bf62f6f 100644 --- a/models/KonuluKonum.go +++ b/models/KonuluKonum.go @@ -1,10 +1,13 @@ package models +import "gorm.io/gorm" + type KonuluKonum struct { + gorm.Model URI string ImageURI string Loc string AuthorName string Description string - UnlockedCounter string + UnlockedCounter int } diff --git a/server.go b/server.go index 9d22dbb..1a12204 100644 --- a/server.go +++ b/server.go @@ -3,6 +3,10 @@ package main import ( "fmt" "io" + "log" + DB "log101/konulu-konum-backend/db" + "log101/konulu-konum-backend/models" + "os" "strings" @@ -11,9 +15,20 @@ import ( "github.com/gofiber/fiber/v2/middleware/compress" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/h2non/bimg" + "github.com/joho/godotenv" ) func main() { + // Load environment variables + err := godotenv.Load() + if err != nil { + log.Println("Error loading .env file") + } + + // initialize db + DB.InitDB() + db := DB.GetDB() + app := fiber.New() app.Use(logger.New()) app.Use(compress.New(compress.Config{ @@ -71,6 +86,15 @@ func main() { fmt.Println(imageUri) + db.Create(&models.KonuluKonum{URI: "sample", ImageURI: imageUri, Loc: "sample", AuthorName: "sample", Description: "sample", UnlockedCounter: 0}) + + var konuluKonum models.KonuluKonum + db.First(&konuluKonum) + + fmt.Println(konuluKonum.ImageURI) + + db.Delete(&konuluKonum) + return c.SendStatus(fiber.StatusOK) }