diff --git a/templates/main/02_hooks.go.tpl b/templates/main/02_hooks.go.tpl index 8808a3b19..ba768acd0 100644 --- a/templates/main/02_hooks.go.tpl +++ b/templates/main/02_hooks.go.tpl @@ -1,23 +1,32 @@ {{- if not .NoHooks -}} {{- $alias := .Aliases.Table .Table.Name}} +var {{$alias.DownSingular}}AfterSelectMu sync.Mutex var {{$alias.DownSingular}}AfterSelectHooks []{{$alias.UpSingular}}Hook {{if or (not .Table.IsView) (.Table.ViewCapabilities.CanInsert) -}} +var {{$alias.DownSingular}}BeforeInsertMu sync.Mutex var {{$alias.DownSingular}}BeforeInsertHooks []{{$alias.UpSingular}}Hook +var {{$alias.DownSingular}}AfterInsertMu sync.Mutex var {{$alias.DownSingular}}AfterInsertHooks []{{$alias.UpSingular}}Hook {{- end}} {{if not .Table.IsView -}} +var {{$alias.DownSingular}}BeforeUpdateMu sync.Mutex var {{$alias.DownSingular}}BeforeUpdateHooks []{{$alias.UpSingular}}Hook +var {{$alias.DownSingular}}AfterUpdateMu sync.Mutex var {{$alias.DownSingular}}AfterUpdateHooks []{{$alias.UpSingular}}Hook +var {{$alias.DownSingular}}BeforeDeleteMu sync.Mutex var {{$alias.DownSingular}}BeforeDeleteHooks []{{$alias.UpSingular}}Hook +var {{$alias.DownSingular}}AfterDeleteMu sync.Mutex var {{$alias.DownSingular}}AfterDeleteHooks []{{$alias.UpSingular}}Hook {{- end}} {{if or (not .Table.IsView) (.Table.ViewCapabilities.CanUpsert) -}} +var {{$alias.DownSingular}}BeforeUpsertMu sync.Mutex var {{$alias.DownSingular}}BeforeUpsertHooks []{{$alias.UpSingular}}Hook +var {{$alias.DownSingular}}AfterUpsertMu sync.Mutex var {{$alias.DownSingular}}AfterUpsertHooks []{{$alias.UpSingular}}Hook {{- end}} @@ -184,28 +193,46 @@ func (o *{{$alias.UpSingular}}) doAfterUpsertHooks({{if .NoContext}}exec boil.Ex func Add{{$alias.UpSingular}}Hook(hookPoint boil.HookPoint, {{$alias.DownSingular}}Hook {{$alias.UpSingular}}Hook) { switch hookPoint { case boil.AfterSelectHook: + {{$alias.DownSingular}}AfterSelectMu.Lock() {{$alias.DownSingular}}AfterSelectHooks = append({{$alias.DownSingular}}AfterSelectHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}AfterSelectMu.Unlock() {{- if or (not .Table.IsView) (.Table.ViewCapabilities.CanInsert)}} case boil.BeforeInsertHook: + {{$alias.DownSingular}}BeforeInsertMu.Lock() {{$alias.DownSingular}}BeforeInsertHooks = append({{$alias.DownSingular}}BeforeInsertHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}BeforeInsertMu.Unlock() case boil.AfterInsertHook: + {{$alias.DownSingular}}AfterInsertMu.Lock() {{$alias.DownSingular}}AfterInsertHooks = append({{$alias.DownSingular}}AfterInsertHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}AfterInsertMu.Unlock() {{- end}} {{- if not .Table.IsView}} case boil.BeforeUpdateHook: + {{$alias.DownSingular}}BeforeUpdateMu.Lock() {{$alias.DownSingular}}BeforeUpdateHooks = append({{$alias.DownSingular}}BeforeUpdateHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}BeforeUpdateMu.Unlock() case boil.AfterUpdateHook: + {{$alias.DownSingular}}AfterUpdateMu.Lock() {{$alias.DownSingular}}AfterUpdateHooks = append({{$alias.DownSingular}}AfterUpdateHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}AfterUpdateMu.Unlock() case boil.BeforeDeleteHook: + {{$alias.DownSingular}}BeforeDeleteMu.Lock() {{$alias.DownSingular}}BeforeDeleteHooks = append({{$alias.DownSingular}}BeforeDeleteHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}BeforeDeleteMu.Unlock() case boil.AfterDeleteHook: + {{$alias.DownSingular}}AfterDeleteMu.Lock() {{$alias.DownSingular}}AfterDeleteHooks = append({{$alias.DownSingular}}AfterDeleteHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}AfterDeleteMu.Unlock() {{- end}} {{- if or (not .Table.IsView) (.Table.ViewCapabilities.CanInsert)}} case boil.BeforeUpsertHook: + {{$alias.DownSingular}}BeforeUpsertMu.Lock() {{$alias.DownSingular}}BeforeUpsertHooks = append({{$alias.DownSingular}}BeforeUpsertHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}BeforeUpsertMu.Unlock() case boil.AfterUpsertHook: + {{$alias.DownSingular}}AfterUpsertMu.Lock() {{$alias.DownSingular}}AfterUpsertHooks = append({{$alias.DownSingular}}AfterUpsertHooks, {{$alias.DownSingular}}Hook) + {{$alias.DownSingular}}AfterUpsertMu.Unlock() {{- end}} } }