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  }