From d7b4da6920521556cfc6ac428386387f5216e6b3 Mon Sep 17 00:00:00 2001 From: neteralex Date: Thu, 11 May 2023 14:26:22 +0800 Subject: [PATCH] modified --- biz/dal/sqlite/generic.go | 35 +++++++---------- biz/handler/comment/comment_service.go | 2 +- biz/handler/post/post_service.go | 12 ++++-- biz/middleware/jwt.go | 2 +- biz/middleware/logger.go | 20 ++++++++++ biz/model/comment/comment.go | 8 ++-- biz/model/post/post.go | 54 ++++++++++++++++++++++++-- biz/pack/permission.go | 2 +- biz/router/user/middleware.go | 4 +- go.mod | 2 + go.sum | 17 ++++++++ idl/post.thrift | 1 + main.go | 15 ++++++- 13 files changed, 134 insertions(+), 40 deletions(-) create mode 100644 biz/middleware/logger.go diff --git a/biz/dal/sqlite/generic.go b/biz/dal/sqlite/generic.go index e5bb4a2..01ce958 100644 --- a/biz/dal/sqlite/generic.go +++ b/biz/dal/sqlite/generic.go @@ -31,26 +31,7 @@ func Count[T comment.Comment | post.Post | user.User | stat.Stat]() (int64, erro return total, nil } -func Query[T comment.Comment | post.Post | user.User | stat.Stat](query map[string]interface{}) ([]*T, int64, error) { - var t T - db := DB.Model(t) - if query != nil { - for k, v := range query { - db = db.Or(k, v) - } - } - var total int64 - if err := db.Count(&total).Error; err != nil { - return nil, 0, err - } - var res []*T - if err := db.Find(&res).Error; err != nil { - return nil, 0, err - } - return res, total, nil -} - -func QueryBasic[T comment.Comment | post.Post | user.User | stat.Stat](where string, value string) ([]*T, int64, error) { +func Query[T comment.Comment | post.Post | user.User | stat.Stat](where string, value string) ([]*T, int64, error) { var t T db := DB.Model(t) if where != "" && value != "" { @@ -108,6 +89,20 @@ func QueryAll[T comment.Comment | post.Post | user.User | stat.Stat](page, pageS return res, total, nil } +func QueryPreloadAll[T comment.Comment | post.Post | user.User | stat.Stat](page, pageSize int64, preload string) ([]*T, int64, error) { + var t T + db := DB.Model(t) + var total int64 + if err := db.Count(&total).Error; err != nil { + return nil, 0, err + } + var res []*T + if err := db.Preload(preload).Limit(int(pageSize)).Offset(int(pageSize * (page - 1))).Find(&res).Error; err != nil { + return nil, 0, err + } + return res, total, nil +} + func QueryAllExclude[T comment.Comment | post.Post | user.User | stat.Stat](exclude string, page, pageSize int64) ([]*T, int64, error) { var t T db := DB.Model(t) diff --git a/biz/handler/comment/comment_service.go b/biz/handler/comment/comment_service.go index 735c26b..3a4f96d 100644 --- a/biz/handler/comment/comment_service.go +++ b/biz/handler/comment/comment_service.go @@ -75,7 +75,7 @@ func QueryComment(ctx context.Context, c *app.RequestContext) { c.JSON(consts.StatusOK, &comment.QueryCommentResponse{Code: comment.Code_ParamInvalid, Msg: err.Error()}) return } - comments, total, err := sqlite.QueryBasic[comment.Comment]("post_id = ?", *req.ID) + comments, total, err := sqlite.Query[comment.Comment]("post_id = ?", *req.ID) if err != nil { c.JSON(consts.StatusOK, &comment.QueryCommentResponse{Code: comment.Code_DbError, Msg: err.Error()}) return diff --git a/biz/handler/post/post_service.go b/biz/handler/post/post_service.go index d05c69c..53ec18f 100644 --- a/biz/handler/post/post_service.go +++ b/biz/handler/post/post_service.go @@ -38,8 +38,12 @@ func UpdatePost(ctx context.Context, c *app.RequestContext) { p.Date = req.Date p.Tags = req.Tags p.ImageURL = req.ImageURL - - if err = sqlite.Update[post.Post](p.ID, p); err != nil { + id, err := strconv.ParseInt(req.ID, 10, 64) + if err != nil { + c.JSON(http.StatusOK, &post.UpdatePostResponse{Code: post.Code_ParamInvalid, Msg: err.Error()}) + return + } + if err = sqlite.Update[post.Post](id, p); err != nil { c.JSON(http.StatusOK, &post.UpdatePostResponse{Code: post.Code_DbError, Msg: err.Error()}) return } @@ -82,9 +86,9 @@ func QueryPost(ctx context.Context, c *app.RequestContext) { var posts []*post.Post var total int64 if req.ID == "0" { - posts, total, err = sqlite.QueryAll[post.Post](req.Page, req.PageSize) + posts, total, err = sqlite.QueryPreloadAll[post.Post](req.Page, req.PageSize, "Comments") } else { - posts, total, err = sqlite.QueryBasic[post.Post]("id = ?", req.ID) + posts, total, err = sqlite.Query[post.Post]("id = ?", req.ID) } if err != nil { c.JSON(consts.StatusOK, &post.QueryPostResponse{Code: post.Code_DbError, Msg: err.Error()}) diff --git a/biz/middleware/jwt.go b/biz/middleware/jwt.go index 66b0af4..2ba95f3 100644 --- a/biz/middleware/jwt.go +++ b/biz/middleware/jwt.go @@ -47,7 +47,7 @@ func AuthInit(secretKey string) *jwt.HertzJWTMiddleware { //Check if username matches password if pack.CheckAuthValid(username, password) { - u, _, err := sqlite.QueryBasic[user.User]("username = ?", username) + u, _, err := sqlite.Query[user.User]("username = ?", username) if err != nil { return User{}, nil } diff --git a/biz/middleware/logger.go b/biz/middleware/logger.go new file mode 100644 index 0000000..f50d7a4 --- /dev/null +++ b/biz/middleware/logger.go @@ -0,0 +1,20 @@ +package middleware + +import ( + "context" + "github.com/cloudwego/hertz/pkg/app" + "github.com/cloudwego/hertz/pkg/common/hlog" + "time" +) + +func AccessLog() app.HandlerFunc { + return func(c context.Context, ctx *app.RequestContext) { + start := time.Now() + ctx.Next(c) + end := time.Now() + latency := end.Sub(start).Microseconds + hlog.CtxTracef(c, "status=%d cost=%d method=%s full_path=%s client_ip=%s host=%s", + ctx.Response.StatusCode(), latency, + ctx.Request.Header.Method(), ctx.Request.URI().PathOriginal(), ctx.ClientIP(), ctx.Request.Host()) + } +} diff --git a/biz/model/comment/comment.go b/biz/model/comment/comment.go index 3584c58..502f760 100644 --- a/biz/model/comment/comment.go +++ b/biz/model/comment/comment.go @@ -475,7 +475,7 @@ func (p *Comment) String() string { type CreateCommentRequest struct { Author string `thrift:"author,1" form:"author" json:"author" vd:"(len($)>0)"` Content string `thrift:"content,2" form:"content" json:"content" vd:"(len($)>0)"` - PostID int64 `thrift:"postID,3" form:"postID" json:"postID"` + PostID int64 `thrift:"postID,3" form:"postID" form:"postID" json:"postID"` UserID int64 `thrift:"userID,4" form:"userID" json:"userID"` Date string `thrift:"date,5" form:"date" json:"date"` } @@ -977,9 +977,9 @@ func (p *CreateCommentResponse) String() string { } type QueryCommentRequest struct { - ID *string `thrift:"id,1,optional" form:"id" json:"id,omitempty" query:"id"` + ID *string `thrift:"id,1,optional" form:"id" form:"id" json:"id,omitempty" query:"id"` Page int64 `thrift:"page,2" form:"page" json:"page" query:"page" vd:"$ > 0"` - PageSize int64 `thrift:"page_size,3" form:"page_size" form:"page_size" json:"page_size" query:"page_size" vd:"$ > 0"` + PageSize int64 `thrift:"page_size,3" form:"page_size" json:"page_size" query:"page_size" vd:"$ > 0"` } func NewQueryCommentRequest() *QueryCommentRequest { @@ -1834,7 +1834,7 @@ type UpdateCommentRequest struct { Author string `thrift:"author,1" form:"author" json:"author" vd:"(len($)>0)"` Content string `thrift:"content,2" form:"content" json:"content" vd:"(len($)>0)"` ID int64 `thrift:"id,3" form:"id" form:"id" json:"id" path:"id"` - Cid int64 `thrift:"cid,4" form:"cid" json:"cid"` + Cid int64 `thrift:"cid,4" form:"cid" form:"cid" json:"cid"` UserID int64 `thrift:"userID,5" form:"userID" json:"userID"` Date string `thrift:"date,6" form:"date" json:"date"` } diff --git a/biz/model/post/post.go b/biz/model/post/post.go index ad2f314..7a491a5 100644 --- a/biz/model/post/post.go +++ b/biz/model/post/post.go @@ -710,7 +710,7 @@ type CreatePostRequest struct { Author string `thrift:"author,3" form:"author" json:"author" vd:"(len($)>0)"` Date string `thrift:"date,4" form:"date" json:"date" vd:"(len($)>0)"` Tags string `thrift:"tags,5" form:"tags" json:"tags"` - ImageURL string `thrift:"image_url,6" form:"image_url" form:"image_url" json:"image_url"` + ImageURL string `thrift:"image_url,6" form:"image_url" json:"image_url"` } func NewCreatePostRequest() *CreatePostRequest { @@ -1257,7 +1257,7 @@ func (p *CreatePostResponse) String() string { type QueryPostRequest struct { ID string `thrift:"id,1" form:"id" json:"id" path:"id" query:"id"` Page int64 `thrift:"page,2" form:"page" json:"page" query:"page" vd:"$ > 0"` - PageSize int64 `thrift:"page_size,3" form:"page_size" form:"page_size" json:"page_size" query:"page_size" vd:"$ > 0"` + PageSize int64 `thrift:"page_size,3" form:"page_size" json:"page_size" query:"page_size" vd:"$ > 0"` } func NewQueryPostRequest() *QueryPostRequest { @@ -2417,11 +2417,12 @@ func (p *DeletePostResponse) String() string { type UpdatePostRequest struct { Title string `thrift:"title,1" form:"title" json:"title" vd:"(len($)>0)"` - Content string `thrift:"content,2" form:"content" json:"content"` - Author string `thrift:"author,3" form:"author" json:"author" vd:"(len($)>0)"` + Content string `thrift:"content,2" form:"content" form:"content" json:"content"` + Author string `thrift:"author,3" form:"author" form:"author" json:"author" vd:"(len($)>0)"` Date string `thrift:"date,4" form:"date" form:"date" json:"date" vd:"(len($)>0)"` Tags string `thrift:"tags,5" form:"tags" json:"tags"` ImageURL string `thrift:"image_url,6" form:"image_url" json:"image_url"` + ID string `thrift:"id,7" form:"id" json:"id" path:"id"` } func NewUpdatePostRequest() *UpdatePostRequest { @@ -2452,6 +2453,10 @@ func (p *UpdatePostRequest) GetImageURL() (v string) { return p.ImageURL } +func (p *UpdatePostRequest) GetID() (v string) { + return p.ID +} + var fieldIDToName_UpdatePostRequest = map[int16]string{ 1: "title", 2: "content", @@ -2459,6 +2464,7 @@ var fieldIDToName_UpdatePostRequest = map[int16]string{ 4: "date", 5: "tags", 6: "image_url", + 7: "id", } func (p *UpdatePostRequest) Read(iprot thrift.TProtocol) (err error) { @@ -2540,6 +2546,16 @@ func (p *UpdatePostRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } } + case 7: + if fieldTypeId == thrift.STRING { + if err = p.ReadField7(iprot); err != nil { + goto ReadFieldError + } + } else { + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -2624,6 +2640,15 @@ func (p *UpdatePostRequest) ReadField6(iprot thrift.TProtocol) error { return nil } +func (p *UpdatePostRequest) ReadField7(iprot thrift.TProtocol) error { + if v, err := iprot.ReadString(); err != nil { + return err + } else { + p.ID = v + } + return nil +} + func (p *UpdatePostRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 if err = oprot.WriteStructBegin("UpdatePostRequest"); err != nil { @@ -2654,6 +2679,10 @@ func (p *UpdatePostRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 6 goto WriteFieldError } + if err = p.writeField7(oprot); err != nil { + fieldId = 7 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { @@ -2775,6 +2804,23 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) } +func (p *UpdatePostRequest) writeField7(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("id", thrift.STRING, 7); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.ID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) +} + func (p *UpdatePostRequest) String() string { if p == nil { return "" diff --git a/biz/pack/permission.go b/biz/pack/permission.go index b8731bf..abe25c1 100644 --- a/biz/pack/permission.go +++ b/biz/pack/permission.go @@ -6,7 +6,7 @@ import ( ) func CheckAuthValid(username, password string) bool { - u, _, err := sqlite.QueryBasic[user.User]("username = ?", username) + u, _, err := sqlite.Query[user.User]("username = ?", username) if err != nil { return false } diff --git a/biz/router/user/middleware.go b/biz/router/user/middleware.go index 41ebae0..e964c72 100644 --- a/biz/router/user/middleware.go +++ b/biz/router/user/middleware.go @@ -26,9 +26,7 @@ func _userMw() []app.HandlerFunc { } func _createMw() []app.HandlerFunc { - return []app.HandlerFunc{ - jwt.MiddlewareFunc(), - } + return nil } func _createuserMw() []app.HandlerFunc { diff --git a/go.mod b/go.mod index 5dcd211..ce5afc9 100644 --- a/go.mod +++ b/go.mod @@ -37,6 +37,8 @@ require ( github.com/hashicorp/hcl v1.0.0 // indirect github.com/henrylee2cn/ameda v1.4.10 // indirect github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 // indirect + github.com/hertz-contrib/gzip v0.0.1 // indirect + github.com/hertz-contrib/logger/accesslog v0.0.0-20230428050608-fc430385c0ec // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect diff --git a/go.sum b/go.sum index 36f2039..236b53e 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,8 @@ github.com/bytedance/gopkg v0.0.0-20220413063733-65bf48ffb3a7 h1:PtwsQyQJGxf8iaP github.com/bytedance/gopkg v0.0.0-20220413063733-65bf48ffb3a7/go.mod h1:2ZlV9BaUH4+NXIBF0aMdKKAnHTzqH+iMU4KUjAbL23Q= github.com/bytedance/mockey v1.2.1 h1:g84ngI88hz1DR4wZTL3yOuqlEcq67MretBfQUdXwrmw= github.com/bytedance/mockey v1.2.1/go.mod h1:+Jm/fzWZAuhEDrPXVjDf/jLM2BlLXJkwk94zf2JZ3X4= +github.com/bytedance/sonic v1.3.0/go.mod h1:V973WhNhGmvHxW6nQmsHEfHaoU9F3zTF+93rH03hcUQ= +github.com/bytedance/sonic v1.3.5/go.mod h1:V973WhNhGmvHxW6nQmsHEfHaoU9F3zTF+93rH03hcUQ= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.8.1 h1:NqAHCaGaTzro0xMmnTCLUyRlbEP6r8MCA1cJUrH3Pu4= github.com/bytedance/sonic v1.8.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= @@ -63,9 +65,13 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/hertz v0.2.1/go.mod h1:prTyExvsH/UmDkvfU3dp3EHsZFQISfT8R7BirvpTKdo= +github.com/cloudwego/hertz v0.3.2/go.mod h1:hnv3B7eZ6kMv7CKFHT2OC4LU0mA4s5XPyu/SbixLcrU= github.com/cloudwego/hertz v0.6.2/go.mod h1:2em2hGREvCBawsTQcQxyWBGVlCeo+N1pp2q0HkkbwR0= github.com/cloudwego/hertz v0.6.3 h1:zbus6GEYcTBH8UbgA+ay52u9oV9Kg6EvHp92GF9eTwo= github.com/cloudwego/hertz v0.6.3/go.mod h1:KhztQcZtMQ46gOjZcmCy557AKD29cbumGEV0BzwevwA= +github.com/cloudwego/netpoll v0.2.4/go.mod h1:1T2WVuQ+MQw6h6DpE45MohSvDTKdy2DlzCx2KsnPI4E= +github.com/cloudwego/netpoll v0.2.6/go.mod h1:1T2WVuQ+MQw6h6DpE45MohSvDTKdy2DlzCx2KsnPI4E= github.com/cloudwego/netpoll v0.3.1/go.mod h1:1T2WVuQ+MQw6h6DpE45MohSvDTKdy2DlzCx2KsnPI4E= github.com/cloudwego/netpoll v0.3.2 h1:/998ICrNMVBo4mlul4j7qcIeY7QnEfuCCPPwck9S3X4= github.com/cloudwego/netpoll v0.3.2/go.mod h1:xVefXptcyheopwNDZjDPcfU6kIjZXZ4nY550k1yH9eQ= @@ -105,6 +111,7 @@ github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/goccy/go-json v0.9.4/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/golang-jwt/jwt/v4 v4.4.1 h1:pC5DB52sCeK48Wlb9oPcdhnjkz1TKt1D/P7WKJ0kUcQ= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -148,6 +155,7 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -182,8 +190,12 @@ github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 h1:yE9ULgp02BhY github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8/go.mod h1:Nhe/DM3671a5udlv2AdV2ni/MZzgfv2qrPL5nIi3EGQ= github.com/hertz-contrib/cors v0.0.0-20230423034624-2bc83a8400f0 h1:l5i0uvP7OQ//vjA4qR3U160NxQex+BiqaRM+u6CpoIM= github.com/hertz-contrib/cors v0.0.0-20230423034624-2bc83a8400f0/go.mod h1:VPReoq+Rvu/lZOfpp5CcX3x4mpZUc3EpSXBcVDcbvOc= +github.com/hertz-contrib/gzip v0.0.1 h1:fPCnSZIDT4Gd8ZTuoCCJXek0opUsN89T2djdEW7Awr4= +github.com/hertz-contrib/gzip v0.0.1/go.mod h1:Fom/vnPMLA3UJ/P8fsZO8izjWG82m53BGO48lW1U1l8= github.com/hertz-contrib/jwt v1.0.2 h1:sAW3wqgBDsbPKr5JWJRObY61jg1NqYkUCg+o8UXLsaI= github.com/hertz-contrib/jwt v1.0.2/go.mod h1:3zUSK+44dcw/9z/89JZ+mA0FoyhmVN7Hx+f46ucVV4I= +github.com/hertz-contrib/logger/accesslog v0.0.0-20230428050608-fc430385c0ec h1:ADVt43muDXaJu2doethdcG3j79AYX5jYOKQMK0ErkDI= +github.com/hertz-contrib/logger/accesslog v0.0.0-20230428050608-fc430385c0ec/go.mod h1:TabOF59o4RUIB8HhbbJV6E35hekMTtx+7Om3ruQe8n8= github.com/hertz-contrib/swagger v0.0.0-20230410084747-96f1a1b976ab h1:m81g69UA7iGZkZrH2OyMahYMy7aV76tVcLoggZU7cFo= github.com/hertz-contrib/swagger v0.0.0-20230410084747-96f1a1b976ab/go.mod h1:2/w1cIU3JywLb0PBD5wG1xW25g/AGoVFTrHh0T5FY6I= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -194,6 +206,7 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -219,6 +232,8 @@ github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPn github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg= @@ -269,6 +284,7 @@ github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2u github.com/swaggo/swag v1.8.2 h1:D4aBiVS2a65zhyk3WFqOUz7Rz0sOaUcgeErcid5uGL4= github.com/swaggo/swag v1.8.2/go.mod h1:jMLeXOOmYyjk8PvHTsXBdrubsNd9gUJTTCzL5iBnseg= github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw= github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -276,6 +292,7 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/idl/post.thrift b/idl/post.thrift index c6b010a..32da105 100644 --- a/idl/post.thrift +++ b/idl/post.thrift @@ -73,6 +73,7 @@ struct UpdatePostRequest{ 4: string date (api.body="date",api.form="date",api.vd="(len($)>0)") 5: string tags (api.body="tags",api.form="tags") 6: string image_url (api.body="image_url",api.form="image_url") + 7: string id (api.body="id",api.form="id",api.path="id") } struct UpdatePostResponse{ diff --git a/main.go b/main.go index f0782c7..efb3255 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,8 @@ import ( "github.com/cloudwego/hertz/pkg/app/middlewares/server/recovery" "github.com/cloudwego/hertz/pkg/app/server" "github.com/hertz-contrib/cors" + "github.com/hertz-contrib/gzip" + "github.com/hertz-contrib/logger/accesslog" _ "github.com/hertz-contrib/swagger" "github.com/spf13/viper" _ "github.com/swaggo/files" @@ -28,15 +30,24 @@ func main() { address := viper.GetString("server.host") + ":" + viper.GetString("server.port") h := server.New(server.WithHostPorts(address)) h.Name = "Refined Server" + + //Recovery h.Use(recovery.Recovery()) + //Gzip + h.Use(gzip.Gzip(gzip.DefaultCompression, gzip.WithExcludedExtensions([]string{".svg"}))) + //CORS h.Use(cors.New(cors.Config{ AllowOrigins: []string{"*"}, - AllowMethods: []string{"*"}, + AllowMethods: []string{"GET,PUT,POST,DELETE"}, AllowHeaders: []string{"*"}, ExposeHeaders: []string{"*"}, AllowCredentials: true, MaxAge: 12 * time.Hour, - })) // CORS + })) + //Logger + h.Use(accesslog.New()) + + //Router h.Static("/static", "./") register(h) h.Spin()