Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hidayatarg/go-crud
This a template of GoLang Web API, Using the Gin Framework and GO ORM with PostgreSQL Database
https://github.com/hidayatarg/go-crud
gin-gonic godev golang goorm postgresql webapi
Last synced: 18 days ago
JSON representation
This a template of GoLang Web API, Using the Gin Framework and GO ORM with PostgreSQL Database
- Host: GitHub
- URL: https://github.com/hidayatarg/go-crud
- Owner: hidayatarg
- License: mit
- Created: 2023-05-30T13:32:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-03T21:04:15.000Z (over 1 year ago)
- Last Synced: 2024-06-21T06:26:46.485Z (5 months ago)
- Topics: gin-gonic, godev, golang, goorm, postgresql, webapi
- Language: Go
- Homepage:
- Size: 40 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: Readme.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Web API
This a template of GoLang Web API, using the Gin framework and Go ORM with PostgreSQL Database.
By Hidayat Arghandabi 2023
#### Implementations
Last Update 06/19/2023
- HTTP Request
- Authorization and Authentication
- Middleware (Auth, Logger)
- PostgreSQL DB
- Containerization
- .env
- Migration## How to run using docker container
Run the `docker-compose up` command
## How to run/use this template without docker containers
1. Update DB Connection String in the .env file
2. Create migration located in migrate/migrate.go using `go run migrate/migrate.go`. It will create the posts and users table in the database.
3. Install packages `go mod tidy`
4. You can run the project from main.go using the vscode debugger or `CompileDaemon -command="./go-crud"` the Daemon tool, make sure it is installed.
5. Enjoy this project## Initalization
`go mod init` creating a go mod file (like a node file for nodejs projects)
## Required Packages
1. `go get github.com/githubnemo/CompileDaemon` and install it, so that it can be run as command-line tool `go install github.com/githubnemo/CompileDaemon` watch files for changes and rebuild
2. `go get github.com/joho/godotenv` Easy to load environment variables
3. `go get -u github.com/gin-gonic/gin` Gin Framework for Http Server
4. `go get -u gorm.io/gorm` and `go get -u gorm.io/driver/postgres` Go ORM Library for Go
5. `go get -u github.com/sirupsen/logrus` Package for logging in a Gin application
6. `go get github.com/redis/go-redis/v9` Package for Redis go#### for JWT authentication
5. `go get -u golang.org/x/crypto/bcrypt` for cryptography visit https://pkg.go.dev/golang.org/x/crypto
6. `go get -u github.com/golang-jwt/jwt/v4` jwt package visit https://pkg.go.dev/github.com/golang-jwt/jwt or https://github.com/golang-jwt/jwt## Running Development Server
`CompileDaemon -command="./go-crud"` Run the Daemon and given the package name
## Declaring Models
https://gorm.io/docs/models.html visit the link to see how to declare your models.
we are using the following model```go
type User struct {
gorm.Model
Name string
}
// equals
type User struct {
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
Name string
```to make auto `db.AutoMigrate(&Product{})` visit link https://gorm.io/docs/index.html
as migrate/migrate.go is created run the migration using
`go run migrate/migrate.go`, It will make the posts table in the database.## Go ORM Create
visit the link https://gorm.io/docs/create.html for Go ORM
## Important Commands
- `docker-compose up --build`