This is an automated email from the ASF dual-hosted git repository.

tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git


The following commit(s) were added to refs/heads/master by this push:
     new ca26bad  refactory db init func (#160)
ca26bad is described below

commit ca26bad66765570a352783cee0b52480c91e35c5
Author: GuoYL <[email protected]>
AuthorDate: Wed Sep 2 17:58:13 2020 +0800

    refactory db init func (#160)
---
 server/service/mongo/session/session.go | 125 ++++++++++++++++----------------
 1 file changed, 63 insertions(+), 62 deletions(-)

diff --git a/server/service/mongo/session/session.go 
b/server/service/mongo/session/session.go
index fa1fee6..16e3d6b 100644
--- a/server/service/mongo/session/session.go
+++ b/server/service/mongo/session/session.go
@@ -76,7 +76,7 @@ var (
 )
 
 const (
-       MsgExists    = "already exists"
+       MsgDBExists  = "already exists"
        MsgDuplicate = "duplicate key error collection"
 )
 
@@ -209,83 +209,86 @@ func EnsureDB() {
 
        ensureRevisionCounter(session)
 
-       //kv
-       c := session.DB(DBName).C("kv")
-       err = c.Create(&mgo.CollectionInfo{Validator: bson.M{
-               "key":     bson.M{"$exists": true},
-               "domain":  bson.M{"$exists": true},
-               "project": bson.M{"$exists": true},
-               "id":      bson.M{"$exists": true},
+       ensureKV(session)
+
+       ensureKVRevision(session)
+
+       ensureView(session)
+
+       ensureKVLongPolling(session)
+}
+
+func ensureKVLongPolling(session *mgo.Session) {
+       c := session.DB(DBName).C(CollectionPollingDetail)
+       err := c.Create(&mgo.CollectionInfo{Validator: bson.M{
+               "id":         bson.M{"$exists": true},
+               "params":     bson.M{"$exists": true},
+               "session_id": bson.M{"$exists": true},
+               "url_path":   bson.M{"$exists": true},
        }})
+       wrapError(err, MsgDBExists)
        err = c.EnsureIndex(mgo.Index{
                Key:    []string{"id"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
+       wrapError(err)
        err = c.EnsureIndex(mgo.Index{
-               Key:    []string{"key", "label_format", "domain", "project"},
+               Key:    []string{"session_id", "domain"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
-       //kv_revision
-       c = session.DB(DBName).C(CollectionKVRevision)
-       err = c.EnsureIndex(mgo.Index{
-               Key:         []string{"delete_time"},
-               ExpireAfter: 7 * 24 * time.Hour,
-       })
-       if err != nil {
-               panic(err)
-       }
-       //view
-       c = session.DB(DBName).C(CollectionView)
-       err = c.Create(&mgo.CollectionInfo{Validator: bson.M{
+       wrapError(err)
+}
+
+func ensureView(session *mgo.Session) {
+       c := session.DB(DBName).C(CollectionView)
+       err := c.Create(&mgo.CollectionInfo{Validator: bson.M{
                "id":      bson.M{"$exists": true},
                "domain":  bson.M{"$exists": true},
                "project": bson.M{"$exists": true},
                "display": bson.M{"$exists": true},
                "label":   bson.M{"$exists": true},
        }})
+       wrapError(err, MsgDBExists)
        err = c.EnsureIndex(mgo.Index{
                Key:    []string{"id"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
+       wrapError(err)
        err = c.EnsureIndex(mgo.Index{
                Key:    []string{"display", "domain", "project"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
-       //long polling
-       c = session.DB(DBName).C(CollectionPollingDetail)
-       err = c.Create(&mgo.CollectionInfo{Validator: bson.M{
-               "id":         bson.M{"$exists": true},
-               "params":     bson.M{"$exists": true},
-               "session_id": bson.M{"$exists": true},
-               "url_path":   bson.M{"$exists": true},
+       wrapError(err)
+}
+
+func ensureKVRevision(session *mgo.Session) {
+       c := session.DB(DBName).C(CollectionKVRevision)
+       err := c.EnsureIndex(mgo.Index{
+               Key:         []string{"delete_time"},
+               ExpireAfter: 7 * 24 * time.Hour,
+       })
+       wrapError(err, MsgDBExists)
+}
+
+func ensureKV(session *mgo.Session) {
+       c := session.DB(DBName).C(CollectionKV)
+       err := c.Create(&mgo.CollectionInfo{Validator: bson.M{
+               "key":     bson.M{"$exists": true},
+               "domain":  bson.M{"$exists": true},
+               "project": bson.M{"$exists": true},
+               "id":      bson.M{"$exists": true},
        }})
+       wrapError(err, MsgDBExists)
        err = c.EnsureIndex(mgo.Index{
                Key:    []string{"id"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
+       wrapError(err)
        err = c.EnsureIndex(mgo.Index{
-               Key:    []string{"session_id", "domain"},
+               Key:    []string{"key", "label_format", "domain", "project"},
                Unique: true,
        })
-       if err != nil {
-               panic(err)
-       }
-
+       wrapError(err)
 }
 
 func ensureRevisionCounter(session *mgo.Session) {
@@ -295,27 +298,25 @@ func ensureRevisionCounter(session *mgo.Session) {
                "domain": bson.M{"$exists": true},
                "count":  bson.M{"$exists": true},
        }})
-       if err != nil {
-               if strings.Contains(err.Error(), MsgExists) {
-                       openlog.Debug(err.Error())
-               } else {
-                       openlog.Fatal(err.Error())
-               }
-       }
+       wrapError(err, MsgDBExists)
        err = c.EnsureIndex(mgo.Index{
                Key:    []string{"name", "domain"},
                Unique: true,
        })
-       if err != nil {
-               openlog.Fatal(err.Error())
-       }
+       wrapError(err)
        docs := map[string]interface{}{"name": "revision_counter", "count": 1, 
"domain": "default"}
        err = c.Insert(docs)
+       wrapError(err, MsgDuplicate)
+}
+
+func wrapError(err error, skipMsg ...string) {
        if err != nil {
-               if strings.Contains(err.Error(), MsgDuplicate) {
-                       openlog.Debug(err.Error())
-               } else {
-                       openlog.Fatal(err.Error())
+               for _, str := range skipMsg {
+                       if strings.Contains(err.Error(), str) {
+                               openlog.Debug(err.Error())
+                               return
+                       }
                }
+               openlog.Fatal(err.Error())
        }
 }

Reply via email to