#type Service struct {
#  Domain  string            `json:"domain,omitempty"`
#  Project string            `json:"project,omitempty"`
#  Tags    map[string]string `json:"tags,omitempty"`
#  Service *pb.MicroService  `json:"service,omitempty"`
#}

#type MicroService struct {
#  ServiceId    string             `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty" bson:"service_id"`
#  AppId        string             `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty" bson:"app"`
#  ServiceName  string             `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty" bson:"service_name"`
#  Version      string             `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
#  Description  string             `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
#  Level        string             `protobuf:"bytes,6,opt,name=level" json:"level,omitempty"`
#  Schemas      []string           `protobuf:"bytes,7,rep,name=schemas" json:"schemas,omitempty"`
#  Paths        []*ServicePath     `protobuf:"bytes,10,rep,name=paths" json:"paths,omitempty"`
#  Status       string             `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"`
#  Properties   map[string]string  `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
#  Timestamp    string             `protobuf:"bytes,11,opt,name=timestamp" json:"timestamp,omitempty"`
#  Providers    []*MicroServiceKey `protobuf:"bytes,12,rep,name=providers" json:"providers,omitempty"`
#  Alias        string             `protobuf:"bytes,13,opt,name=alias" json:"alias,omitempty"`
#  LBStrategy   map[string]string  `protobuf:"bytes,14,rep,name=LBStrategy" json:"LBStrategy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" bson:"lb_strategy"`
#  ModTimestamp string             `protobuf:"bytes,15,opt,name=modTimestamp" json:"modTimestamp,omitempty" bson:"mod_timestamp"`
#  Environment  string             `protobuf:"bytes,16,opt,name=environment" json:"environment,omitempty" bson:"env"`
#  RegisterBy   string             `protobuf:"bytes,17,opt,name=registerBy" json:"registerBy,omitempty" bson:"register_by"`
#  Framework    *FrameWork `protobuf:"bytes,18,opt,name=framework" json:"framework,omitempty"`
#}

#collection: service
{
  "_id" : ObjectId("6021fb9527d99d766f82e44f"),
  "domain" : "new_default",
  "project" : "new_default",
  "tags" : null,
  "service" : {
    "service_id" : "6ea4d1c36a8311eba78dfa163e176e7b",
    "app" : "dep_create_dep_group",
    "service_name" : "dep_create_dep_consumer",
    "version" : "1.0.0",
    "description" : "",
    "level" : "FRONT",
    "schemas" : null,
    "paths" : null,
    "status" : "UP",
    "properties" : null,
    "timestamp" : "1612839829",
    "providers" : null,
    "alias" : "",
    "lb_strategy" : null,
    "mod_timestamp" : "1612839829",
    "env" : "",
    "register_by" : "",
    "framework" : null
  }
}

#type Instance struct {
#  Domain      string                   `json:"domain,omitempty"`
#  Project     string                   `json:"project,omitempty"`
#  RefreshTime time.Time                `json:"refreshTime,omitempty" bson:"refresh_time"`
#  Instance    *pb.MicroServiceInstance `json:"instance,omitempty"`
#}

#type MicroServiceInstance struct {
#  InstanceId     string            `protobuf:"bytes,1,opt,name=instanceId" json:"instanceId,omitempty" bson:"instance_id"`
#  ServiceId      string            `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty" bson:"service_id"`
#  Endpoints      []string          `protobuf:"bytes,3,rep,name=endpoints" json:"endpoints,omitempty"`
#  HostName       string            `protobuf:"bytes,4,opt,name=hostName" json:"hostName,omitempty"`
#  Status         string            `protobuf:"bytes,5,opt,name=status" json:"status,omitempty"`
#  Properties     map[string]string `protobuf:"bytes,6,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
#  HealthCheck    *HealthCheck      `protobuf:"bytes,7,opt,name=healthCheck" json:"healthCheck,omitempty" bson:"health_check"`
#  Timestamp      string            `protobuf:"bytes,8,opt,name=timestamp" json:"timestamp,omitempty"`
#  DataCenterInfo *DataCenterInfo   `protobuf:"bytes,9,opt,name=dataCenterInfo" json:"dataCenterInfo,omitempty" bson:"data_center_info"`
#  ModTimestamp   string            `protobuf:"bytes,10,opt,name=modTimestamp" json:"modTimestamp,omitempty" bson:"mod_timestamp"`
#  Version        string            `protobuf:"bytes,11,opt,name=version" json:"version,omitempty"`
#}

# collection: instance
{
  "_id" : ObjectId("60222c6f4fe067987f40803e"),
  "domain" : "default",
  "project" : "default",
  "refresh_time" : ISODate("2021-02-09T06:32:15.562Z"),
  "instance" : {
    "instance_id" : "8cde54a46aa011ebab42fa163e176e7b",
    "service_id" : "8cddc7ce6aa011ebab40fa163e176e7b",
    "endpoints" : [
        "find:127.0.0.9:8080"
    ],
    "hostname" : "UT-HOST-MS",
    "status" : "UP",
    "properties" : null,
    "health_check" : {
      "mode" : "push",
      "port" : 0,
      "interval" : 30,
      "times" : 3,
      "url" : ""
    },
    "timestamp" : "1612852335",
    "data_center_info" : null,
    "mod_timestamp" : "1612852335",
    "version" : "1.0.0"
  }
}

#type Schema struct {
#  Domain        string `json:"domain,omitempty"`
#  Project       string `json:"project,omitempty"`
#  ServiceId     string `json:"serviceId,omitempty" bson:"service_id"`
#  SchemaId      string `json:"schemaId,omitempty" bson:"schema_id"`
#  Schema        string `json:"schema,omitempty"`
#  SchemaSummary string `json:"schemaSummary,omitempty" bson:"schema_summary"`
#}

# collection schema
{
  "_id" : ObjectId("6021fb9827d99d766f82e4f7"),
  "domain" : "default",
  "project" : "default",
  "service_id" : "70302da16a8311eba7cbfa163e176e7b",
  "schema_id" : "ServiceCombTestTheLimitOfSchemasServiceMS19",
  "schema" : "ServiceCombTestTheLimitOfSchemasServiceMS19",
  "schema_summary" : "ServiceCombTestTheLimitOfSchemasServiceMS19"
}

#type Rule struct {
#  Domain    string          `json:"domain,omitempty"`
#  Project   string          `json:"project,omitempty"`
#  ServiceId string          `json:"serviceId,omitempty" bson:"service_id"`
#  Rule      *pb.ServiceRule `json:"rule,omitempty"`
#}

#type ServiceRule struct {
#  RuleId       string `protobuf:"bytes,1,opt,name=ruleId" json:"ruleId,omitempty" bson:"rule_id"`
#  RuleType     string `protobuf:"bytes,2,opt,name=ruleType" json:"ruleType,omitempty" bson:"rule_type"`
#  Attribute    string `protobuf:"bytes,3,opt,name=attribute" json:"attribute,omitempty"`
#  Pattern      string `protobuf:"bytes,4,opt,name=pattern" json:"pattern,omitempty"`
#  Description  string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
#  Timestamp    string `protobuf:"bytes,6,opt,name=timestamp" json:"timestamp,omitempty"`
#  ModTimestamp string `protobuf:"bytes,7,opt,name=modTimestamp" json:"modTimestamp,omitempty" bson:"mod_timestamp"`
#}
# collection rules
{
  "_id" : ObjectId("6021fb9727d99d766f82e48a"),
  "domain" : "default",
  "project" : "default",
  "service_id" : "7026973b6a8311eba792fa163e176e7b",
  "rule" : {
    "rule_id" : "702897cf6a8311eba79dfa163e176e7b",
    "rule_type" : "BLACK",
    "attribute" : "ServiceName",
    "pattern" : "18",
    "description" : "test white",
    "timestamp" : "1612839831",
    "mod_timestamp" : "1612839831"
  }
}

#type ConsumerDep struct {
#  Domain      string                 `json:"domain,omitempty"`
#  Project     string                 `json:"project,omitempty"`
#  ConsumerId  string                 `json:"consumerId,omitempty" bson:"consumer_id"`
#  UUId        string                 `json:"uuId,omitempty" bson:"uu_id"`
#  ConsumerDep *pb.ConsumerDependency `json:"consumerDep,omitempty" bson:"consumer_dep"`
#}

#type ConsumerDependency struct {
#  Consumer  *MicroServiceKey   `protobuf:"bytes,1,opt,name=consumer" json:"consumer,omitempty"`
#  Providers []*MicroServiceKey `protobuf:"bytes,2,rep,name=providers" json:"providers,omitempty"`
#  Override  bool               `protobuf:"varint,3,opt,name=override" json:"override,omitempty"`
#}

#type MicroServiceKey struct {
#  Tenant      string `protobuf:"bytes,1,opt,name=tenant" json:"tenant,omitempty"`
#  Environment string `protobuf:"bytes,2,opt,name=environment" json:"environment,omitempty" bson:"env"`
#  AppId       string `protobuf:"bytes,3,opt,name=appId" json:"appId,omitempty" bson:"app"`
#  ServiceName string `protobuf:"bytes,4,opt,name=serviceName" json:"serviceName,omitempty" bson:"service_name"`
#  Alias       string `protobuf:"bytes,5,opt,name=alias" json:"alias,omitempty"`
#  Version     string `protobuf:"bytes,6,opt,name=version" json:"version,omitempty"`
#}

# collection dependencies
{
  "_id" : ObjectId("6021fb9527d99d766f82e45f"),
  "domain" : "new_default",
  "project" : "new_default",
  "consumer_id" : "6ea4d1c36a8311eba78dfa163e176e7b",
  "uu_id" : "6eaeb1dd6a8311eba790fa163e176e7b",
  "consumer_dep" : {
    "consumer" : {
      "tenant" : "new_default/new_default",
      "env" : "",
      "app" : "dep_create_dep_group",
      "service_name" : "dep_create_dep_consumer",
      "alias" : "",
      "version" : "1.0.0"
    },
    "providers" : null,
    "override" : false
  }
}

#type DependencyRule struct {
#  Type       string                     `json:"type,omitempty"`
#  Domain     string                     `json:"domain,omitempty"`
#  Project    string                     `json:"project,omitempty"`
#  ServiceKey *pb.MicroServiceKey        `json:"serviceKey,omitempty" bson:"service_key"`
#  Dep        *pb.MicroServiceDependency `json:"dep,omitempty"`
#}

#type MicroServiceKey struct {
#  Tenant      string `protobuf:"bytes,1,opt,name=tenant" json:"tenant,omitempty"`
#  Environment string `protobuf:"bytes,2,opt,name=environment" json:"environment,omitempty" bson:"env"`
#  AppId       string `protobuf:"bytes,3,opt,name=appId" json:"appId,omitempty" bson:"app"`
#  ServiceName string `protobuf:"bytes,4,opt,name=serviceName" json:"serviceName,omitempty" bson:"service_name"`
#  Alias       string `protobuf:"bytes,5,opt,name=alias" json:"alias,omitempty"`
#  Version     string `protobuf:"bytes,6,opt,name=version" json:"version,omitempty"`
#}

#type MicroServiceDependency struct {
#  Dependency []*MicroServiceKey `json:"Dependency,omitempty"`
#}

# collection dependencies
{
  "_id" : ObjectId("6022302751a77062a95dd0da"),
  "service_key" : {
    "app" : "create_dep_group",
    "env" : "production",
    "service_name" : "create_dep_consumer",
    "tenant" : "default/default",
    "version" : "1.0.0"
  },
  "type" : "c",
  "dep" : {
    "dependency" : [
      {
        "tenant" : "default/default",
        "env" : "",
        "app" : "service_group_provider",
        "service_name" : "service_name_provider",
        "alias" : "",
        "version" : "latest"
      }
    ]
  }
}


#type Account struct {
#  ID                  string   `json:"id,omitempty"`
#  Name                string   `json:"name,omitempty"`
#  Password            string   `json:"password,omitempty"`
#  Roles               []string `json:"roles,omitempty"`
#  TokenExpirationTime string   `json:"tokenExpirationTime,omitempty" bson:"token_expiration_time"`
#  CurrentPassword     string   `json:"currentPassword,omitempty" bson:"current_password"`
#  Status              string   `json:"status,omitempty"`
#}

# collection account
{
  "_id" : ObjectId("60223e99184f264aee398238"),
  "id" : "6038bf9f6aab11ebbcdefa163e176e7b",
  "name" : "test-account1",
  "password" : "$2a$14$eYyD9DiOA1vGXOyhPTjbhO6CYuGnOVt8VQ8V/sWEmExyvwOQeNI2i",
  "roles" : [
      "admin"
  ],
  "token_expiration_time" : "2020-12-30",
  "current_password" : "tnuocca-tset1",
  "status" : ""
}
