You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

plugin.go 2.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package sql
  18. import (
  19. "seata.apache.org/seata-go/pkg/datasource/sql/exec"
  20. "seata.apache.org/seata-go/pkg/datasource/sql/exec/at"
  21. "seata.apache.org/seata-go/pkg/datasource/sql/hook"
  22. "seata.apache.org/seata-go/pkg/datasource/sql/types"
  23. "seata.apache.org/seata-go/pkg/datasource/sql/undo"
  24. "seata.apache.org/seata-go/pkg/datasource/sql/undo/builder"
  25. "seata.apache.org/seata-go/pkg/datasource/sql/undo/mysql"
  26. )
  27. func Init() {
  28. hookRegister()
  29. executorRegister()
  30. undoInit()
  31. initDriver()
  32. }
  33. func hookRegister() {
  34. exec.RegisterHook(hook.NewLoggerSQLHook())
  35. exec.RegisterHook(hook.NewUndoLogSQLHook())
  36. }
  37. func executorRegister() {
  38. at.Init()
  39. }
  40. func undoInit() {
  41. mysqlUndoLogInit()
  42. }
  43. func mysqlUndoLogInit() {
  44. mysql.InitUndoLogManager()
  45. undo.RegisterUndoLogBuilder(types.DeleteExecutor, builder.GetMySQLDeleteUndoLogBuilder)
  46. undo.RegisterUndoLogBuilder(types.InsertExecutor, builder.GetMySQLInsertUndoLogBuilder)
  47. undo.RegisterUndoLogBuilder(types.InsertOnDuplicateExecutor, builder.GetMySQLInsertOnDuplicateUndoLogBuilder)
  48. undo.RegisterUndoLogBuilder(types.MultiExecutor, builder.GetMySQLMultiUndoLogBuilder)
  49. undo.RegisterUndoLogBuilder(types.UpdateExecutor, builder.GetMySQLUpdateUndoLogBuilder)
  50. }