diff --git a/cmd/main.go b/cmd/main.go index ff6c752..cb30b34 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -97,7 +97,18 @@ func upload(filePath string) { } func remove(fileName string) { - fmt.Println("fileName", fileName) + res, err := http.Get("http://localhost:8888/remove?name=" + fileName) + if err != nil { + log.Fatalf("Remove failed: %s\n", err) + } + defer res.Body.Close() + body, _ := ioutil.ReadAll(res.Body) + var dataMap map[string]interface{} + json.Unmarshal(body, &dataMap) + if dataMap["status"] != 0 { + log.Fatalf("Post failed: %s\n", dataMap["msg"]) + } + fmt.Println("[SUCCESS] Remove file is successfully. ", fileName) } func checkErr(e error) { diff --git a/controllers/removeFile.go b/controllers/removeFile.go new file mode 100644 index 0000000..5181afb --- /dev/null +++ b/controllers/removeFile.go @@ -0,0 +1,54 @@ +package controllers + +import ( + "log" + "net/http" + "os" + "sync" + + "github.com/gin-gonic/gin" + "github.com/zachrey/blog/models" +) + +var wg sync.WaitGroup + +// RemoveFile 根据标题删除文章及相关项 +func RemoveFile(c *gin.Context) { + wg.Add(3) + fileName := c.Query("name") + if fileName == "" { + c.JSON(http.StatusOK, gin.H{ + "status": 1, + "msg": "Filed name is empty.", + }) + return + } + + post := models.GetPostByTitle(fileName) + + // 删除分类关联表 + go func() { + models.RemovePCByPostID(post.Id) + wg.Done() + }() + // 删除标签关联表 + go func() { + models.RemovePLByPostID(post.Id) + wg.Done() + }() + // 删除文件 + go func() { + err := os.Remove("./posts/" + post.FileName) + if err != nil { + log.Println("[ERROR] ", err) + } + wg.Done() + }() + wg.Wait() + models.RemovePostByID(post.Id) + + c.JSON(http.StatusOK, gin.H{ + "status": 0, + "msg": "删除文章成功!", + }) +} diff --git a/database/test.db b/database/test.db index 4331c8c..5c1e25e 100644 Binary files a/database/test.db and b/database/test.db differ diff --git a/gin.log b/gin.log index 0e25662..77fcd4a 100644 --- a/gin.log +++ b/gin.log @@ -1,16 +1,2 @@ -[GIN] 2018/06/10 - 21:02:19 | 200 | 998.6µs | 127.0.0.1 | GET /get-posts -[GIN] 2018/06/10 - 21:02:21 | 200 | 1.9988ms | 127.0.0.1 | GET /get-labels -[GIN] 2018/06/10 - 21:02:23 | 200 | 999µs | 127.0.0.1 | GET /get-posts-by-label/20 -[GIN] 2018/06/10 - 21:02:24 | 200 | 1.9976ms | 127.0.0.1 | GET /get-html-str/32 -[GIN] 2018/06/10 - 21:02:26 | 200 | 1.9985ms | 127.0.0.1 | GET /get-labels -[GIN] 2018/06/10 - 21:02:26 | 200 | 4.998ms | 127.0.0.1 | GET /get-posts-by-label/21 -[GIN] 2018/06/10 - 21:02:28 | 200 | 999.4µs | 127.0.0.1 | GET /get-html-str/32 -[GIN] 2018/06/10 - 21:02:30 | 200 | 1.0002ms | 127.0.0.1 | GET /get-categoies -[GIN] 2018/06/10 - 21:02:31 | 200 | 1.9984ms | 127.0.0.1 | GET /get-posts-by-category/82 -[GIN] 2018/06/10 - 21:02:32 | 200 | 3.9973ms | 127.0.0.1 | GET /get-html-str/32 -[GIN] 2018/06/10 - 21:02:34 | 200 | 0s | 127.0.0.1 | GET /get-categoies -[GIN] 2018/06/10 - 21:02:35 | 200 | 2.9996ms | 127.0.0.1 | GET /get-html-str/32 -[GIN] 2018/06/10 - 21:02:36 | 200 | 0s | 127.0.0.1 | GET /get-labels -[GIN] 2018/06/10 - 21:02:38 | 200 | 3.9964ms | 127.0.0.1 | GET /get-posts -[GIN] 2018/06/10 - 21:02:41 | 200 | 998.1µs | 127.0.0.1 | GET /get-html-str/32 -[GIN] 2018/06/10 - 21:02:43 | 200 | 999.8µs | 127.0.0.1 | GET /get-posts +[GIN] 2018/06/11 - 11:44:36 | 200 | 387.7766ms | ::1 | GET /remove?name=一个博客的名称 +[GIN] 2018/06/11 - 11:45:16 | 200 | 133.9227ms | ::1 | POST /upload diff --git a/models/post.go b/models/post.go index 922bc4a..1790088 100644 --- a/models/post.go +++ b/models/post.go @@ -1,6 +1,7 @@ package models import ( + "database/sql" "log" db "github.com/zachrey/blog/database" @@ -28,6 +29,20 @@ func GetPostByID(Id int64) *MPost { return &post } +// GetPostByTitle 根据标题获取post +func GetPostByTitle(title string) *MPost { + var post MPost + has, err := db.ORM.Table("posts").Where("title=?", title).Get(&post) + if err != nil { + log.Println("ERROR:", err) + return nil + } + if has == false { + return nil + } + return &post +} + // GetPosts 获取所有的文章 func GetPosts() *[]MPost { var post []MPost @@ -48,3 +63,10 @@ func InsertPost(title, fileName string, textAmount int64, ch chan int64) { db.ORM.Table("posts").Insert(newPost) ch <- newPost.Id } + +// RemovePostByID 根据ID删除post +func RemovePostByID(ID int64) (sql.Result, error) { + sql := "DELETE FROM posts WHERE id=?" + affacted, err := db.ORM.Sql(sql, ID).Execute() + return affacted, err +} diff --git a/models/post_category.go b/models/post_category.go index e2bf66a..50b6953 100644 --- a/models/post_category.go +++ b/models/post_category.go @@ -1,6 +1,7 @@ package models import ( + "database/sql" "log" db "github.com/zachrey/blog/database" @@ -43,3 +44,10 @@ func GetPostsByPCId(categoryId int64) *[]MCategoryAndPost { } return &posts } + +// RemovePCByPostID 根据postid删除对于的记录 +func RemovePCByPostID(postID int64) (sql.Result, error) { + sql := "DELETE FROM post_category WHERE post_id=?" + affacted, err := db.ORM.Sql(sql, postID).Execute() + return affacted, err +} diff --git a/models/post_label.go b/models/post_label.go index d431e40..4f91c79 100644 --- a/models/post_label.go +++ b/models/post_label.go @@ -1,6 +1,7 @@ package models import ( + "database/sql" "log" db "github.com/zachrey/blog/database" @@ -43,3 +44,10 @@ func GetPostsByPLId(labelId int64) *[]LabelAndPost { } return &posts } + +// RemoveByPostID 根据postid删除对于的记录 +func RemovePLByPostID(postID int64) (sql.Result, error) { + sql := "DELETE FROM post_label WHERE post_id=?" + affacted, err := db.ORM.Sql(sql, postID).Execute() + return affacted, err +} diff --git a/posts/b128b7694e4de962e0088bcb1bcb254f.md b/posts/b128b7694e4de962e0088bcb1bcb254f.md index 00947ac..66b5956 100644 --- a/posts/b128b7694e4de962e0088bcb1bcb254f.md +++ b/posts/b128b7694e4de962e0088bcb1bcb254f.md @@ -4,8 +4,4 @@ label: 标签1, 标签2 --------------------------------------------- # 标题 -**it's golang**`A` - -```js -console.log(111) -``` +**it's golang** diff --git a/routers/router.go b/routers/router.go index 60cd1ec..fc3e913 100644 --- a/routers/router.go +++ b/routers/router.go @@ -26,6 +26,7 @@ func loadRouters(router *gin.Engine) { }) router.POST("/upload", ctrs.UpLoadFile) + router.GET("/remove", ctrs.RemoveFile) router.GET("/get-html-str/:postid", ctrs.GetHtmlStr)