Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Golang
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad, Hammad
Golang
Commits
917ea9c4
Commit
917ea9c4
authored
Mar 03, 2023
by
Muhammad, Hammad
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
used sqllite DB on REST
parent
491009e5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
68 additions
and
45 deletions
+68
-45
go.mod
go.mod
+9
-1
go.sum
go.sum
+12
-0
main.go
main.go
+47
-44
test.db
test.db
+0
-0
No files found.
go.mod
View file @
917ea9c4
...
...
@@ -2,19 +2,27 @@ module hello_world
go 1.20
require (
github.com/gin-gonic/gin v1.9.0
gorm.io/driver/sqlite v1.4.4
gorm.io/gorm v1.24.6
)
require (
github.com/bytedance/sonic v1.8.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gin-gonic/gin v1.9.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.11.2 // indirect
github.com/goccy/go-json v0.10.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/mattn/go-sqlite3 v1.14.15 // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
...
...
go.sum
View file @
917ea9c4
...
...
@@ -21,6 +21,11 @@ github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
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.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
...
...
@@ -29,6 +34,8 @@ github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
...
...
@@ -68,4 +75,9 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/sqlite v1.4.4 h1:gIufGoR0dQzjkyqDyYSCvsYR6fba1Gw5YKDqKeChxFc=
gorm.io/driver/sqlite v1.4.4/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2ecI=
gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
gorm.io/gorm v1.24.6 h1:wy98aq9oFEetsc4CAbKD2SoBCdMzsbSIvSUUFJuHi5s=
gorm.io/gorm v1.24.6/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
main.go
View file @
917ea9c4
...
...
@@ -4,35 +4,58 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func
main
()
{
db
,
err
:=
gorm
.
Open
(
sqlite
.
Open
(
"test.db"
),
&
gorm
.
Config
{})
if
err
!=
nil
{
panic
(
"failed to connect database"
)
}
db
.
AutoMigrate
(
&
Book
{})
handler
:=
newHandler
(
db
)
r
:=
gin
.
New
()
r
.
GET
(
"/books"
,
listBooksHandler
)
r
.
POST
(
"/books"
,
createBookHandler
)
r
.
DELETE
(
"/books/:id"
,
deleteBookHandler
)
r
.
GET
(
"/books"
,
handler
.
listBooksHandler
)
r
.
POST
(
"/books"
,
handler
.
createBookHandler
)
r
.
DELETE
(
"/books/:id"
,
handler
.
deleteBookHandler
)
r
.
Run
()
}
type
Handler
struct
{
db
*
gorm
.
DB
}
func
newHandler
(
db
*
gorm
.
DB
)
*
Handler
{
return
&
Handler
{
db
}
}
type
Book
struct
{
ID
string
`json:"id"`
Title
string
`json:"title"`
Author
string
`json:"author"`
}
var
books
=
[]
Book
{
{
ID
:
"1"
,
Title
:
"Harry Potter"
,
Author
:
"J. K. Rowling"
},
{
ID
:
"2"
,
Title
:
"The Lord of the Rings"
,
Author
:
"J. R. R. Tolkien"
},
{
ID
:
"3"
,
Title
:
"The Wizard of Oz"
,
Author
:
"L. Frank Baum"
},
}
func
(
h
*
Handler
)
listBooksHandler
(
c
*
gin
.
Context
)
{
var
books
[]
Book
if
result
:=
h
.
db
.
Find
(
&
books
);
result
.
Error
!=
nil
{
c
.
JSON
(
http
.
StatusInternalServerError
,
gin
.
H
{
"error"
:
result
.
Error
.
Error
(),
})
return
}
func
listBooksHandler
(
c
*
gin
.
Context
)
{
c
.
JSON
(
http
.
StatusOK
,
books
)
c
.
JSON
(
http
.
StatusOK
,
&
books
)
}
func
createBookHandler
(
c
*
gin
.
Context
)
{
func
(
h
*
Handler
)
createBookHandler
(
c
*
gin
.
Context
)
{
var
book
Book
if
err
:=
c
.
ShouldBindJSON
(
&
book
);
err
!=
nil
{
...
...
@@ -42,45 +65,25 @@ func createBookHandler(c *gin.Context) {
return
}
books
=
append
(
books
,
book
)
if
result
:=
h
.
db
.
Create
(
&
book
);
result
.
Error
!=
nil
{
c
.
JSON
(
http
.
StatusInternalServerError
,
gin
.
H
{
"error"
:
result
.
Error
.
Error
(),
})
return
}
c
.
JSON
(
http
.
StatusCreated
,
book
)
c
.
JSON
(
http
.
StatusCreated
,
&
book
)
}
func
deleteBookHandler
(
c
*
gin
.
Context
)
{
func
(
h
*
Handler
)
deleteBookHandler
(
c
*
gin
.
Context
)
{
id
:=
c
.
Param
(
"id"
)
for
i
,
a
:=
range
books
{
if
a
.
ID
==
id
{
books
=
append
(
books
[
:
i
],
books
[
i
+
1
:
]
...
)
break
}
if
result
:=
h
.
db
.
Delete
(
&
Book
{},
id
);
result
.
Error
!=
nil
{
c
.
JSON
(
http
.
StatusInternalServerError
,
gin
.
H
{
"error"
:
result
.
Error
.
Error
(),
})
return
}
c
.
Status
(
http
.
StatusNoContent
)
}
// func main() {
// r := gin.New()
// r.GET("/books", func(c *gin.Context) {
// c.JSON(http.StatusOK, books)
// })
// r.POST("/books", func(c *gin.Context) {
// var book Book
// if err := c.ShouldBindJSON(&book); err != nil {
// c.JSON(http.StatusBadRequest, gin.H{
// "error": err.Error(),
// })
// return
// }
// books = append(books, book)
// c.JSON(http.StatusCreated, book)
// })
// r.Run()
// }
test.db
0 → 100644
View file @
917ea9c4
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment