github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgSql/orm.go (about) 1 package kmgSql 2 3 import ( 4 "fmt" 5 6 "github.com/bronze1man/kmg/typeTransform" 7 ) 8 9 type OrmObject interface { 10 GetIdFieldName() string 11 GetTableName() string 12 } 13 14 func OrmFromRow(obj OrmObject, row map[string]string) (OrmObject, error) { 15 err := typeTransform.Transform(row, &obj) 16 return obj, err 17 } 18 19 func MustOrmFromRow(obj OrmObject, row map[string]string) { 20 err := typeTransform.Transform(row, &obj) 21 if err != nil { 22 panic(err) 23 } 24 } 25 26 func OrmToRow(obj OrmObject) (row map[string]string, err error) { 27 row = map[string]string{} 28 err = typeTransform.Transform(obj, &row) 29 return row, err 30 } 31 32 func MustOrmToRow(obj OrmObject) (row map[string]string) { 33 row = map[string]string{} 34 err := typeTransform.Transform(obj, &row) 35 if err != nil { 36 panic(err) 37 } 38 return row 39 } 40 41 func MustOrmInsert(obj OrmObject) { 42 row := MustOrmToRow(obj) 43 MustInsert(obj.GetTableName(), row) 44 } 45 46 func MustOrmUpdate(obj OrmObject) { 47 row := MustOrmToRow(obj) 48 MustUpdateById(obj.GetTableName(), obj.GetIdFieldName(), row) 49 } 50 51 func OrmPersist(obj OrmObject) (lastInsertId int, err error) { 52 row, err := OrmToRow(obj) 53 if err != nil { 54 return 0, err 55 } 56 return ReplaceById(obj.GetTableName(), obj.GetIdFieldName(), row) 57 } 58 59 func MustOrmPersist(obj OrmObject) { 60 _, err := OrmPersist(obj) 61 if err != nil { 62 panic(err) 63 } 64 } 65 66 func MustOrmFromId(obj OrmObject, id string) { 67 row := MustGetOneWhere(obj.GetTableName(), obj.GetIdFieldName(), id) 68 if row == nil { 69 panic(fmt.Sprintf("[kmgSql.MustOrmFromId] Table:%s.%s=%s not exist", obj.GetTableName(), obj.GetIdFieldName(), id)) 70 } 71 obj, err := OrmFromRow(obj, row) 72 if err != nil { 73 panic(err) 74 } 75 }