options.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package crud
  2. import (
  3. "context"
  4. "git.nspix.com/golang/micro/gateway/http"
  5. "gorm.io/gorm"
  6. )
  7. type Callbacks struct {
  8. BeforeQuery QueryCallback
  9. EachQuery EachQueryCallback
  10. BeforeSave SaveCallback
  11. AfterSave SaveCallback
  12. BeforeInsert SaveCallback
  13. AfterInsert SaveCallback
  14. BeforeUpdate SaveCallback
  15. AfterUpdate SaveCallback
  16. BeforeDelete DeleteCallback
  17. AfterDelete SaveCallback
  18. }
  19. type Options struct {
  20. ctx context.Context
  21. enable *int32
  22. DB *gorm.DB
  23. Formatter *Formatter
  24. Prefix string
  25. Callbacks Callbacks
  26. Middleware []http.Middleware
  27. Scenarios []string
  28. }
  29. type Option func(o *Options)
  30. func WithContext(ctx context.Context) Option {
  31. return func(o *Options) {
  32. o.ctx = ctx
  33. }
  34. }
  35. func WithMiddleware(middleware ...http.Middleware) Option {
  36. return func(o *Options) {
  37. o.Middleware = middleware
  38. }
  39. }
  40. func WithFormatter(formatter *Formatter) Option {
  41. return func(o *Options) {
  42. o.Formatter = formatter
  43. }
  44. }
  45. func WithScenarios(ss []string) Option {
  46. return func(o *Options) {
  47. o.Scenarios = ss
  48. }
  49. }
  50. func WithDB(db *gorm.DB) Option {
  51. return func(o *Options) {
  52. o.DB = db
  53. }
  54. }
  55. func WithPrefix(prefix string) Option {
  56. return func(o *Options) {
  57. o.Prefix = prefix
  58. }
  59. }
  60. func WithEnable(enable *int32) Option {
  61. return func(o *Options) {
  62. o.enable = enable
  63. }
  64. }
  65. func WithCallback(cbs Callbacks) Option {
  66. return func(o *Options) {
  67. o.Callbacks = cbs
  68. }
  69. }