webhookdb 1.2.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/admin-dist/assets/index-6aebf805.js +264 -0
  3. data/admin-dist/favicon.ico +0 -0
  4. data/admin-dist/index.html +130 -0
  5. data/admin-dist/manifest.json +15 -0
  6. data/data/messages/replicators/url-recorder.liquid +20 -0
  7. data/data/messages/templates/errors/signalwire_send_sms.email.liquid +31 -0
  8. data/data/messages/web/install-customer-login.liquid +6 -5
  9. data/data/messages/web/install-error.liquid +1 -1
  10. data/data/messages/web/install-forbidden.liquid +25 -0
  11. data/data/messages/web/install-org-chooser.liquid +40 -0
  12. data/data/messages/web/install-success.liquid +2 -1
  13. data/data/messages/web/install.liquid +2 -1
  14. data/data/messages/web/partials/head.liquid +2 -0
  15. data/data/messages/web/styles.liquid +24 -0
  16. data/db/migrations/041_views.rb +20 -0
  17. data/db/migrations/042_sint_lock.rb +10 -0
  18. data/db/migrations/043_text_search.rb +28 -0
  19. data/db/migrations/044_oauth_session_token_cache.rb +21 -0
  20. data/integration/auth_spec.rb +2 -2
  21. data/lib/sequel/plugins/text_searchable.rb +165 -0
  22. data/lib/sequel/text_searchable.rb +42 -0
  23. data/lib/webhookdb/admin_api/auth.rb +24 -3
  24. data/lib/webhookdb/admin_api/data_provider.rb +196 -0
  25. data/lib/webhookdb/admin_api/entities.rb +143 -28
  26. data/lib/webhookdb/admin_api.rb +0 -2
  27. data/lib/webhookdb/api/auth.rb +5 -6
  28. data/lib/webhookdb/api/db.rb +31 -6
  29. data/lib/webhookdb/api/entities.rb +7 -1
  30. data/lib/webhookdb/api/helpers.rb +6 -25
  31. data/lib/webhookdb/api/install.rb +204 -79
  32. data/lib/webhookdb/api/organizations.rb +14 -12
  33. data/lib/webhookdb/api/saved_queries.rb +9 -3
  34. data/lib/webhookdb/api/saved_views.rb +99 -0
  35. data/lib/webhookdb/api/service_integrations.rb +15 -9
  36. data/lib/webhookdb/api/subscriptions.rb +3 -1
  37. data/lib/webhookdb/api/sync_targets.rb +9 -7
  38. data/lib/webhookdb/api/system.rb +1 -0
  39. data/lib/webhookdb/api/webhook_subscriptions.rb +3 -1
  40. data/lib/webhookdb/apps.rb +30 -7
  41. data/lib/webhookdb/async/audit_logger.rb +2 -0
  42. data/lib/webhookdb/async.rb +5 -0
  43. data/lib/webhookdb/backfill_job/service_integration_lock.rb +22 -0
  44. data/lib/webhookdb/backfill_job.rb +9 -0
  45. data/lib/webhookdb/customer.rb +5 -0
  46. data/lib/webhookdb/database_document.rb +1 -1
  47. data/lib/webhookdb/db_adapter/default_sql.rb +1 -1
  48. data/lib/webhookdb/db_adapter.rb +20 -4
  49. data/lib/webhookdb/fixtures/message_bodies.rb +34 -0
  50. data/lib/webhookdb/fixtures/organizations.rb +5 -0
  51. data/lib/webhookdb/fixtures/roles.rb +14 -0
  52. data/lib/webhookdb/fixtures/saved_views.rb +25 -0
  53. data/lib/webhookdb/fixtures/webhook_subscription_deliveries.rb +18 -0
  54. data/lib/webhookdb/http.rb +8 -2
  55. data/lib/webhookdb/icalendar.rb +3 -0
  56. data/lib/webhookdb/idempotency.rb +69 -22
  57. data/lib/webhookdb/increase.rb +69 -21
  58. data/lib/webhookdb/intercom.rb +10 -3
  59. data/lib/webhookdb/jobs/backfill.rb +3 -1
  60. data/lib/webhookdb/jobs/emailer.rb +0 -1
  61. data/lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb +19 -0
  62. data/lib/webhookdb/jobs/icalendar_enqueue_syncs.rb +1 -1
  63. data/lib/webhookdb/jobs/icalendar_sync.rb +1 -1
  64. data/lib/webhookdb/jobs/increase_event_handler.rb +20 -0
  65. data/lib/webhookdb/jobs/scheduled_backfills.rb +2 -1
  66. data/lib/webhookdb/jobs/sync_target_run_sync.rb +3 -1
  67. data/lib/webhookdb/message/body.rb +6 -4
  68. data/lib/webhookdb/message/delivery.rb +2 -0
  69. data/lib/webhookdb/messages/error_icalendar_fetch.rb +1 -2
  70. data/lib/webhookdb/messages/error_signalwire_send_sms.rb +48 -0
  71. data/lib/webhookdb/oauth/fake_provider.rb +44 -0
  72. data/lib/webhookdb/oauth/front_provider.rb +1 -2
  73. data/lib/webhookdb/oauth/increase_provider.rb +80 -0
  74. data/lib/webhookdb/oauth/intercom_provider.rb +3 -11
  75. data/lib/webhookdb/oauth/session.rb +20 -0
  76. data/lib/webhookdb/oauth.rb +7 -21
  77. data/lib/webhookdb/organization/alerting.rb +2 -0
  78. data/lib/webhookdb/organization/database_migration.rb +3 -0
  79. data/lib/webhookdb/organization.rb +37 -6
  80. data/lib/webhookdb/organization_membership.rb +14 -7
  81. data/lib/webhookdb/postgres.rb +2 -0
  82. data/lib/webhookdb/replicator/base.rb +1 -0
  83. data/lib/webhookdb/replicator/docgen.rb +9 -1
  84. data/lib/webhookdb/replicator/fake.rb +2 -3
  85. data/lib/webhookdb/replicator/front_signalwire_message_channel_app_v1.rb +49 -14
  86. data/lib/webhookdb/replicator/icalendar_calendar_v1.rb +97 -17
  87. data/lib/webhookdb/replicator/icalendar_event_v1.rb +104 -2
  88. data/lib/webhookdb/replicator/increase_account_number_v1.rb +6 -43
  89. data/lib/webhookdb/replicator/increase_account_transfer_v1.rb +7 -24
  90. data/lib/webhookdb/replicator/increase_account_v1.rb +7 -31
  91. data/lib/webhookdb/replicator/increase_ach_transfer_v1.rb +5 -43
  92. data/lib/webhookdb/replicator/increase_app_v1.rb +78 -0
  93. data/lib/webhookdb/replicator/increase_check_transfer_v1.rb +23 -29
  94. data/lib/webhookdb/replicator/increase_event_v1.rb +41 -0
  95. data/lib/webhookdb/replicator/increase_limit_v1.rb +9 -34
  96. data/lib/webhookdb/replicator/increase_transaction_v1.rb +5 -30
  97. data/lib/webhookdb/replicator/increase_v1_mixin.rb +58 -78
  98. data/lib/webhookdb/replicator/increase_wire_transfer_v1.rb +5 -24
  99. data/lib/webhookdb/replicator/intercom_contact_v1.rb +51 -4
  100. data/lib/webhookdb/replicator/intercom_conversation_v1.rb +42 -6
  101. data/lib/webhookdb/replicator/intercom_marketplace_root_v1.rb +2 -13
  102. data/lib/webhookdb/replicator/intercom_v1_mixin.rb +20 -16
  103. data/lib/webhookdb/replicator/oauth_refresh_access_token_mixin.rb +1 -1
  104. data/lib/webhookdb/replicator/sponsy_v1_mixin.rb +1 -1
  105. data/lib/webhookdb/replicator/transistor_episode_v1.rb +17 -0
  106. data/lib/webhookdb/replicator/url_recorder_v1.rb +137 -0
  107. data/lib/webhookdb/replicator/webhook_request.rb +4 -0
  108. data/lib/webhookdb/replicator.rb +8 -0
  109. data/lib/webhookdb/role.rb +5 -2
  110. data/lib/webhookdb/saved_query.rb +23 -0
  111. data/lib/webhookdb/saved_view.rb +73 -0
  112. data/lib/webhookdb/sentry.rb +2 -0
  113. data/lib/webhookdb/service/entities.rb +0 -4
  114. data/lib/webhookdb/service/helpers.rb +5 -0
  115. data/lib/webhookdb/service/middleware.rb +9 -0
  116. data/lib/webhookdb/service/types.rb +10 -8
  117. data/lib/webhookdb/service/validators.rb +1 -2
  118. data/lib/webhookdb/service/view_api.rb +1 -1
  119. data/lib/webhookdb/service_integration.rb +17 -15
  120. data/lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb +8 -8
  121. data/lib/webhookdb/spec_helpers/whdb.rb +3 -2
  122. data/lib/webhookdb/subscription.rb +2 -0
  123. data/lib/webhookdb/sync_target.rb +10 -2
  124. data/lib/webhookdb/tasks/message.rb +3 -1
  125. data/lib/webhookdb/version.rb +1 -1
  126. data/lib/webhookdb/webhook_subscription/delivery.rb +2 -0
  127. data/lib/webhookdb/webhook_subscription.rb +2 -0
  128. metadata +57 -9
  129. data/lib/webhookdb/admin_api/customers.rb +0 -63
  130. data/lib/webhookdb/admin_api/message_deliveries.rb +0 -61
  131. data/lib/webhookdb/admin_api/roles.rb +0 -15
@@ -8,6 +8,7 @@ require "webhookdb/webhook_subscription"
8
8
  # See WebhookSubscription for more details.
9
9
  class Webhookdb::WebhookSubscription::Delivery < Webhookdb::Postgres::Model(:webhook_subscription_deliveries)
10
10
  plugin :timestamps
11
+ plugin :text_searchable, terms: [:webhook_subscription]
11
12
 
12
13
  many_to_one :webhook_subscription, class: "Webhookdb::WebhookSubscription"
13
14
 
@@ -72,6 +73,7 @@ end
72
73
  # attempt_http_response_statuses | smallint[] | NOT NULL DEFAULT ARRAY[]::smallint[]
73
74
  # payload | jsonb | NOT NULL
74
75
  # webhook_subscription_id | integer | NOT NULL
76
+ # text_search | tsvector |
75
77
  # Indexes:
76
78
  # webhook_subscription_deliveries_pkey | PRIMARY KEY btree (id)
77
79
  # webhook_subscription_deliveries_webhook_subscription_id_index | btree (webhook_subscription_id)
@@ -23,6 +23,7 @@ require "webhookdb/jobs/webhook_subscription_delivery_attempt"
23
23
  #
24
24
  class Webhookdb::WebhookSubscription < Webhookdb::Postgres::Model(:webhook_subscriptions)
25
25
  plugin :timestamps
26
+ plugin :text_searchable, terms: [:organization, :service_integration, :deliver_to_url, :created_by]
26
27
  plugin :column_encryption do |enc|
27
28
  enc.column :webhook_secret
28
29
  end
@@ -212,6 +213,7 @@ end
212
213
  # updated_at | timestamp with time zone |
213
214
  # created_by_id | integer |
214
215
  # deactivated_at | timestamp with time zone |
216
+ # text_search | tsvector |
215
217
  # Indexes:
216
218
  # webhook_subscriptions_pkey | PRIMARY KEY btree (id)
217
219
  # webhook_subscriptions_opaque_id_key | UNIQUE btree (opaque_id)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webhookdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WebhookDB
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-05 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -472,6 +472,20 @@ dependencies:
472
472
  - - "~>"
473
473
  - !ruby/object:Gem::Version
474
474
  version: '3.2'
475
+ - !ruby/object:Gem::Dependency
476
+ name: rack-spa
477
+ requirement: !ruby/object:Gem::Requirement
478
+ requirements:
479
+ - - "~>"
480
+ - !ruby/object:Gem::Version
481
+ version: '0.11'
482
+ type: :runtime
483
+ prerelease: false
484
+ version_requirements: !ruby/object:Gem::Requirement
485
+ requirements:
486
+ - - "~>"
487
+ - !ruby/object:Gem::Version
488
+ version: '0.11'
475
489
  - !ruby/object:Gem::Dependency
476
490
  name: rack-ssl-enforcer
477
491
  requirement: !ruby/object:Gem::Requirement
@@ -548,28 +562,28 @@ dependencies:
548
562
  requirements:
549
563
  - - "~>"
550
564
  - !ruby/object:Gem::Version
551
- version: '5.15'
565
+ version: '5.17'
552
566
  type: :runtime
553
567
  prerelease: false
554
568
  version_requirements: !ruby/object:Gem::Requirement
555
569
  requirements:
556
570
  - - "~>"
557
571
  - !ruby/object:Gem::Version
558
- version: '5.15'
572
+ version: '5.17'
559
573
  - !ruby/object:Gem::Dependency
560
574
  name: sentry-sidekiq
561
575
  requirement: !ruby/object:Gem::Requirement
562
576
  requirements:
563
577
  - - "~>"
564
578
  - !ruby/object:Gem::Version
565
- version: '5.15'
579
+ version: '5.17'
566
580
  type: :runtime
567
581
  prerelease: false
568
582
  version_requirements: !ruby/object:Gem::Requirement
569
583
  requirements:
570
584
  - - "~>"
571
585
  - !ruby/object:Gem::Version
572
- version: '5.15'
586
+ version: '5.17'
573
587
  - !ruby/object:Gem::Dependency
574
588
  name: sequel
575
589
  requirement: !ruby/object:Gem::Requirement
@@ -689,6 +703,9 @@ dependencies:
689
703
  - - "~>"
690
704
  - !ruby/object:Gem::Version
691
705
  version: '1.6'
706
+ - - ">="
707
+ - !ruby/object:Gem::Version
708
+ version: 1.6.2
692
709
  type: :runtime
693
710
  prerelease: false
694
711
  version_requirements: !ruby/object:Gem::Requirement
@@ -696,6 +713,9 @@ dependencies:
696
713
  - - "~>"
697
714
  - !ruby/object:Gem::Version
698
715
  version: '1.6'
716
+ - - ">="
717
+ - !ruby/object:Gem::Version
718
+ version: 1.6.2
699
719
  - !ruby/object:Gem::Dependency
700
720
  name: sidekiq-cron
701
721
  requirement: !ruby/object:Gem::Requirement
@@ -782,6 +802,10 @@ executables: []
782
802
  extensions: []
783
803
  extra_rdoc_files: []
784
804
  files:
805
+ - admin-dist/assets/index-6aebf805.js
806
+ - admin-dist/favicon.ico
807
+ - admin-dist/index.html
808
+ - admin-dist/manifest.json
785
809
  - data/messages/layouts/blank.email.liquid
786
810
  - data/messages/layouts/minimal.email.liquid
787
811
  - data/messages/layouts/standard.email.liquid
@@ -791,8 +815,10 @@ files:
791
815
  - data/messages/partials/greeting.liquid
792
816
  - data/messages/partials/logo_header.liquid
793
817
  - data/messages/partials/signoff.liquid
818
+ - data/messages/replicators/url-recorder.liquid
794
819
  - data/messages/styles/v1.liquid
795
820
  - data/messages/templates/errors/icalendar_fetch.email.liquid
821
+ - data/messages/templates/errors/signalwire_send_sms.email.liquid
796
822
  - data/messages/templates/invite.email.liquid
797
823
  - data/messages/templates/new_customer.email.liquid
798
824
  - data/messages/templates/org_database_migration_finished.email.liquid
@@ -808,10 +834,13 @@ files:
808
834
  - data/messages/templates/verification.sms.liquid
809
835
  - data/messages/web/install-customer-login.liquid
810
836
  - data/messages/web/install-error.liquid
837
+ - data/messages/web/install-forbidden.liquid
838
+ - data/messages/web/install-org-chooser.liquid
811
839
  - data/messages/web/install-success.liquid
812
840
  - data/messages/web/install.liquid
813
841
  - data/messages/web/partials/footer.liquid
814
842
  - data/messages/web/partials/form_error.liquid
843
+ - data/messages/web/partials/head.liquid
815
844
  - data/messages/web/partials/header.liquid
816
845
  - data/messages/web/styles.liquid
817
846
  - data/windows_tz.txt
@@ -855,6 +884,10 @@ files:
855
884
  - db/migrations/038_webhookdb_api_key.rb
856
885
  - db/migrations/039_saved_query.rb
857
886
  - db/migrations/040_saved_query_fix_unique.rb
887
+ - db/migrations/041_views.rb
888
+ - db/migrations/042_sint_lock.rb
889
+ - db/migrations/043_text_search.rb
890
+ - db/migrations/044_oauth_session_token_cache.rb
858
891
  - integration/async_spec.rb
859
892
  - integration/auth_spec.rb
860
893
  - integration/database_spec.rb
@@ -864,15 +897,15 @@ files:
864
897
  - lib/amigo/durable_job.rb
865
898
  - lib/pry/clipboard.rb
866
899
  - lib/sequel/advisory_lock.rb
900
+ - lib/sequel/plugins/text_searchable.rb
901
+ - lib/sequel/text_searchable.rb
867
902
  - lib/webhookdb.rb
868
903
  - lib/webhookdb/admin.rb
869
904
  - lib/webhookdb/admin_api.rb
870
905
  - lib/webhookdb/admin_api/auth.rb
871
- - lib/webhookdb/admin_api/customers.rb
906
+ - lib/webhookdb/admin_api/data_provider.rb
872
907
  - lib/webhookdb/admin_api/database_documents.rb
873
908
  - lib/webhookdb/admin_api/entities.rb
874
- - lib/webhookdb/admin_api/message_deliveries.rb
875
- - lib/webhookdb/admin_api/roles.rb
876
909
  - lib/webhookdb/aggregate_result.rb
877
910
  - lib/webhookdb/api.rb
878
911
  - lib/webhookdb/api/auth.rb
@@ -886,6 +919,7 @@ files:
886
919
  - lib/webhookdb/api/organizations.rb
887
920
  - lib/webhookdb/api/replay.rb
888
921
  - lib/webhookdb/api/saved_queries.rb
922
+ - lib/webhookdb/api/saved_views.rb
889
923
  - lib/webhookdb/api/service_integrations.rb
890
924
  - lib/webhookdb/api/services.rb
891
925
  - lib/webhookdb/api/stripe.rb
@@ -902,6 +936,7 @@ files:
902
936
  - lib/webhookdb/async/scheduled_job.rb
903
937
  - lib/webhookdb/aws.rb
904
938
  - lib/webhookdb/backfill_job.rb
939
+ - lib/webhookdb/backfill_job/service_integration_lock.rb
905
940
  - lib/webhookdb/backfiller.rb
906
941
  - lib/webhookdb/cloudflare.rb
907
942
  - lib/webhookdb/connection_cache.rb
@@ -928,16 +963,20 @@ files:
928
963
  - lib/webhookdb/fixtures/database_documents.rb
929
964
  - lib/webhookdb/fixtures/faker.rb
930
965
  - lib/webhookdb/fixtures/logged_webhooks.rb
966
+ - lib/webhookdb/fixtures/message_bodies.rb
931
967
  - lib/webhookdb/fixtures/message_deliveries.rb
932
968
  - lib/webhookdb/fixtures/oauth_sessions.rb
933
969
  - lib/webhookdb/fixtures/organization_database_migrations.rb
934
970
  - lib/webhookdb/fixtures/organization_memberships.rb
935
971
  - lib/webhookdb/fixtures/organizations.rb
936
972
  - lib/webhookdb/fixtures/reset_codes.rb
973
+ - lib/webhookdb/fixtures/roles.rb
937
974
  - lib/webhookdb/fixtures/saved_queries.rb
975
+ - lib/webhookdb/fixtures/saved_views.rb
938
976
  - lib/webhookdb/fixtures/service_integrations.rb
939
977
  - lib/webhookdb/fixtures/subscriptions.rb
940
978
  - lib/webhookdb/fixtures/sync_targets.rb
979
+ - lib/webhookdb/fixtures/webhook_subscription_deliveries.rb
941
980
  - lib/webhookdb/fixtures/webhook_subscriptions.rb
942
981
  - lib/webhookdb/formatting.rb
943
982
  - lib/webhookdb/front.rb
@@ -961,8 +1000,10 @@ files:
961
1000
  - lib/webhookdb/jobs/developer_alert_handle.rb
962
1001
  - lib/webhookdb/jobs/durable_job_recheck_poller.rb
963
1002
  - lib/webhookdb/jobs/emailer.rb
1003
+ - lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb
964
1004
  - lib/webhookdb/jobs/icalendar_enqueue_syncs.rb
965
1005
  - lib/webhookdb/jobs/icalendar_sync.rb
1006
+ - lib/webhookdb/jobs/increase_event_handler.rb
966
1007
  - lib/webhookdb/jobs/logged_webhook_replay.rb
967
1008
  - lib/webhookdb/jobs/logged_webhook_resilient_replay.rb
968
1009
  - lib/webhookdb/jobs/message_dispatched.rb
@@ -999,6 +1040,7 @@ files:
999
1040
  - lib/webhookdb/message/template.rb
1000
1041
  - lib/webhookdb/message/transport.rb
1001
1042
  - lib/webhookdb/messages/error_icalendar_fetch.rb
1043
+ - lib/webhookdb/messages/error_signalwire_send_sms.rb
1002
1044
  - lib/webhookdb/messages/invite.rb
1003
1045
  - lib/webhookdb/messages/new_customer.rb
1004
1046
  - lib/webhookdb/messages/org_database_migration_finished.rb
@@ -1009,7 +1051,9 @@ files:
1009
1051
  - lib/webhookdb/microsoft_calendar.rb
1010
1052
  - lib/webhookdb/nextpax.rb
1011
1053
  - lib/webhookdb/oauth.rb
1054
+ - lib/webhookdb/oauth/fake_provider.rb
1012
1055
  - lib/webhookdb/oauth/front_provider.rb
1056
+ - lib/webhookdb/oauth/increase_provider.rb
1013
1057
  - lib/webhookdb/oauth/intercom_provider.rb
1014
1058
  - lib/webhookdb/oauth/session.rb
1015
1059
  - lib/webhookdb/organization.rb
@@ -1062,7 +1106,9 @@ files:
1062
1106
  - lib/webhookdb/replicator/increase_account_transfer_v1.rb
1063
1107
  - lib/webhookdb/replicator/increase_account_v1.rb
1064
1108
  - lib/webhookdb/replicator/increase_ach_transfer_v1.rb
1109
+ - lib/webhookdb/replicator/increase_app_v1.rb
1065
1110
  - lib/webhookdb/replicator/increase_check_transfer_v1.rb
1111
+ - lib/webhookdb/replicator/increase_event_v1.rb
1066
1112
  - lib/webhookdb/replicator/increase_limit_v1.rb
1067
1113
  - lib/webhookdb/replicator/increase_transaction_v1.rb
1068
1114
  - lib/webhookdb/replicator/increase_v1_mixin.rb
@@ -1105,10 +1151,12 @@ files:
1105
1151
  - lib/webhookdb/replicator/transistor_show_v1.rb
1106
1152
  - lib/webhookdb/replicator/transistor_v1_mixin.rb
1107
1153
  - lib/webhookdb/replicator/twilio_sms_v1.rb
1154
+ - lib/webhookdb/replicator/url_recorder_v1.rb
1108
1155
  - lib/webhookdb/replicator/webhook_request.rb
1109
1156
  - lib/webhookdb/replicator/webhookdb_customer_v1.rb
1110
1157
  - lib/webhookdb/role.rb
1111
1158
  - lib/webhookdb/saved_query.rb
1159
+ - lib/webhookdb/saved_view.rb
1112
1160
  - lib/webhookdb/sentry.rb
1113
1161
  - lib/webhookdb/service.rb
1114
1162
  - lib/webhookdb/service/auth.rb
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "grape"
4
-
5
- require "webhookdb/admin_api"
6
-
7
- class Webhookdb::AdminAPI::Customers < Webhookdb::AdminAPI::V1
8
- resource :customers do
9
- desc "Return all customers, newest first"
10
- params do
11
- use :pagination
12
- use :ordering, model: Webhookdb::Customer
13
- use :searchable
14
- end
15
- get do
16
- ds = Webhookdb::Customer.dataset
17
- if (email_like = search_param_to_sql(params, :email))
18
- name_like = search_param_to_sql(params, :name)
19
- ds = ds.where(email_like | name_like)
20
- end
21
-
22
- ds = order(ds, params)
23
- ds = paginate(ds, params)
24
- present_collection ds, with: Webhookdb::AdminAPI::CustomerEntity
25
- end
26
-
27
- route_param :id, type: Integer do
28
- desc "Return the customer"
29
- get do
30
- (customer = Webhookdb::Customer[params[:id]]) or not_found!
31
- present customer, with: Webhookdb::AdminAPI::DetailedCustomerEntity
32
- end
33
-
34
- desc "Update the customer"
35
- params do
36
- optional :name, type: String
37
- optional :note, type: String
38
- optional :email, type: String
39
- optional :roles, type: [String]
40
- end
41
- post do
42
- fields = params
43
- (customer = Webhookdb::Customer[fields[:id]]) or not_found!
44
- customer.db.transaction do
45
- if (roles = fields.delete(:roles))
46
- customer.remove_all_roles
47
- roles.uniq.each { |r| customer.add_role(Webhookdb::Role[name: r]) }
48
- end
49
- if fields.key?(:email_verified)
50
- customer.email_verified_at = fields.delete(:email_verified) ? Time.now : nil
51
- end
52
- if fields.key?(:phone_verified)
53
- customer.phone_verified_at = fields.delete(:phone_verified) ? Time.now : nil
54
- end
55
- set_declared(customer, params)
56
- customer.save_changes
57
- end
58
- status 200
59
- present customer, with: Webhookdb::AdminAPI::DetailedCustomerEntity
60
- end
61
- end
62
- end
63
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "grape"
4
-
5
- require "webhookdb/admin_api"
6
-
7
- class Webhookdb::AdminAPI::MessageDeliveries < Webhookdb::AdminAPI::V1
8
- helpers do
9
- def lookup_delivery(params)
10
- (batch = Webhookdb::Message::Delivery[params[:id]]) or not_found!
11
- return batch
12
- end
13
- end
14
-
15
- resource :message_deliveries do
16
- desc "Return all message deliveries, newest first"
17
- params do
18
- use :pagination
19
- use :ordering, model: Webhookdb::Message::Delivery
20
- use :searchable
21
- end
22
- get do
23
- ds = Webhookdb::Message::Delivery.dataset
24
- if (to_like = search_param_to_sql(params, :to))
25
- criteria = to_like | search_param_to_sql(params, :template)
26
- ds = ds.where(criteria)
27
- end
28
- ds = order(ds, params)
29
- ds = paginate(ds, params)
30
- present_collection ds, with: Webhookdb::AdminAPI::MessageDeliveryEntity
31
- end
32
-
33
- desc "Return the delivery with the last ID"
34
- get :last do
35
- delivery = Webhookdb::Message::Delivery.last
36
- present delivery, with: Webhookdb::AdminAPI::MessageDeliveryWithBodiesEntity
37
- end
38
-
39
- route_param :id, type: Integer do
40
- desc "Return the delivery"
41
- get do
42
- delivery = lookup_delivery(params)
43
- present delivery, with: Webhookdb::AdminAPI::MessageDeliveryWithBodiesEntity
44
- end
45
- end
46
- end
47
-
48
- resource :customers do
49
- route_param :id, type: Integer do
50
- resource :message_deliveries do
51
- desc "Return all message deliveries for customer the given customers, as recipients or to their emails"
52
- get do
53
- # rubocop:disable Layout/LineLength
54
- ds = Webhookdb::Message::Delivery.to_customers(Webhookdb::Customer.where(id: params[:id])).order(Sequel.desc(:id))
55
- # rubocop:enable Layout/LineLength
56
- present_collection ds, with: Webhookdb::AdminAPI::MessageDeliveryEntity
57
- end
58
- end
59
- end
60
- end
61
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "grape"
4
-
5
- require "webhookdb/admin_api"
6
-
7
- class Webhookdb::AdminAPI::Roles < Webhookdb::AdminAPI::V1
8
- resource :roles do
9
- desc "Return all roles, ordered by name"
10
- get do
11
- ds = Webhookdb::Role.dataset.order(:name)
12
- present_collection ds, with: Webhookdb::AdminAPI::RoleEntity
13
- end
14
- end
15
- end