schema.go 691 Bytes
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
}