mirror of
https://github.com/geektutu/7days-golang.git
synced 2024-04-21 12:32:11 +00:00
Merge pull request #12 from chaunceyjiang/tableName
gee-orm: support user-defined table names
This commit is contained in:
@@ -37,12 +37,23 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,15 +37,25 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
for i := 0; i < modelType.NumField(); i++ {
|
||||
p := modelType.Field(i)
|
||||
if !p.Anonymous && ast.IsExported(p.Name) {
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,15 +37,25 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
for i := 0; i < modelType.NumField(); i++ {
|
||||
p := modelType.Field(i)
|
||||
if !p.Anonymous && ast.IsExported(p.Name) {
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,12 +37,23 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,15 +37,25 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
for i := 0; i < modelType.NumField(); i++ {
|
||||
p := modelType.Field(i)
|
||||
if !p.Anonymous && ast.IsExported(p.Name) {
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,15 +37,25 @@ func (schema *Schema) RecordValues(dest interface{}) []interface{} {
|
||||
return fieldValues
|
||||
}
|
||||
|
||||
type ITableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
// Parse a struct to a Schema instance
|
||||
func Parse(dest interface{}, d dialect.Dialect) *Schema {
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
var tableName string
|
||||
t, ok := dest.(ITableName)
|
||||
if !ok {
|
||||
tableName = modelType.Name()
|
||||
} else {
|
||||
tableName = t.TableName()
|
||||
}
|
||||
schema := &Schema{
|
||||
Model: dest,
|
||||
Name: modelType.Name(),
|
||||
Name: tableName,
|
||||
fieldMap: make(map[string]*Field),
|
||||
}
|
||||
|
||||
for i := 0; i < modelType.NumField(); i++ {
|
||||
p := modelType.Field(i)
|
||||
if !p.Anonymous && ast.IsExported(p.Name) {
|
||||
|
||||
@@ -33,3 +33,19 @@ func TestSchema_RecordValues(t *testing.T) {
|
||||
t.Fatal("failed to get values")
|
||||
}
|
||||
}
|
||||
|
||||
type UserTest struct {
|
||||
Name string `geeorm:"PRIMARY KEY"`
|
||||
Age int
|
||||
}
|
||||
|
||||
func (u *UserTest) TableName() string {
|
||||
return "ns_user_test"
|
||||
}
|
||||
|
||||
func TestSchema_TableName(t *testing.T) {
|
||||
schema := Parse(&UserTest{}, TestDial)
|
||||
if schema.Name != "ns_user_test" || len(schema.Fields) != 2 {
|
||||
t.Fatal("failed to parse User struct")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user