create-svc 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +46 -43
  2. package/bin/create-service.mjs +2 -0
  3. package/package.json +12 -9
  4. package/src/cli.test.ts +28 -10
  5. package/src/cli.ts +195 -30
  6. package/src/git-bootstrap.test.ts +40 -0
  7. package/src/git-bootstrap.ts +110 -0
  8. package/src/naming.test.ts +1 -0
  9. package/src/naming.ts +23 -0
  10. package/src/post-scaffold.test.ts +19 -0
  11. package/src/post-scaffold.ts +17 -4
  12. package/src/profiles.ts +2 -5
  13. package/src/scaffold.test.ts +231 -40
  14. package/src/scaffold.ts +84 -29
  15. package/src/vault.test.ts +61 -1
  16. package/src/vault.ts +77 -15
  17. package/templates/shared/.github/workflows/ci.yml +2 -1
  18. package/templates/shared/.github/workflows/deploy.yml +2 -0
  19. package/templates/shared/README.md +124 -47
  20. package/templates/shared/grafana/alerts.yaml +54 -0
  21. package/templates/shared/grafana/waitlist-dashboard.json +63 -0
  22. package/templates/shared/scripts/authctl.ts +231 -0
  23. package/templates/shared/scripts/cloudrun/bootstrap.ts +14 -5
  24. package/templates/shared/scripts/cloudrun/cleanup.ts +64 -4
  25. package/templates/shared/scripts/cloudrun/cli.ts +324 -7
  26. package/templates/shared/scripts/cloudrun/config.ts +11 -4
  27. package/templates/shared/scripts/cloudrun/deploy.ts +0 -4
  28. package/templates/shared/scripts/cloudrun/lib.ts +174 -41
  29. package/templates/shared/scripts/cloudrun/neon.ts +45 -0
  30. package/templates/shared/scripts/dev.ts +22 -0
  31. package/templates/shared/scripts/ensure-local-db.ts +3 -0
  32. package/templates/shared/scripts/local-docker.ts +63 -0
  33. package/templates/shared/scripts/local-env.ts +27 -0
  34. package/templates/shared/scripts/seed.ts +73 -0
  35. package/templates/shared/scripts/wait-for-db.ts +32 -0
  36. package/templates/shared/service.config.ts +59 -0
  37. package/templates/shared/service.yaml +24 -44
  38. package/templates/targets/workers/.github/workflows/ci.yml +19 -0
  39. package/templates/targets/workers/.github/workflows/deploy.yml +19 -0
  40. package/templates/targets/workers/Makefile +33 -0
  41. package/templates/targets/workers/README.md +75 -0
  42. package/templates/targets/workers/package.json +35 -0
  43. package/templates/targets/workers/scripts/workers/cli.ts +397 -0
  44. package/templates/targets/workers/src/auth.ts +178 -0
  45. package/templates/targets/workers/src/index.ts +198 -0
  46. package/templates/targets/workers/src/storage.ts +370 -0
  47. package/templates/targets/workers/test/app.test.ts +108 -0
  48. package/templates/targets/workers/tsconfig.json +11 -0
  49. package/templates/targets/workers/wrangler.toml +24 -0
  50. package/templates/variants/bun-connectrpc/Makefile +14 -8
  51. package/templates/variants/bun-connectrpc/gen/protos/waitlist/v1/waitlist_pb.ts +424 -0
  52. package/templates/variants/bun-connectrpc/migrations/0000_init.sql +12 -55
  53. package/templates/variants/bun-connectrpc/package.json +12 -5
  54. package/templates/variants/bun-connectrpc/protos/waitlist/v1/waitlist.proto +91 -0
  55. package/templates/variants/bun-connectrpc/scripts/codegen.ts +1 -1
  56. package/templates/variants/bun-connectrpc/scripts/migrate.ts +4 -1
  57. package/templates/variants/bun-connectrpc/src/auth.ts +200 -0
  58. package/templates/variants/bun-connectrpc/src/db/repository.ts +67 -420
  59. package/templates/variants/bun-connectrpc/src/db/schema.ts +15 -64
  60. package/templates/variants/bun-connectrpc/src/index.ts +76 -176
  61. package/templates/variants/bun-connectrpc/src/temporal/activities.ts +14 -0
  62. package/templates/variants/bun-connectrpc/src/temporal/worker.ts +38 -0
  63. package/templates/variants/bun-connectrpc/src/temporal/workflows.ts +10 -0
  64. package/templates/variants/bun-connectrpc/src/waitlist/service.ts +172 -0
  65. package/templates/variants/bun-connectrpc/src/waitlist/types.ts +45 -0
  66. package/templates/variants/bun-connectrpc/test/app.test.ts +4 -4
  67. package/templates/variants/bun-connectrpc/test/waitlist.integration.test.ts +71 -0
  68. package/templates/variants/bun-hono/Makefile +14 -8
  69. package/templates/variants/bun-hono/migrations/0000_init.sql +12 -55
  70. package/templates/variants/bun-hono/package.json +12 -5
  71. package/templates/variants/bun-hono/scripts/migrate.ts +4 -1
  72. package/templates/variants/bun-hono/src/auth.ts +181 -0
  73. package/templates/variants/bun-hono/src/db/repository.ts +68 -421
  74. package/templates/variants/bun-hono/src/db/schema.ts +15 -64
  75. package/templates/variants/bun-hono/src/index.ts +65 -180
  76. package/templates/variants/bun-hono/src/temporal/activities.ts +14 -0
  77. package/templates/variants/bun-hono/src/temporal/worker.ts +38 -0
  78. package/templates/variants/bun-hono/src/temporal/workflows.ts +10 -0
  79. package/templates/variants/bun-hono/src/waitlist/service.ts +166 -0
  80. package/templates/variants/bun-hono/src/waitlist/types.ts +50 -0
  81. package/templates/variants/bun-hono/test/app.test.ts +72 -41
  82. package/templates/variants/bun-hono/test/waitlist.integration.test.ts +102 -0
  83. package/templates/variants/go-chi/Makefile +27 -11
  84. package/templates/variants/go-chi/atlas.hcl +8 -0
  85. package/templates/variants/go-chi/cmd/server/main.go +21 -10
  86. package/templates/variants/go-chi/go.mod +1 -3
  87. package/templates/variants/go-chi/internal/app/service.go +202 -685
  88. package/templates/variants/go-chi/internal/auth/middleware.go +289 -0
  89. package/templates/variants/go-chi/internal/auth/middleware_test.go +38 -0
  90. package/templates/variants/go-chi/internal/config/config.go +27 -11
  91. package/templates/variants/go-chi/internal/httpapi/routes.go +78 -157
  92. package/templates/variants/go-chi/internal/httpapi/waitlist_integration_test.go +199 -0
  93. package/templates/variants/go-chi/internal/temporal/activities.go +27 -0
  94. package/templates/variants/go-chi/internal/temporal/worker.go +42 -0
  95. package/templates/variants/go-chi/internal/temporal/workflows.go +18 -0
  96. package/templates/variants/go-chi/migrations/0000_init.sql +12 -55
  97. package/templates/variants/go-chi/migrations/atlas.sum +2 -0
  98. package/templates/variants/go-chi/package.json +7 -1
  99. package/templates/variants/go-connectrpc/Makefile +26 -9
  100. package/templates/variants/go-connectrpc/atlas.hcl +8 -0
  101. package/templates/variants/go-connectrpc/buf.gen.yaml +2 -2
  102. package/templates/variants/go-connectrpc/cmd/server/main.go +23 -12
  103. package/templates/variants/go-connectrpc/gen/waitlist/v1/waitlist.pb.go +960 -0
  104. package/templates/variants/go-connectrpc/gen/waitlist/v1/waitlistv1connect/waitlist.connect.go +283 -0
  105. package/templates/variants/go-connectrpc/go.mod +1 -1
  106. package/templates/variants/go-connectrpc/internal/app/service.go +202 -685
  107. package/templates/variants/go-connectrpc/internal/auth/middleware.go +289 -0
  108. package/templates/variants/go-connectrpc/internal/auth/middleware_test.go +38 -0
  109. package/templates/variants/go-connectrpc/internal/config/config.go +27 -11
  110. package/templates/variants/go-connectrpc/internal/connectapi/handler.go +78 -201
  111. package/templates/variants/go-connectrpc/internal/connectapi/waitlist_integration_test.go +122 -0
  112. package/templates/variants/go-connectrpc/internal/httpapi/routes.go +147 -9
  113. package/templates/variants/go-connectrpc/internal/temporal/activities.go +27 -0
  114. package/templates/variants/go-connectrpc/internal/temporal/worker.go +42 -0
  115. package/templates/variants/go-connectrpc/internal/temporal/workflows.go +18 -0
  116. package/templates/variants/go-connectrpc/migrations/0000_init.sql +12 -55
  117. package/templates/variants/go-connectrpc/migrations/atlas.sum +2 -0
  118. package/templates/variants/go-connectrpc/package.json +7 -1
  119. package/templates/variants/go-connectrpc/protos/waitlist/v1/waitlist.proto +93 -0
  120. package/templates/root/.github/workflows/buf-publish.yml +0 -19
  121. package/templates/root/.github/workflows/ci.yml +0 -26
  122. package/templates/root/.github/workflows/deploy.yml +0 -22
  123. package/templates/root/Dockerfile +0 -23
  124. package/templates/root/README.md +0 -69
  125. package/templates/root/buf.gen.yaml +0 -10
  126. package/templates/root/buf.yaml +0 -9
  127. package/templates/root/cmd/server/main.go +0 -44
  128. package/templates/root/gen/dns/v1/dns.pb.go +0 -623
  129. package/templates/root/gen/dns/v1/dnsv1connect/dns.connect.go +0 -192
  130. package/templates/root/go.mod +0 -10
  131. package/templates/root/internal/app/service.go +0 -152
  132. package/templates/root/internal/app/token_source.go +0 -50
  133. package/templates/root/internal/cloudflare/client.go +0 -160
  134. package/templates/root/internal/config/config.go +0 -55
  135. package/templates/root/internal/connectapi/handler.go +0 -79
  136. package/templates/root/internal/httpapi/routes.go +0 -93
  137. package/templates/root/internal/vault/client.go +0 -148
  138. package/templates/root/package.json +0 -12
  139. package/templates/root/protos/dns/v1/dns.proto +0 -58
  140. package/templates/root/scripts/cloudrun/bootstrap.ts +0 -65
  141. package/templates/root/scripts/cloudrun/config.ts +0 -50
  142. package/templates/root/scripts/cloudrun/deploy.ts +0 -41
  143. package/templates/root/scripts/cloudrun/lib.ts +0 -244
  144. package/templates/root/service.yaml +0 -50
  145. package/templates/root/test/go.test.ts +0 -19
  146. package/templates/shared/scripts/cloudrun/integrations.ts +0 -111
  147. package/templates/variants/bun-connectrpc/gen/protos/chat/v1/chat_pb.ts +0 -1078
  148. package/templates/variants/bun-connectrpc/protos/chat/v1/chat.proto +0 -228
  149. package/templates/variants/bun-connectrpc/src/chat/service.ts +0 -384
  150. package/templates/variants/bun-connectrpc/src/chat/types.ts +0 -142
  151. package/templates/variants/bun-connectrpc/src/storage.ts +0 -72
  152. package/templates/variants/bun-connectrpc/src/webhooks.ts +0 -35
  153. package/templates/variants/bun-connectrpc/test/list-messages.integration.test.ts +0 -182
  154. package/templates/variants/bun-hono/src/chat/service.ts +0 -384
  155. package/templates/variants/bun-hono/src/chat/types.ts +0 -142
  156. package/templates/variants/bun-hono/src/storage.ts +0 -72
  157. package/templates/variants/bun-hono/src/webhooks.ts +0 -35
  158. package/templates/variants/bun-hono/test/list-messages.integration.test.ts +0 -256
  159. package/templates/variants/go-chi/buf.gen.yaml +0 -12
  160. package/templates/variants/go-chi/buf.yaml +0 -9
  161. package/templates/variants/go-chi/cmd/migrate/main.go +0 -101
  162. package/templates/variants/go-chi/internal/httpapi/list_messages_integration_test.go +0 -298
  163. package/templates/variants/go-chi/protos/chat/v1/chat.proto +0 -219
  164. package/templates/variants/go-connectrpc/cmd/migrate/main.go +0 -101
  165. package/templates/variants/go-connectrpc/gen/chat/v1/chat.pb.go +0 -2512
  166. package/templates/variants/go-connectrpc/gen/chat/v1/chatv1connect/chat.connect.go +0 -571
  167. package/templates/variants/go-connectrpc/internal/connectapi/list_messages_integration_test.go +0 -216
  168. package/templates/variants/go-connectrpc/protos/chat/v1/chat.proto +0 -232
@@ -0,0 +1,283 @@
1
+ // Code generated by protoc-gen-connect-go. DO NOT EDIT.
2
+ //
3
+ // Source: waitlist/v1/waitlist.proto
4
+
5
+ package waitlistv1connect
6
+
7
+ import (
8
+ connect "connectrpc.com/connect"
9
+ context "context"
10
+ errors "errors"
11
+ http "net/http"
12
+ strings "strings"
13
+ v1 "{{MODULE_PATH}}/gen/waitlist/v1"
14
+ )
15
+
16
+ // This is a compile-time assertion to ensure that this generated file and the connect package are
17
+ // compatible. If you get a compiler error that this constant is not defined, this code was
18
+ // generated with a version of connect newer than the one compiled into your binary. You can fix the
19
+ // problem by either regenerating this code with an older version of connect or updating the connect
20
+ // version compiled into your binary.
21
+ const _ = connect.IsAtLeastVersion1_13_0
22
+
23
+ const (
24
+ // WaitlistServiceName is the fully-qualified name of the WaitlistService service.
25
+ WaitlistServiceName = "waitlist.v1.WaitlistService"
26
+ )
27
+
28
+ // These constants are the fully-qualified names of the RPCs defined in this package. They're
29
+ // exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
30
+ //
31
+ // Note that these are different from the fully-qualified method names used by
32
+ // google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
33
+ // reflection-formatted method names, remove the leading slash and convert the remaining slash to a
34
+ // period.
35
+ const (
36
+ // WaitlistServiceJoinWaitlistProcedure is the fully-qualified name of the WaitlistService's
37
+ // JoinWaitlist RPC.
38
+ WaitlistServiceJoinWaitlistProcedure = "/waitlist.v1.WaitlistService/JoinWaitlist"
39
+ // WaitlistServiceGetWaitlistEntryProcedure is the fully-qualified name of the WaitlistService's
40
+ // GetWaitlistEntry RPC.
41
+ WaitlistServiceGetWaitlistEntryProcedure = "/waitlist.v1.WaitlistService/GetWaitlistEntry"
42
+ // WaitlistServiceGetWaitlistEntryByEmailProcedure is the fully-qualified name of the
43
+ // WaitlistService's GetWaitlistEntryByEmail RPC.
44
+ WaitlistServiceGetWaitlistEntryByEmailProcedure = "/waitlist.v1.WaitlistService/GetWaitlistEntryByEmail"
45
+ // WaitlistServiceListWaitlistEntriesProcedure is the fully-qualified name of the WaitlistService's
46
+ // ListWaitlistEntries RPC.
47
+ WaitlistServiceListWaitlistEntriesProcedure = "/waitlist.v1.WaitlistService/ListWaitlistEntries"
48
+ // WaitlistServiceUpdateWaitlistEntryProcedure is the fully-qualified name of the WaitlistService's
49
+ // UpdateWaitlistEntry RPC.
50
+ WaitlistServiceUpdateWaitlistEntryProcedure = "/waitlist.v1.WaitlistService/UpdateWaitlistEntry"
51
+ // WaitlistServiceExportWaitlistEntriesProcedure is the fully-qualified name of the
52
+ // WaitlistService's ExportWaitlistEntries RPC.
53
+ WaitlistServiceExportWaitlistEntriesProcedure = "/waitlist.v1.WaitlistService/ExportWaitlistEntries"
54
+ // WaitlistServiceRecordTriggerProcedure is the fully-qualified name of the WaitlistService's
55
+ // RecordTrigger RPC.
56
+ WaitlistServiceRecordTriggerProcedure = "/waitlist.v1.WaitlistService/RecordTrigger"
57
+ )
58
+
59
+ // WaitlistServiceClient is a client for the waitlist.v1.WaitlistService service.
60
+ type WaitlistServiceClient interface {
61
+ JoinWaitlist(context.Context, *connect.Request[v1.JoinWaitlistRequest]) (*connect.Response[v1.JoinWaitlistResponse], error)
62
+ GetWaitlistEntry(context.Context, *connect.Request[v1.GetWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
63
+ GetWaitlistEntryByEmail(context.Context, *connect.Request[v1.GetWaitlistEntryByEmailRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
64
+ ListWaitlistEntries(context.Context, *connect.Request[v1.ListWaitlistEntriesRequest]) (*connect.Response[v1.ListWaitlistEntriesResponse], error)
65
+ UpdateWaitlistEntry(context.Context, *connect.Request[v1.UpdateWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
66
+ ExportWaitlistEntries(context.Context, *connect.Request[v1.ExportWaitlistEntriesRequest]) (*connect.Response[v1.ExportWaitlistEntriesResponse], error)
67
+ RecordTrigger(context.Context, *connect.Request[v1.RecordTriggerRequest]) (*connect.Response[v1.RecordTriggerResponse], error)
68
+ }
69
+
70
+ // NewWaitlistServiceClient constructs a client for the waitlist.v1.WaitlistService service. By
71
+ // default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses,
72
+ // and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the
73
+ // connect.WithGRPC() or connect.WithGRPCWeb() options.
74
+ //
75
+ // The URL supplied here should be the base URL for the Connect or gRPC server (for example,
76
+ // http://api.acme.com or https://acme.com/grpc).
77
+ func NewWaitlistServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) WaitlistServiceClient {
78
+ baseURL = strings.TrimRight(baseURL, "/")
79
+ waitlistServiceMethods := v1.File_waitlist_v1_waitlist_proto.Services().ByName("WaitlistService").Methods()
80
+ return &waitlistServiceClient{
81
+ joinWaitlist: connect.NewClient[v1.JoinWaitlistRequest, v1.JoinWaitlistResponse](
82
+ httpClient,
83
+ baseURL+WaitlistServiceJoinWaitlistProcedure,
84
+ connect.WithSchema(waitlistServiceMethods.ByName("JoinWaitlist")),
85
+ connect.WithClientOptions(opts...),
86
+ ),
87
+ getWaitlistEntry: connect.NewClient[v1.GetWaitlistEntryRequest, v1.GetWaitlistEntryResponse](
88
+ httpClient,
89
+ baseURL+WaitlistServiceGetWaitlistEntryProcedure,
90
+ connect.WithSchema(waitlistServiceMethods.ByName("GetWaitlistEntry")),
91
+ connect.WithClientOptions(opts...),
92
+ ),
93
+ getWaitlistEntryByEmail: connect.NewClient[v1.GetWaitlistEntryByEmailRequest, v1.GetWaitlistEntryResponse](
94
+ httpClient,
95
+ baseURL+WaitlistServiceGetWaitlistEntryByEmailProcedure,
96
+ connect.WithSchema(waitlistServiceMethods.ByName("GetWaitlistEntryByEmail")),
97
+ connect.WithClientOptions(opts...),
98
+ ),
99
+ listWaitlistEntries: connect.NewClient[v1.ListWaitlistEntriesRequest, v1.ListWaitlistEntriesResponse](
100
+ httpClient,
101
+ baseURL+WaitlistServiceListWaitlistEntriesProcedure,
102
+ connect.WithSchema(waitlistServiceMethods.ByName("ListWaitlistEntries")),
103
+ connect.WithClientOptions(opts...),
104
+ ),
105
+ updateWaitlistEntry: connect.NewClient[v1.UpdateWaitlistEntryRequest, v1.GetWaitlistEntryResponse](
106
+ httpClient,
107
+ baseURL+WaitlistServiceUpdateWaitlistEntryProcedure,
108
+ connect.WithSchema(waitlistServiceMethods.ByName("UpdateWaitlistEntry")),
109
+ connect.WithClientOptions(opts...),
110
+ ),
111
+ exportWaitlistEntries: connect.NewClient[v1.ExportWaitlistEntriesRequest, v1.ExportWaitlistEntriesResponse](
112
+ httpClient,
113
+ baseURL+WaitlistServiceExportWaitlistEntriesProcedure,
114
+ connect.WithSchema(waitlistServiceMethods.ByName("ExportWaitlistEntries")),
115
+ connect.WithClientOptions(opts...),
116
+ ),
117
+ recordTrigger: connect.NewClient[v1.RecordTriggerRequest, v1.RecordTriggerResponse](
118
+ httpClient,
119
+ baseURL+WaitlistServiceRecordTriggerProcedure,
120
+ connect.WithSchema(waitlistServiceMethods.ByName("RecordTrigger")),
121
+ connect.WithClientOptions(opts...),
122
+ ),
123
+ }
124
+ }
125
+
126
+ // waitlistServiceClient implements WaitlistServiceClient.
127
+ type waitlistServiceClient struct {
128
+ joinWaitlist *connect.Client[v1.JoinWaitlistRequest, v1.JoinWaitlistResponse]
129
+ getWaitlistEntry *connect.Client[v1.GetWaitlistEntryRequest, v1.GetWaitlistEntryResponse]
130
+ getWaitlistEntryByEmail *connect.Client[v1.GetWaitlistEntryByEmailRequest, v1.GetWaitlistEntryResponse]
131
+ listWaitlistEntries *connect.Client[v1.ListWaitlistEntriesRequest, v1.ListWaitlistEntriesResponse]
132
+ updateWaitlistEntry *connect.Client[v1.UpdateWaitlistEntryRequest, v1.GetWaitlistEntryResponse]
133
+ exportWaitlistEntries *connect.Client[v1.ExportWaitlistEntriesRequest, v1.ExportWaitlistEntriesResponse]
134
+ recordTrigger *connect.Client[v1.RecordTriggerRequest, v1.RecordTriggerResponse]
135
+ }
136
+
137
+ // JoinWaitlist calls waitlist.v1.WaitlistService.JoinWaitlist.
138
+ func (c *waitlistServiceClient) JoinWaitlist(ctx context.Context, req *connect.Request[v1.JoinWaitlistRequest]) (*connect.Response[v1.JoinWaitlistResponse], error) {
139
+ return c.joinWaitlist.CallUnary(ctx, req)
140
+ }
141
+
142
+ // GetWaitlistEntry calls waitlist.v1.WaitlistService.GetWaitlistEntry.
143
+ func (c *waitlistServiceClient) GetWaitlistEntry(ctx context.Context, req *connect.Request[v1.GetWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
144
+ return c.getWaitlistEntry.CallUnary(ctx, req)
145
+ }
146
+
147
+ // GetWaitlistEntryByEmail calls waitlist.v1.WaitlistService.GetWaitlistEntryByEmail.
148
+ func (c *waitlistServiceClient) GetWaitlistEntryByEmail(ctx context.Context, req *connect.Request[v1.GetWaitlistEntryByEmailRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
149
+ return c.getWaitlistEntryByEmail.CallUnary(ctx, req)
150
+ }
151
+
152
+ // ListWaitlistEntries calls waitlist.v1.WaitlistService.ListWaitlistEntries.
153
+ func (c *waitlistServiceClient) ListWaitlistEntries(ctx context.Context, req *connect.Request[v1.ListWaitlistEntriesRequest]) (*connect.Response[v1.ListWaitlistEntriesResponse], error) {
154
+ return c.listWaitlistEntries.CallUnary(ctx, req)
155
+ }
156
+
157
+ // UpdateWaitlistEntry calls waitlist.v1.WaitlistService.UpdateWaitlistEntry.
158
+ func (c *waitlistServiceClient) UpdateWaitlistEntry(ctx context.Context, req *connect.Request[v1.UpdateWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
159
+ return c.updateWaitlistEntry.CallUnary(ctx, req)
160
+ }
161
+
162
+ // ExportWaitlistEntries calls waitlist.v1.WaitlistService.ExportWaitlistEntries.
163
+ func (c *waitlistServiceClient) ExportWaitlistEntries(ctx context.Context, req *connect.Request[v1.ExportWaitlistEntriesRequest]) (*connect.Response[v1.ExportWaitlistEntriesResponse], error) {
164
+ return c.exportWaitlistEntries.CallUnary(ctx, req)
165
+ }
166
+
167
+ // RecordTrigger calls waitlist.v1.WaitlistService.RecordTrigger.
168
+ func (c *waitlistServiceClient) RecordTrigger(ctx context.Context, req *connect.Request[v1.RecordTriggerRequest]) (*connect.Response[v1.RecordTriggerResponse], error) {
169
+ return c.recordTrigger.CallUnary(ctx, req)
170
+ }
171
+
172
+ // WaitlistServiceHandler is an implementation of the waitlist.v1.WaitlistService service.
173
+ type WaitlistServiceHandler interface {
174
+ JoinWaitlist(context.Context, *connect.Request[v1.JoinWaitlistRequest]) (*connect.Response[v1.JoinWaitlistResponse], error)
175
+ GetWaitlistEntry(context.Context, *connect.Request[v1.GetWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
176
+ GetWaitlistEntryByEmail(context.Context, *connect.Request[v1.GetWaitlistEntryByEmailRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
177
+ ListWaitlistEntries(context.Context, *connect.Request[v1.ListWaitlistEntriesRequest]) (*connect.Response[v1.ListWaitlistEntriesResponse], error)
178
+ UpdateWaitlistEntry(context.Context, *connect.Request[v1.UpdateWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error)
179
+ ExportWaitlistEntries(context.Context, *connect.Request[v1.ExportWaitlistEntriesRequest]) (*connect.Response[v1.ExportWaitlistEntriesResponse], error)
180
+ RecordTrigger(context.Context, *connect.Request[v1.RecordTriggerRequest]) (*connect.Response[v1.RecordTriggerResponse], error)
181
+ }
182
+
183
+ // NewWaitlistServiceHandler builds an HTTP handler from the service implementation. It returns the
184
+ // path on which to mount the handler and the handler itself.
185
+ //
186
+ // By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
187
+ // and JSON codecs. They also support gzip compression.
188
+ func NewWaitlistServiceHandler(svc WaitlistServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
189
+ waitlistServiceMethods := v1.File_waitlist_v1_waitlist_proto.Services().ByName("WaitlistService").Methods()
190
+ waitlistServiceJoinWaitlistHandler := connect.NewUnaryHandler(
191
+ WaitlistServiceJoinWaitlistProcedure,
192
+ svc.JoinWaitlist,
193
+ connect.WithSchema(waitlistServiceMethods.ByName("JoinWaitlist")),
194
+ connect.WithHandlerOptions(opts...),
195
+ )
196
+ waitlistServiceGetWaitlistEntryHandler := connect.NewUnaryHandler(
197
+ WaitlistServiceGetWaitlistEntryProcedure,
198
+ svc.GetWaitlistEntry,
199
+ connect.WithSchema(waitlistServiceMethods.ByName("GetWaitlistEntry")),
200
+ connect.WithHandlerOptions(opts...),
201
+ )
202
+ waitlistServiceGetWaitlistEntryByEmailHandler := connect.NewUnaryHandler(
203
+ WaitlistServiceGetWaitlistEntryByEmailProcedure,
204
+ svc.GetWaitlistEntryByEmail,
205
+ connect.WithSchema(waitlistServiceMethods.ByName("GetWaitlistEntryByEmail")),
206
+ connect.WithHandlerOptions(opts...),
207
+ )
208
+ waitlistServiceListWaitlistEntriesHandler := connect.NewUnaryHandler(
209
+ WaitlistServiceListWaitlistEntriesProcedure,
210
+ svc.ListWaitlistEntries,
211
+ connect.WithSchema(waitlistServiceMethods.ByName("ListWaitlistEntries")),
212
+ connect.WithHandlerOptions(opts...),
213
+ )
214
+ waitlistServiceUpdateWaitlistEntryHandler := connect.NewUnaryHandler(
215
+ WaitlistServiceUpdateWaitlistEntryProcedure,
216
+ svc.UpdateWaitlistEntry,
217
+ connect.WithSchema(waitlistServiceMethods.ByName("UpdateWaitlistEntry")),
218
+ connect.WithHandlerOptions(opts...),
219
+ )
220
+ waitlistServiceExportWaitlistEntriesHandler := connect.NewUnaryHandler(
221
+ WaitlistServiceExportWaitlistEntriesProcedure,
222
+ svc.ExportWaitlistEntries,
223
+ connect.WithSchema(waitlistServiceMethods.ByName("ExportWaitlistEntries")),
224
+ connect.WithHandlerOptions(opts...),
225
+ )
226
+ waitlistServiceRecordTriggerHandler := connect.NewUnaryHandler(
227
+ WaitlistServiceRecordTriggerProcedure,
228
+ svc.RecordTrigger,
229
+ connect.WithSchema(waitlistServiceMethods.ByName("RecordTrigger")),
230
+ connect.WithHandlerOptions(opts...),
231
+ )
232
+ return "/waitlist.v1.WaitlistService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
233
+ switch r.URL.Path {
234
+ case WaitlistServiceJoinWaitlistProcedure:
235
+ waitlistServiceJoinWaitlistHandler.ServeHTTP(w, r)
236
+ case WaitlistServiceGetWaitlistEntryProcedure:
237
+ waitlistServiceGetWaitlistEntryHandler.ServeHTTP(w, r)
238
+ case WaitlistServiceGetWaitlistEntryByEmailProcedure:
239
+ waitlistServiceGetWaitlistEntryByEmailHandler.ServeHTTP(w, r)
240
+ case WaitlistServiceListWaitlistEntriesProcedure:
241
+ waitlistServiceListWaitlistEntriesHandler.ServeHTTP(w, r)
242
+ case WaitlistServiceUpdateWaitlistEntryProcedure:
243
+ waitlistServiceUpdateWaitlistEntryHandler.ServeHTTP(w, r)
244
+ case WaitlistServiceExportWaitlistEntriesProcedure:
245
+ waitlistServiceExportWaitlistEntriesHandler.ServeHTTP(w, r)
246
+ case WaitlistServiceRecordTriggerProcedure:
247
+ waitlistServiceRecordTriggerHandler.ServeHTTP(w, r)
248
+ default:
249
+ http.NotFound(w, r)
250
+ }
251
+ })
252
+ }
253
+
254
+ // UnimplementedWaitlistServiceHandler returns CodeUnimplemented from all methods.
255
+ type UnimplementedWaitlistServiceHandler struct{}
256
+
257
+ func (UnimplementedWaitlistServiceHandler) JoinWaitlist(context.Context, *connect.Request[v1.JoinWaitlistRequest]) (*connect.Response[v1.JoinWaitlistResponse], error) {
258
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.JoinWaitlist is not implemented"))
259
+ }
260
+
261
+ func (UnimplementedWaitlistServiceHandler) GetWaitlistEntry(context.Context, *connect.Request[v1.GetWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
262
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.GetWaitlistEntry is not implemented"))
263
+ }
264
+
265
+ func (UnimplementedWaitlistServiceHandler) GetWaitlistEntryByEmail(context.Context, *connect.Request[v1.GetWaitlistEntryByEmailRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
266
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.GetWaitlistEntryByEmail is not implemented"))
267
+ }
268
+
269
+ func (UnimplementedWaitlistServiceHandler) ListWaitlistEntries(context.Context, *connect.Request[v1.ListWaitlistEntriesRequest]) (*connect.Response[v1.ListWaitlistEntriesResponse], error) {
270
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.ListWaitlistEntries is not implemented"))
271
+ }
272
+
273
+ func (UnimplementedWaitlistServiceHandler) UpdateWaitlistEntry(context.Context, *connect.Request[v1.UpdateWaitlistEntryRequest]) (*connect.Response[v1.GetWaitlistEntryResponse], error) {
274
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.UpdateWaitlistEntry is not implemented"))
275
+ }
276
+
277
+ func (UnimplementedWaitlistServiceHandler) ExportWaitlistEntries(context.Context, *connect.Request[v1.ExportWaitlistEntriesRequest]) (*connect.Response[v1.ExportWaitlistEntriesResponse], error) {
278
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.ExportWaitlistEntries is not implemented"))
279
+ }
280
+
281
+ func (UnimplementedWaitlistServiceHandler) RecordTrigger(context.Context, *connect.Request[v1.RecordTriggerRequest]) (*connect.Response[v1.RecordTriggerResponse], error) {
282
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("waitlist.v1.WaitlistService.RecordTrigger is not implemented"))
283
+ }
@@ -3,12 +3,12 @@ module {{MODULE_PATH}}
3
3
  go 1.25.4
4
4
 
5
5
  require (
6
- cloud.google.com/go/storage v1.53.0
7
6
  connectrpc.com/connect v1.19.1
8
7
  connectrpc.com/grpcreflect v1.3.0
9
8
  github.com/go-chi/chi/v5 v5.2.2
10
9
  github.com/jackc/pgx/v5 v5.7.5
11
10
  github.com/jmoiron/sqlx v1.4.0
11
+ go.temporal.io/sdk v1.43.0
12
12
  golang.org/x/net v0.42.0
13
13
  google.golang.org/protobuf v1.36.10
14
14
  )