package db import ( "reflect" "strings" ) type Schema struct { reflect.Type pri interface{} schema interface{} } func NewSchema(pri, schema interface{}) *Schema { s := reflect.TypeOf(schema) if s.Kind() == reflect.Ptr { s = reflect.TypeOf(s).Elem() } return &Schema{ Type: s, pri: pri, schema: schema, } } func (s *Schema)GetSchemaType() reflect.Type { return s.Type } func (s *Schema)GetCollName() string { return strings.ToLower(s.GetSchemaType().Name()) } func (s *Schema)GetPriKey() string { var pri string for i := 0; i < s.NumField(); i++ { if s.Field(i).Tag.Get("pri") == "1" { pri = strings.ToLower(s.Field(i).Name) break } } return pri }