Ejemplo n.º 1
0
func (a *WriterApi) Save(args util.MapData) (string, error) {
	cid := args.GetString("cid")
	title := args.GetString("title")
	body := args.GetBytes("body")
	images := args.GetStringSlice("images")
	au := a.GetUserAuth()

	var err error

	model := article.NewArticleModel()
	if cid == "" {
		cid, err = model.New(au.UserID(), title, body)
	} else {
		_, err = model.Update(cid, title, body)
	}
	if err != nil {
		return cid, err
	}

	article, _ := db.NewQueryBuilder(model.Table()).Select("id").Where("cid=?", cid).QueryOne()
	if article.Empty() {
		return cid, gos.DoError("没有找到相应的记录")
	}

	count := len(images)
	if count > 0 {
		image := db.DataRow{}
		image["article_id"] = article.GetInt64("id")
		for i := 0; i < count; i++ {
			images[i] = fmt.Sprint("'", images[i], "'")
		}
		db.NewUpdateBuilder("images").
			Where(fmt.Sprint("name in (", strings.Join(images, ","), ")")).
			Update(image)
	}

	return cid, nil
}