elimited BeforeXXX and AfterXXX operations with After() and Before()
This commit is contained in:
parent
69b0a9b713
commit
e9a5dddbef
38
engine.go
38
engine.go
|
@ -272,48 +272,20 @@ func (engine *Engine) Id(id int64) *Session {
|
||||||
return session.Id(id)
|
return session.Id(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply before insert Processor, affected bean is passed to closure arg
|
// Apply before Processor, affected bean is passed to closure arg
|
||||||
func (engine *Engine) BeforeInsert(closures func(interface{})) *Session {
|
func (engine *Engine) Before(closures func(interface{})) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.IsAutoClose = true
|
session.IsAutoClose = true
|
||||||
return session.BeforeInsert(closures)
|
return session.Before(closures)
|
||||||
}
|
|
||||||
|
|
||||||
// Apply before update Processor, affected bean is passed to closure arg
|
|
||||||
func (engine *Engine) BeforeUpdate(closures func(interface{})) *Session {
|
|
||||||
session := engine.NewSession()
|
|
||||||
session.IsAutoClose = true
|
|
||||||
return session.BeforeUpdate(closures)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply before delete Processor, affected bean is passed to closure arg
|
|
||||||
func (engine *Engine) BeforeDelete(closures func(interface{})) *Session {
|
|
||||||
session := engine.NewSession()
|
|
||||||
session.IsAutoClose = true
|
|
||||||
return session.BeforeDelete(closures)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply after insert Processor, affected bean is passed to closure arg
|
// Apply after insert Processor, affected bean is passed to closure arg
|
||||||
func (engine *Engine) AfterInsert(closures func(interface{})) *Session {
|
func (engine *Engine) After(closures func(interface{})) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.IsAutoClose = true
|
session.IsAutoClose = true
|
||||||
return session.AfterInsert(closures)
|
return session.After(closures)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply after update Processor, affected bean is passed to closure arg
|
|
||||||
func (engine *Engine) AfterUpdate(closures func(interface{})) *Session {
|
|
||||||
session := engine.NewSession()
|
|
||||||
session.IsAutoClose = true
|
|
||||||
return session.AfterUpdate(closures)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply after delete Processor, affected bean is passed to closure arg
|
|
||||||
func (engine *Engine) AfterDelete(closures func(interface{})) *Session {
|
|
||||||
session := engine.NewSession()
|
|
||||||
session.IsAutoClose = true
|
|
||||||
return session.AfterDelete(closures)
|
|
||||||
}
|
|
||||||
|
|
||||||
// set charset when create table, only support mysql now
|
// set charset when create table, only support mysql now
|
||||||
func (engine *Engine) Charset(charset string) *Session {
|
func (engine *Engine) Charset(charset string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
|
|
102
session.go
102
session.go
|
@ -29,12 +29,8 @@ type Session struct {
|
||||||
afterDeleteBeans []interface{}
|
afterDeleteBeans []interface{}
|
||||||
// --
|
// --
|
||||||
|
|
||||||
beforeInsertClosures []func(interface{})
|
beforeClosures []func(interface{})
|
||||||
beforeUpdateClosures []func(interface{})
|
afterClosures []func(interface{})
|
||||||
beforeDeleteClosures []func(interface{})
|
|
||||||
afterInsertClosures []func(interface{})
|
|
||||||
afterUpdateClosures []func(interface{})
|
|
||||||
afterDeleteClosures []func(interface{})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method Init reset the session as the init status.
|
// Method Init reset the session as the init status.
|
||||||
|
@ -49,12 +45,8 @@ func (session *Session) Init() {
|
||||||
session.afterInsertBeans = make([]interface{}, 0)
|
session.afterInsertBeans = make([]interface{}, 0)
|
||||||
session.afterUpdateBeans = make([]interface{}, 0)
|
session.afterUpdateBeans = make([]interface{}, 0)
|
||||||
session.afterDeleteBeans = make([]interface{}, 0)
|
session.afterDeleteBeans = make([]interface{}, 0)
|
||||||
session.beforeInsertClosures = make([]func(interface{}), 0)
|
session.beforeClosures = make([]func(interface{}), 0)
|
||||||
session.beforeUpdateClosures = make([]func(interface{}), 0)
|
session.afterClosures = make([]func(interface{}), 0)
|
||||||
session.beforeDeleteClosures = make([]func(interface{}), 0)
|
|
||||||
session.afterInsertClosures = make([]func(interface{}), 0)
|
|
||||||
session.afterUpdateClosures = make([]func(interface{}), 0)
|
|
||||||
session.afterDeleteClosures = make([]func(interface{}), 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method Close release the connection from pool
|
// Method Close release the connection from pool
|
||||||
|
@ -100,53 +92,21 @@ func (session *Session) Id(id int64) *Session {
|
||||||
return session
|
return session
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply before insert Processor, affected bean is passed to closure arg
|
// Apply before Processor, affected bean is passed to closure arg
|
||||||
func (session *Session) BeforeInsert(closures func(interface{})) *Session {
|
func (session *Session) Before(closures func(interface{})) *Session {
|
||||||
if closures != nil {
|
if closures != nil {
|
||||||
session.beforeInsertClosures = append(session.beforeInsertClosures, closures)
|
session.beforeClosures = append(session.beforeClosures, closures)
|
||||||
}
|
}
|
||||||
return session
|
return session
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply before update Processor, affected bean is passed to closure arg
|
// Apply after Processor, affected bean is passed to closure arg
|
||||||
func (session *Session) BeforeUpdate(closures func(interface{})) *Session {
|
func (session *Session) After(closures func(interface{})) *Session {
|
||||||
if closures != nil {
|
if closures != nil {
|
||||||
session.beforeUpdateClosures = append(session.beforeUpdateClosures, closures)
|
session.afterClosures = append(session.afterClosures, closures)
|
||||||
}
|
}
|
||||||
return session
|
return session
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply before delete Processor, affected bean is passed to closure arg
|
|
||||||
func (session *Session) BeforeDelete(closures func(interface{})) *Session {
|
|
||||||
if closures != nil {
|
|
||||||
session.beforeDeleteClosures = append(session.beforeDeleteClosures, closures)
|
|
||||||
}
|
|
||||||
return session
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply after insert Processor, affected bean is passed to closure arg
|
|
||||||
func (session *Session) AfterInsert(closures func(interface{})) *Session {
|
|
||||||
if closures != nil {
|
|
||||||
session.afterInsertClosures = append(session.afterInsertClosures, closures)
|
|
||||||
}
|
|
||||||
return session
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply after update Processor, affected bean is passed to closure arg
|
|
||||||
func (session *Session) AfterUpdate(closures func(interface{})) *Session {
|
|
||||||
if closures != nil {
|
|
||||||
session.afterUpdateClosures = append(session.afterUpdateClosures, closures)
|
|
||||||
}
|
|
||||||
return session
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply after delete Processor, affected bean is passed to closure arg
|
|
||||||
func (session *Session) AfterDelete(closures func(interface{})) *Session {
|
|
||||||
if closures != nil {
|
|
||||||
session.afterDeleteClosures = append(session.afterDeleteClosures, closures)
|
|
||||||
}
|
|
||||||
return session
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method Table can input a string or pointer to struct for special a table to operate.
|
// Method Table can input a string or pointer to struct for special a table to operate.
|
||||||
func (session *Session) Table(tableNameOrBean interface{}) *Session {
|
func (session *Session) Table(tableNameOrBean interface{}) *Session {
|
||||||
|
@ -324,12 +284,10 @@ func (session *Session) Commit() error {
|
||||||
session.Engine.LogSQL("COMMIT")
|
session.Engine.LogSQL("COMMIT")
|
||||||
session.IsCommitedOrRollbacked = true
|
session.IsCommitedOrRollbacked = true
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
|
||||||
if err = session.Tx.Commit(); err == nil {
|
if err = session.Tx.Commit(); err == nil {
|
||||||
// handle processors after tx committed
|
// handle processors after tx committed
|
||||||
for _, elem := range session.afterInsertBeans {
|
for _, elem := range session.afterInsertBeans {
|
||||||
for _, closure := range session.afterInsertClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(elem)
|
closure(elem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +296,7 @@ func (session *Session) Commit() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, elem := range session.afterUpdateBeans {
|
for _, elem := range session.afterUpdateBeans {
|
||||||
for _, closure := range session.afterUpdateClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(elem)
|
closure(elem)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(elem).(AfterUpdateProcessor); ok {
|
if processor, ok := interface{}(elem).(AfterUpdateProcessor); ok {
|
||||||
|
@ -346,7 +304,7 @@ func (session *Session) Commit() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, elem := range session.afterDeleteBeans {
|
for _, elem := range session.afterDeleteBeans {
|
||||||
for _, closure := range session.afterDeleteClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(elem)
|
closure(elem)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(elem).(AfterDeleteProcessor); ok {
|
if processor, ok := interface{}(elem).(AfterDeleteProcessor); ok {
|
||||||
|
@ -367,10 +325,8 @@ func (session *Session) Commit() error {
|
||||||
cleanUpFunc(&session.afterUpdateBeans)
|
cleanUpFunc(&session.afterUpdateBeans)
|
||||||
cleanUpFunc(&session.afterDeleteBeans)
|
cleanUpFunc(&session.afterDeleteBeans)
|
||||||
|
|
||||||
// !nash! shoule session based processors get cleanup?
|
// !nash! should session based processors get cleanup?
|
||||||
cleanUpProcessorsFunc(&session.afterInsertClosures)
|
cleanUpProcessorsFunc(&session.afterClosures)
|
||||||
cleanUpProcessorsFunc(&session.afterUpdateClosures)
|
|
||||||
cleanUpProcessorsFunc(&session.afterDeleteClosures)
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1456,7 +1412,7 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
colPlaces := make([]string, 0)
|
colPlaces := make([]string, 0)
|
||||||
|
|
||||||
// handle BeforeInsertProcessor
|
// handle BeforeInsertProcessor
|
||||||
for _, closure := range session.beforeInsertClosures {
|
for _, closure := range session.beforeClosures {
|
||||||
closure(elemValue)
|
closure(elemValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1542,19 +1498,19 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
session.cacheInsert(session.Statement.TableName())
|
session.cacheInsert(session.Statement.TableName())
|
||||||
}
|
}
|
||||||
|
|
||||||
hasAfterInsertClosures := len(session.afterInsertClosures) > 0
|
hasAfterClosures := len(session.afterClosures) > 0
|
||||||
for i := 0; i < size; i++ {
|
for i := 0; i < size; i++ {
|
||||||
elemValue := sliceValue.Index(i).Interface()
|
elemValue := sliceValue.Index(i).Interface()
|
||||||
// handle AfterInsertProcessor
|
// handle AfterInsertProcessor
|
||||||
if session.IsAutoCommit {
|
if session.IsAutoCommit {
|
||||||
for _, closure := range session.afterInsertClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(elemValue)
|
closure(elemValue)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(elemValue).(AfterInsertProcessor); ok {
|
if processor, ok := interface{}(elemValue).(AfterInsertProcessor); ok {
|
||||||
processor.AfterInsert()
|
processor.AfterInsert()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if hasAfterInsertClosures {
|
if hasAfterClosures {
|
||||||
session.afterInsertBeans = append(session.afterInsertBeans, elemValue)
|
session.afterInsertBeans = append(session.afterInsertBeans, elemValue)
|
||||||
} else {
|
} else {
|
||||||
if _, ok := interface{}(elemValue).(AfterInsertProcessor); ok {
|
if _, ok := interface{}(elemValue).(AfterInsertProcessor); ok {
|
||||||
|
@ -1837,7 +1793,7 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||||
session.Statement.RefTable = table
|
session.Statement.RefTable = table
|
||||||
|
|
||||||
// handle BeforeInsertProcessor
|
// handle BeforeInsertProcessor
|
||||||
for _, closure := range session.beforeInsertClosures {
|
for _, closure := range session.beforeClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(bean).(BeforeInsertProcessor); ok {
|
if processor, ok := interface{}(bean).(BeforeInsertProcessor); ok {
|
||||||
|
@ -1869,7 +1825,7 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||||
handleAfterInsertProcessorFunc := func(bean interface{}) {
|
handleAfterInsertProcessorFunc := func(bean interface{}) {
|
||||||
|
|
||||||
if session.IsAutoCommit {
|
if session.IsAutoCommit {
|
||||||
for _, closure := range session.afterInsertClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(bean).(AfterInsertProcessor); ok {
|
if processor, ok := interface{}(bean).(AfterInsertProcessor); ok {
|
||||||
|
@ -1877,7 +1833,7 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||||
processor.AfterInsert()
|
processor.AfterInsert()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(session.afterInsertClosures) > 0 {
|
if len(session.afterClosures) > 0 {
|
||||||
session.afterInsertBeans = append(session.afterInsertBeans, bean)
|
session.afterInsertBeans = append(session.afterInsertBeans, bean)
|
||||||
} else {
|
} else {
|
||||||
if _, ok := interface{}(bean).(AfterInsertProcessor); ok {
|
if _, ok := interface{}(bean).(AfterInsertProcessor); ok {
|
||||||
|
@ -2173,7 +2129,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
|
|
||||||
|
|
||||||
// handle before update processors
|
// handle before update processors
|
||||||
for _, closure := range session.beforeUpdateClosures {
|
for _, closure := range session.beforeClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2282,7 +2238,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
|
|
||||||
// handle after update processors
|
// handle after update processors
|
||||||
if session.IsAutoCommit {
|
if session.IsAutoCommit {
|
||||||
for _, closure := range session.afterUpdateClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(bean).(AfterUpdateProcessor); ok {
|
if processor, ok := interface{}(bean).(AfterUpdateProcessor); ok {
|
||||||
|
@ -2290,7 +2246,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
||||||
processor.AfterUpdate()
|
processor.AfterUpdate()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(session.afterInsertClosures) > 0 {
|
if len(session.afterClosures) > 0 {
|
||||||
session.afterUpdateBeans = append(session.afterUpdateBeans, bean)
|
session.afterUpdateBeans = append(session.afterUpdateBeans, bean)
|
||||||
} else {
|
} else {
|
||||||
if _, ok := interface{}(bean).(AfterUpdateProcessor); ok {
|
if _, ok := interface{}(bean).(AfterUpdateProcessor); ok {
|
||||||
|
@ -2367,7 +2323,7 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
|
||||||
|
|
||||||
|
|
||||||
// handle before delete processors
|
// handle before delete processors
|
||||||
for _, closure := range session.beforeDeleteClosures {
|
for _, closure := range session.beforeClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2410,7 +2366,7 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
|
||||||
|
|
||||||
// handle after delete processors
|
// handle after delete processors
|
||||||
if session.IsAutoCommit {
|
if session.IsAutoCommit {
|
||||||
for _, closure := range session.afterDeleteClosures {
|
for _, closure := range session.afterClosures {
|
||||||
closure(bean)
|
closure(bean)
|
||||||
}
|
}
|
||||||
if processor, ok := interface{}(bean).(AfterDeleteProcessor); ok {
|
if processor, ok := interface{}(bean).(AfterDeleteProcessor); ok {
|
||||||
|
@ -2418,7 +2374,7 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
|
||||||
processor.AfterDelete()
|
processor.AfterDelete()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(session.afterDeleteClosures) > 0 {
|
if len(session.afterClosures) > 0 {
|
||||||
session.afterDeleteBeans = append(session.afterDeleteBeans, bean)
|
session.afterDeleteBeans = append(session.afterDeleteBeans, bean)
|
||||||
} else {
|
} else {
|
||||||
if _, ok := interface{}(bean).(AfterDeleteProcessor); ok {
|
if _, ok := interface{}(bean).(AfterDeleteProcessor); ok {
|
||||||
|
|
Loading…
Reference in New Issue