查询文章

当我们上传了文章之后,肯定希望能够查询我们上传的文章了,查询文章根据用户输入的内容,后台进行文章的标题和关键字进行匹配。然后返回查询到的数据。后台限制最多返回 20 条记录,这是为了服务器性能综合考虑的。如果用户查找的内容,不在返回的记录中,请输入更多内容,进行更精确的匹配。


func init() {
	rootCmd.AddCommand(qCmd)
}

var qCmd = &cobra.Command{
	Use:   "search",
	Short: "查找文章,最多返回20条记录。",
	Long:  `查找文章, 根据文章的标题和关键字匹配查询,最多返回20条记录。可以输入更多的内容进行精确查找。`,
	Args:  cobra.MinimumNArgs(1),
	Run: func(cmd *cobra.Command, args []string) {

		content := args[0]

		list, err := service.SearchArt(token, content)
		if err != nil {
			fmt.Println("查询发生错误,", err)
		} else {
			n := len(list)
			if n > 0 {
				var (
					cts    string
					uts    string
					ispub  string = "否"
					islock string = "否"
				)

				t := table.NewWriter()
				t.SetOutputMirror(os.Stdout)
				t.AppendHeader(table.Row{"UUID", "题目", "关键字", "是否公开", "是否加锁", "创建时间", "修改时间"})
				for _, v := range list {
					cts = utils.TS2Str(v.Createtime)
					uts = utils.TS2Str(v.Updatetime)
					if v.IsPub == 1 {
						ispub = "是"
					}
					if v.IsLock == 1 {
						islock = "是"
					}
					t.AppendRows([]table.Row{
						{v.Uuid, v.Title, v.Keyword, ispub, islock, cts, uts},
					})
					t.AppendSeparator()
				}

				t.Render()
			} else {
				fmt.Println("未找到记录,尝试更换内容试试。")
			}
		}

	},
}

代码的组织架构和上传的差不多。都需要先定义命令,然后添加到 root 命令中。这里的输出结果使用美化的 table 显示。当查询到内容后,就可以使用结果中的 UUID 进行文章的管理维护了。