chore: adjust packages

This commit is contained in:
Paul Pan 2022-09-17 09:23:36 +08:00
parent d1367ca1ab
commit c6436125ef
8 changed files with 33 additions and 27 deletions

View File

@ -7,8 +7,9 @@ LDFLAGS += -X main.Version=$(shell cat VERSION)+$(shell git rev-parse HEAD)
LDFLAGS += -s -w LDFLAGS += -s -w
GOBUILD := $(GO) build -o $(PROJECT) -ldflags '$(LDFLAGS)' ./cmd/app GOBUILD := $(GO) build -o $(PROJECT) -ldflags '$(LDFLAGS)' ./cmd/app
GOBIN := $(shell go env GOPATH)/bin
.PHONY: all build clean run dep swagger .PHONY: all build clean run dep swagger fmt
default: all default: all
@ -28,4 +29,7 @@ dep:
swagger: swagger:
go install github.com/swaggo/swag/cmd/swag@latest go install github.com/swaggo/swag/cmd/swag@latest
swag init -g internal/router/api.go -o internal/router/docs $(GOBIN)/swag init -g internal/router/api.go -o internal/router/docs
fmt:
go fmt ./...

View File

@ -7,7 +7,7 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
) )
// randomString godoc // randomString
// @Summary random string // @Summary random string
// @Description generate random string with length = 32 // @Description generate random string with length = 32
// @Tags debug // @Tags debug

View File

@ -4,8 +4,6 @@ import (
"github.com/WHUPRJ/woj-server/internal/e" "github.com/WHUPRJ/woj-server/internal/e"
"github.com/WHUPRJ/woj-server/internal/service/user" "github.com/WHUPRJ/woj-server/internal/service/user"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
) )
type createRequest struct { type createRequest struct {
@ -14,7 +12,7 @@ type createRequest struct {
Password string `form:"password" binding:"required"` Password string `form:"password" binding:"required"`
} }
// Create godoc // Create
// @Summary create a new user // @Summary create a new user
// @Description create a new user // @Description create a new user
// @Accept application/x-www-form-urlencoded // @Accept application/x-www-form-urlencoded
@ -32,18 +30,12 @@ func (h *handler) Create(c *gin.Context) {
return return
} }
hashed, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost) createData := &user.CreateData{
if err != nil { Username: req.Username,
h.log.Debug("bcrypt error", zap.Error(err), zap.String("password", req.Password)) Nickname: req.Nickname,
e.Pong(c, e.InternalError, err.Error()) Password: req.Password,
return
} }
createData := new(user.CreateData)
createData.Nickname = req.Nickname
createData.Username = req.Username
createData.Password = hashed
id, err := h.service.Create(createData) id, err := h.service.Create(createData)
if err != nil { if err != nil {
e.Pong(c, e.DatabaseError, err.Error()) e.Pong(c, e.DatabaseError, err.Error())

View File

@ -1,8 +1,8 @@
package e package e
const ( const (
Fallback Err = 0 Success Err = 0
Success Err = 1 Unknown Err = 1
InternalError Err = 100 InternalError Err = 100
InvalidParameter Err = 101 InvalidParameter Err = 101
NotFound Err = 102 NotFound Err = 102
@ -11,6 +11,7 @@ const (
var msgText = map[Err]string{ var msgText = map[Err]string{
Success: "Success", Success: "Success",
Unknown: "Unknown error",
InternalError: "Internal Error", InternalError: "Internal Error",
InvalidParameter: "Invalid Parameter", InvalidParameter: "Invalid Parameter",
NotFound: "Not Found", NotFound: "Not Found",

View File

@ -33,7 +33,7 @@ func (m *Metrics) Handler() gin.HandlerFunc {
err, ok := errCode.(e.Err) err, ok := errCode.(e.Err)
if !ok { if !ok {
success = false success = false
err = e.Fallback err = e.Unknown
} }
m.Record(method, url, success, status, err, elapsed) m.Record(method, url, success, status, err, elapsed)

View File

@ -1,4 +1,4 @@
package postgresql package model
import ( import (
"gorm.io/gorm" "gorm.io/gorm"

View File

@ -5,6 +5,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/WHUPRJ/woj-server/internal/global" "github.com/WHUPRJ/woj-server/internal/global"
"github.com/WHUPRJ/woj-server/internal/repo/model"
"go.uber.org/zap" "go.uber.org/zap"
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/gorm" "gorm.io/gorm"
@ -80,9 +81,10 @@ func (r *PgRepo) Setup(g *global.Global) {
func (r *PgRepo) migrateDatabase() { func (r *PgRepo) migrateDatabase() {
r.log.Info("Auto Migrating database...") r.log.Info("Auto Migrating database...")
_ = r.db.AutoMigrate(&User{}) _ = r.db.AutoMigrate(&model.User{})
} }
// checkAlive deprecated
func (r *PgRepo) checkAlive(retry int) (*sql.DB, error) { func (r *PgRepo) checkAlive(retry int) (*sql.DB, error) {
if retry <= 0 { if retry <= 0 {
return nil, errors.New("all retries are used up. failed to connect to database") return nil, errors.New("all retries are used up. failed to connect to database")

View File

@ -1,28 +1,35 @@
package user package user
import ( import (
"github.com/WHUPRJ/woj-server/internal/repo/postgresql" "github.com/WHUPRJ/woj-server/internal/repo/model"
"github.com/pkg/errors" "github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
) )
type CreateData struct { type CreateData struct {
Username string Username string
Nickname string Nickname string
Password []byte Password string
} }
func (s *service) Create(data *CreateData) (id uint, err error) { func (s *service) Create(data *CreateData) (id uint, err error) {
model := &postgresql.User{ hashed, err := bcrypt.GenerateFromPassword([]byte(data.Password), bcrypt.DefaultCost)
if err != nil {
s.log.Debug("bcrypt error", zap.Error(err), zap.String("password", data.Password))
return 0, errors.Wrap(err, "bcrypt error")
}
user := &model.User{
UserName: data.Username, UserName: data.Username,
Password: data.Password, Password: hashed,
NickName: data.Nickname, NickName: data.Nickname,
IsEnabled: true, IsEnabled: true,
} }
if err = s.db.Get().Create(model).Error; err != nil { if err := s.db.Get().Create(user).Error; err != nil {
s.log.Debug("create user error", zap.Error(err), zap.Any("data", data)) s.log.Debug("create user error", zap.Error(err), zap.Any("data", data))
return 0, errors.Wrap(err, "create error") return 0, errors.Wrap(err, "create error")
} }
return model.ID, nil return user.ID, nil
} }