fix gopkg.in/mgo import conflict

This commit is contained in:
henry.chen
2017-11-23 13:57:20 +08:00
parent 730cffcb5b
commit 168937f1b2
3 changed files with 48 additions and 71 deletions

10
api.go
View File

@@ -11,8 +11,8 @@ import (
"github.com/eiblog/eiblog/setting" "github.com/eiblog/eiblog/setting"
"github.com/eiblog/utils/logd" "github.com/eiblog/utils/logd"
"github.com/eiblog/utils/mgo"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"gopkg.in/mgo.v2/bson"
) )
const ( const (
@@ -66,7 +66,7 @@ func apiAccount(c *gin.Context) {
return return
} }
err := UpdateAccountField(bson.M{"$set": bson.M{"email": e, "phonen": pn, "address": ad}}) err := UpdateAccountField(mgo.M{"$set": mgo.M{"email": e, "phonen": pn, "address": ad}})
if err != nil { if err != nil {
responseNotice(c, NOTICE_NOTICE, err.Error(), "") responseNotice(c, NOTICE_NOTICE, err.Error(), "")
return return
@@ -89,7 +89,7 @@ func apiBlog(c *gin.Context) {
return return
} }
err := UpdateAccountField(bson.M{"$set": bson.M{"blogger.blogname": bn, "blogger.btitle": bt, "blogger.beian": ba, "blogger.subtitle": st, "blogger.seriessay": ss, "blogger.archivessay": as}}) err := UpdateAccountField(mgo.M{"$set": mgo.M{"blogger.blogname": bn, "blogger.btitle": bt, "blogger.beian": ba, "blogger.subtitle": st, "blogger.seriessay": ss, "blogger.archivessay": as}})
if err != nil { if err != nil {
responseNotice(c, NOTICE_NOTICE, err.Error(), "") responseNotice(c, NOTICE_NOTICE, err.Error(), "")
return return
@@ -124,7 +124,7 @@ func apiPassword(c *gin.Context) {
} }
newPwd := EncryptPasswd(Ei.Username, nw) newPwd := EncryptPasswd(Ei.Username, nw)
err := UpdateAccountField(bson.M{"$set": bson.M{"password": newPwd}}) err := UpdateAccountField(mgo.M{"$set": mgo.M{"password": newPwd}})
if err != nil { if err != nil {
responseNotice(c, NOTICE_NOTICE, err.Error(), "") responseNotice(c, NOTICE_NOTICE, err.Error(), "")
return return
@@ -254,7 +254,7 @@ func apiPostAdd(c *gin.Context) {
if CheckBool(update) { if CheckBool(update) {
artc.UpdateTime = time.Now() artc.UpdateTime = time.Now()
} }
err = UpdateArticle(bson.M{"id": artc.ID}, artc) err = UpdateArticle(mgo.M{"id": artc.ID}, artc)
if err != nil { if err != nil {
logd.Error(err) logd.Error(err)
return return

View File

@@ -11,9 +11,9 @@ import (
"github.com/eiblog/eiblog/setting" "github.com/eiblog/eiblog/setting"
"github.com/eiblog/utils/logd" "github.com/eiblog/utils/logd"
"github.com/eiblog/utils/mgo"
"github.com/gin-gonic/contrib/sessions" "github.com/gin-gonic/contrib/sessions"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"gopkg.in/mgo.v2/bson"
) )
// 是否登录 // 是否登录
@@ -73,7 +73,7 @@ func HandleLoginPost(c *gin.Context) {
session.Save() session.Save()
Ei.LoginIP = c.ClientIP() Ei.LoginIP = c.ClientIP()
Ei.LoginTime = time.Now() Ei.LoginTime = time.Now()
UpdateAccountField(bson.M{"$set": bson.M{"loginip": Ei.LoginIP, "logintime": Ei.LoginTime}}) UpdateAccountField(mgo.M{"$set": mgo.M{"loginip": Ei.LoginIP, "logintime": Ei.LoginTime}})
c.Redirect(http.StatusFound, "/admin/profile") c.Redirect(http.StatusFound, "/admin/profile")
} }

105
db.go
View File

@@ -13,9 +13,7 @@ import (
"github.com/eiblog/blackfriday" "github.com/eiblog/blackfriday"
"github.com/eiblog/eiblog/setting" "github.com/eiblog/eiblog/setting"
"github.com/eiblog/utils/logd" "github.com/eiblog/utils/logd"
db "github.com/eiblog/utils/mgo" "github.com/eiblog/utils/mgo"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
) )
// 数据库及表名 // 数据库及表名
@@ -62,40 +60,20 @@ var (
func init() { func init() {
// 数据库加索引 // 数据库加索引
ms, c := db.Connect(DB, COLLECTION_ACCOUNT) err := mgo.Index(DB, COLLECTION_ACCOUNT, []string{"username"})
index := mgo.Index{ if err != nil {
Key: []string{"username"},
Unique: true,
DropDups: true,
Background: true,
Sparse: true,
}
if err := c.EnsureIndex(index); err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
ms.Close()
ms, c = db.Connect(DB, COLLECTION_ARTICLE) err = mgo.Index(DB, COLLECTION_ARTICLE, []string{"id"})
index = mgo.Index{ if err != nil {
Key: []string{"id"},
Unique: true,
DropDups: true,
Background: true,
Sparse: true,
}
if err := c.EnsureIndex(index); err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
index = mgo.Index{
Key: []string{"slug"}, err = mgo.Index(DB, COLLECTION_ARTICLE, []string{"slug"})
Unique: true, if err != nil {
DropDups: true,
Background: true,
Sparse: true,
}
if err := c.EnsureIndex(index); err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
ms.Close()
// 读取帐号信息 // 读取帐号信息
Ei = loadAccount() Ei = loadAccount()
// 获取文章数据 // 获取文章数据
@@ -111,7 +89,7 @@ func init() {
// 读取或初始化帐号信息 // 读取或初始化帐号信息
func loadAccount() (a *Account) { func loadAccount() (a *Account) {
a = &Account{} a = &Account{}
err := db.FindOne(DB, COLLECTION_ACCOUNT, bson.M{"username": setting.Conf.Account.Username}, a) err := mgo.FindOne(DB, COLLECTION_ACCOUNT, mgo.M{"username": setting.Conf.Account.Username}, a)
// 初始化用户数据 // 初始化用户数据
if err == mgo.ErrNotFound { if err == mgo.ErrNotFound {
a = &Account{ a = &Account{
@@ -127,7 +105,7 @@ func loadAccount() (a *Account) {
a.BeiAn = setting.Conf.Blogger.BeiAn a.BeiAn = setting.Conf.Blogger.BeiAn
a.BTitle = setting.Conf.Blogger.BTitle a.BTitle = setting.Conf.Blogger.BTitle
a.Copyright = setting.Conf.Blogger.Copyright a.Copyright = setting.Conf.Blogger.Copyright
err = db.Insert(DB, COLLECTION_ACCOUNT, a) err = mgo.Insert(DB, COLLECTION_ACCOUNT, a)
generateTopic() generateTopic()
} else if err != nil { } else if err != nil {
logd.Fatal(err) logd.Fatal(err)
@@ -139,7 +117,7 @@ func loadAccount() (a *Account) {
} }
func loadArticles() (artcs SortArticles) { func loadArticles() (artcs SortArticles) {
err := db.FindAll(DB, COLLECTION_ARTICLE, bson.M{"isdraft": false, "deletetime": bson.M{"$eq": time.Time{}}}, &artcs) err := mgo.FindAll(DB, COLLECTION_ARTICLE, mgo.M{"isdraft": false, "deletetime": mgo.M{"$eq": time.Time{}}}, &artcs)
if err != nil { if err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
@@ -209,7 +187,7 @@ func generateMarkdown() {
// init account: generate blogroll and about page // init account: generate blogroll and about page
func generateTopic() { func generateTopic() {
about := &Article{ about := &Article{
ID: db.NextVal(DB, COUNTER_ARTICLE), ID: mgo.NextVal(DB, COUNTER_ARTICLE),
Author: setting.Conf.Account.Username, Author: setting.Conf.Account.Username,
Title: "关于", Title: "关于",
Slug: "about", Slug: "about",
@@ -217,18 +195,18 @@ func generateTopic() {
UpdateTime: time.Time{}, UpdateTime: time.Time{},
} }
blogroll := &Article{ blogroll := &Article{
ID: db.NextVal(DB, COUNTER_ARTICLE), ID: mgo.NextVal(DB, COUNTER_ARTICLE),
Author: setting.Conf.Account.Username, Author: setting.Conf.Account.Username,
Title: "友情链接", Title: "友情链接",
Slug: "blogroll", Slug: "blogroll",
CreateTime: time.Time{}, CreateTime: time.Time{},
UpdateTime: time.Time{}, UpdateTime: time.Time{},
} }
err := db.Insert(DB, COLLECTION_ARTICLE, blogroll) err := mgo.Insert(DB, COLLECTION_ARTICLE, blogroll)
if err != nil { if err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
err = db.Insert(DB, COLLECTION_ARTICLE, about) err = mgo.Insert(DB, COLLECTION_ARTICLE, about)
if err != nil { if err != nil {
logd.Fatal(err) logd.Fatal(err)
} }
@@ -307,7 +285,6 @@ func ManageSeriesArticle(artc *Article, s bool, do string) {
Ei.Series[i].Articles = append(Ei.Series[i].Articles, artc) Ei.Series[i].Articles = append(Ei.Series[i].Articles, artc)
if s { if s {
sort.Sort(Ei.Series[i].Articles) sort.Sort(Ei.Series[i].Articles)
Ei.CH <- SERIES_MD
return return
} }
} }
@@ -318,7 +295,6 @@ func ManageSeriesArticle(artc *Article, s bool, do string) {
for j, v := range serie.Articles { for j, v := range serie.Articles {
if v == artc { if v == artc {
Ei.Series[i].Articles = append(Ei.Series[i].Articles[0:j], Ei.Series[i].Articles[j+1:]...) Ei.Series[i].Articles = append(Ei.Series[i].Articles[0:j], Ei.Series[i].Articles[j+1:]...)
Ei.CH <- SERIES_MD
return return
} }
} }
@@ -340,7 +316,6 @@ func ManageArchivesArticle(artc *Article, s bool, do string) {
Ei.Archives[i].Articles = append(Ei.Archives[i].Articles, artc) Ei.Archives[i].Articles = append(Ei.Archives[i].Articles, artc)
if s { if s {
sort.Sort(Ei.Archives[i].Articles) sort.Sort(Ei.Archives[i].Articles)
Ei.CH <- ARCHIVE_MD
break break
} }
} }
@@ -355,7 +330,9 @@ func ManageArchivesArticle(artc *Article, s bool, do string) {
for j, v := range archive.Articles { for j, v := range archive.Articles {
if v == artc { if v == artc {
Ei.Archives[i].Articles = append(Ei.Archives[i].Articles[0:j], Ei.Archives[i].Articles[j+1:]...) Ei.Archives[i].Articles = append(Ei.Archives[i].Articles[0:j], Ei.Archives[i].Articles[j+1:]...)
Ei.CH <- ARCHIVE_MD if len(Ei.Archives[i].Articles) == 0 {
Ei.Archives = append(Ei.Archives[:i], Ei.Archives[i+1:]...)
}
return return
} }
} }
@@ -401,14 +378,14 @@ func GenerateExcerptAndRender(artc *Article) {
// 读取草稿箱 // 读取草稿箱
func LoadDraft() (artcs SortArticles, err error) { func LoadDraft() (artcs SortArticles, err error) {
err = db.FindAll(DB, COLLECTION_ARTICLE, bson.M{"isdraft": true}, &artcs) err = mgo.FindAll(DB, COLLECTION_ARTICLE, mgo.M{"isdraft": true}, &artcs)
sort.Sort(artcs) sort.Sort(artcs)
return return
} }
// 读取回收箱 // 读取回收箱
func LoadTrash() (artcs SortArticles, err error) { func LoadTrash() (artcs SortArticles, err error) {
err = db.FindAll(DB, COLLECTION_ARTICLE, bson.M{"deletetime": bson.M{"$ne": time.Time{}}}, &artcs) err = mgo.FindAll(DB, COLLECTION_ARTICLE, mgo.M{"deletetime": mgo.M{"$ne": time.Time{}}}, &artcs)
sort.Sort(artcs) sort.Sort(artcs)
return return
} }
@@ -417,7 +394,7 @@ func LoadTrash() (artcs SortArticles, err error) {
func AddArticle(artc *Article) error { func AddArticle(artc *Article) error {
// 分配ID, 占位至起始id // 分配ID, 占位至起始id
for { for {
if id := db.NextVal(DB, COUNTER_ARTICLE); id < setting.Conf.General.StartID { if id := mgo.NextVal(DB, COUNTER_ARTICLE); id < setting.Conf.General.StartID {
continue continue
} else { } else {
artc.ID = id artc.ID = id
@@ -440,7 +417,7 @@ func AddArticle(artc *Article) error {
Ei.CH <- SERIES_MD Ei.CH <- SERIES_MD
} }
} }
return db.Insert(DB, COLLECTION_ARTICLE, artc) return mgo.Insert(DB, COLLECTION_ARTICLE, artc)
} }
// 删除文章,移入回收箱 // 删除文章,移入回收箱
@@ -455,7 +432,7 @@ func DelArticles(ids ...int32) error {
ManageTagsArticle(artc, false, DELETE) ManageTagsArticle(artc, false, DELETE)
ManageSeriesArticle(artc, false, DELETE) ManageSeriesArticle(artc, false, DELETE)
ManageArchivesArticle(artc, false, DELETE) ManageArchivesArticle(artc, false, DELETE)
err := UpdateArticle(bson.M{"id": id}, bson.M{"$set": bson.M{"deletetime": time.Now()}}) err := UpdateArticle(mgo.M{"id": id}, mgo.M{"$set": mgo.M{"deletetime": time.Now()}})
if err != nil { if err != nil {
return err return err
} }
@@ -509,34 +486,34 @@ func timer() {
delT := time.NewTicker(time.Duration(setting.Conf.General.Clean) * time.Hour) delT := time.NewTicker(time.Duration(setting.Conf.General.Clean) * time.Hour)
for { for {
<-delT.C <-delT.C
db.Remove(DB, COLLECTION_ARTICLE, bson.M{"deletetime": bson.M{"$gt": time.Time{}, "$lt": time.Now().Add(time.Duration(setting.Conf.General.Trash) * time.Hour)}}) mgo.Remove(DB, COLLECTION_ARTICLE, mgo.M{"deletetime": mgo.M{"$gt": time.Time{}, "$lt": time.Now().Add(time.Duration(setting.Conf.General.Trash) * time.Hour)}})
} }
} }
// 操作帐号字段 // 操作帐号字段
func UpdateAccountField(M bson.M) error { func UpdateAccountField(M mgo.M) error {
return db.Update(DB, COLLECTION_ACCOUNT, bson.M{"username": Ei.Username}, M) return mgo.Update(DB, COLLECTION_ACCOUNT, mgo.M{"username": Ei.Username}, M)
} }
// 删除草稿箱或回收箱,永久删除 // 删除草稿箱或回收箱,永久删除
func RemoveArticle(id int32) error { func RemoveArticle(id int32) error {
return db.Remove(DB, COLLECTION_ARTICLE, bson.M{"id": id}) return mgo.Remove(DB, COLLECTION_ARTICLE, mgo.M{"id": id})
} }
// 恢复删除文章到草稿箱 // 恢复删除文章到草稿箱
func RecoverArticle(id int32) error { func RecoverArticle(id int32) error {
return db.Update(DB, COLLECTION_ARTICLE, bson.M{"id": id}, bson.M{"$set": bson.M{"deletetime": time.Time{}, "isdraft": true}}) return mgo.Update(DB, COLLECTION_ARTICLE, mgo.M{"id": id}, mgo.M{"$set": mgo.M{"deletetime": time.Time{}, "isdraft": true}})
} }
// 更新文章 // 更新文章
func UpdateArticle(query, update interface{}) error { func UpdateArticle(query, update interface{}) error {
return db.Update(DB, COLLECTION_ARTICLE, query, update) return mgo.Update(DB, COLLECTION_ARTICLE, query, update)
} }
// 编辑文档 // 编辑文档
func QueryArticle(id int32) *Article { func QueryArticle(id int32) *Article {
artc := &Article{} artc := &Article{}
if err := db.FindOne(DB, COLLECTION_ARTICLE, bson.M{"id": id}, artc); err != nil { if err := mgo.FindOne(DB, COLLECTION_ARTICLE, mgo.M{"id": id}, artc); err != nil {
return nil return nil
} }
return artc return artc
@@ -544,17 +521,17 @@ func QueryArticle(id int32) *Article {
// 添加专题 // 添加专题
func AddSerie(name, slug, desc string) error { func AddSerie(name, slug, desc string) error {
serie := &Serie{db.NextVal(DB, COUNTER_SERIE), name, slug, desc, time.Now(), nil} serie := &Serie{mgo.NextVal(DB, COUNTER_SERIE), name, slug, desc, time.Now(), nil}
Ei.Series = append(Ei.Series, serie) Ei.Series = append(Ei.Series, serie)
sort.Sort(Ei.Series) sort.Sort(Ei.Series)
Ei.CH <- SERIES_MD Ei.CH <- SERIES_MD
return UpdateAccountField(bson.M{"$addToSet": bson.M{"blogger.series": serie}}) return UpdateAccountField(mgo.M{"$addToSet": mgo.M{"blogger.series": serie}})
} }
// 更新专题 // 更新专题
func UpdateSerie(serie *Serie) error { func UpdateSerie(serie *Serie) error {
Ei.CH <- SERIES_MD Ei.CH <- SERIES_MD
return db.Update(DB, COLLECTION_ACCOUNT, bson.M{"username": Ei.Username, "blogger.series.id": serie.ID}, bson.M{"$set": bson.M{"blogger.series.$": serie}}) return mgo.Update(DB, COLLECTION_ACCOUNT, mgo.M{"username": Ei.Username, "blogger.series.id": serie.ID}, mgo.M{"$set": mgo.M{"blogger.series.$": serie}})
} }
// 删除专题 // 删除专题
@@ -564,7 +541,7 @@ func DelSerie(id int32) error {
if len(serie.Articles) > 0 { if len(serie.Articles) > 0 {
return fmt.Errorf("请删除该专题下的所有文章") return fmt.Errorf("请删除该专题下的所有文章")
} }
err := UpdateAccountField(bson.M{"$pull": bson.M{"blogger.series": bson.M{"id": id}}}) err := UpdateAccountField(mgo.M{"$pull": mgo.M{"blogger.series": mgo.M{"id": id}}})
if err != nil { if err != nil {
return err return err
} }
@@ -588,24 +565,24 @@ func QuerySerie(id int32) *Serie {
// 后台分页 // 后台分页
func PageListBack(se int, kw string, draft, del bool, p, n int) (max int, artcs []*Article) { func PageListBack(se int, kw string, draft, del bool, p, n int) (max int, artcs []*Article) {
M := bson.M{} M := mgo.M{}
if draft { if draft {
M["isdraft"] = true M["isdraft"] = true
} else if del { } else if del {
M["deletetime"] = bson.M{"$ne": time.Time{}} M["deletetime"] = mgo.M{"$ne": time.Time{}}
} else { } else {
M["isdraft"] = false M["isdraft"] = false
M["deletetime"] = bson.M{"$eq": time.Time{}} M["deletetime"] = mgo.M{"$eq": time.Time{}}
if se > 0 { if se > 0 {
M["serieid"] = se M["serieid"] = se
} }
if kw != "" { if kw != "" {
M["title"] = bson.M{"$regex": kw, "$options": "$i"} M["title"] = mgo.M{"$regex": kw, "$options": "$i"}
} }
} }
ms, c := db.Connect(DB, COLLECTION_ARTICLE) ms, c := mgo.Connect(DB, COLLECTION_ARTICLE)
defer ms.Close() defer ms.Close()
err := c.Find(M).Select(bson.M{"content": 0}).Sort("-createtime").Limit(n).Skip((p - 1) * n).All(&artcs) err := c.Find(M).Select(mgo.M{"content": 0}).Sort("-createtime").Limit(n).Skip((p - 1) * n).All(&artcs)
if err != nil { if err != nil {
logd.Error(err) logd.Error(err)
} }