create-svc 0.1.10 → 0.1.12

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 (171) hide show
  1. package/README.md +51 -47
  2. package/index.ts +2 -2
  3. package/package.json +10 -9
  4. package/src/cli.test.ts +28 -10
  5. package/src/cli.ts +196 -33
  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 +232 -41
  14. package/src/scaffold.ts +81 -36
  15. package/src/service.test.ts +30 -0
  16. package/src/service.ts +65 -0
  17. package/src/vault.test.ts +61 -1
  18. package/src/vault.ts +77 -15
  19. package/templates/shared/.github/workflows/ci.yml +2 -1
  20. package/templates/shared/.github/workflows/deploy.yml +2 -0
  21. package/templates/shared/README.md +124 -47
  22. package/templates/shared/grafana/alerts.yaml +54 -0
  23. package/templates/shared/grafana/waitlist-dashboard.json +63 -0
  24. package/templates/shared/scripts/authctl.ts +231 -0
  25. package/templates/shared/scripts/cloudrun/bootstrap.ts +14 -5
  26. package/templates/shared/scripts/cloudrun/cleanup.ts +64 -4
  27. package/templates/shared/scripts/cloudrun/cli.ts +329 -7
  28. package/templates/shared/scripts/cloudrun/config.ts +11 -4
  29. package/templates/shared/scripts/cloudrun/deploy.ts +0 -4
  30. package/templates/shared/scripts/cloudrun/lib.ts +174 -41
  31. package/templates/shared/scripts/cloudrun/neon.ts +45 -0
  32. package/templates/shared/scripts/dev.ts +22 -0
  33. package/templates/shared/scripts/ensure-local-db.ts +3 -0
  34. package/templates/shared/scripts/local-docker.ts +63 -0
  35. package/templates/shared/scripts/local-env.ts +27 -0
  36. package/templates/shared/scripts/seed.ts +73 -0
  37. package/templates/shared/scripts/wait-for-db.ts +32 -0
  38. package/templates/shared/service.config.ts +59 -0
  39. package/templates/shared/service.yaml +24 -44
  40. package/templates/targets/workers/.github/workflows/ci.yml +19 -0
  41. package/templates/targets/workers/.github/workflows/deploy.yml +19 -0
  42. package/templates/targets/workers/Makefile +33 -0
  43. package/templates/targets/workers/README.md +75 -0
  44. package/templates/targets/workers/package.json +35 -0
  45. package/templates/targets/workers/scripts/workers/cli.ts +402 -0
  46. package/templates/targets/workers/src/auth.ts +178 -0
  47. package/templates/targets/workers/src/index.ts +198 -0
  48. package/templates/targets/workers/src/storage.ts +370 -0
  49. package/templates/targets/workers/test/app.test.ts +108 -0
  50. package/templates/targets/workers/tsconfig.json +11 -0
  51. package/templates/targets/workers/wrangler.toml +24 -0
  52. package/templates/variants/bun-connectrpc/Makefile +14 -8
  53. package/templates/variants/bun-connectrpc/gen/protos/waitlist/v1/waitlist_pb.ts +424 -0
  54. package/templates/variants/bun-connectrpc/migrations/0000_init.sql +12 -55
  55. package/templates/variants/bun-connectrpc/package.json +12 -5
  56. package/templates/variants/bun-connectrpc/protos/waitlist/v1/waitlist.proto +91 -0
  57. package/templates/variants/bun-connectrpc/scripts/codegen.ts +1 -1
  58. package/templates/variants/bun-connectrpc/scripts/migrate.ts +4 -1
  59. package/templates/variants/bun-connectrpc/src/auth.ts +200 -0
  60. package/templates/variants/bun-connectrpc/src/db/repository.ts +67 -420
  61. package/templates/variants/bun-connectrpc/src/db/schema.ts +15 -64
  62. package/templates/variants/bun-connectrpc/src/index.ts +76 -176
  63. package/templates/variants/bun-connectrpc/src/temporal/activities.ts +14 -0
  64. package/templates/variants/bun-connectrpc/src/temporal/worker.ts +38 -0
  65. package/templates/variants/bun-connectrpc/src/temporal/workflows.ts +10 -0
  66. package/templates/variants/bun-connectrpc/src/waitlist/service.ts +172 -0
  67. package/templates/variants/bun-connectrpc/src/waitlist/types.ts +45 -0
  68. package/templates/variants/bun-connectrpc/test/app.test.ts +4 -4
  69. package/templates/variants/bun-connectrpc/test/waitlist.integration.test.ts +71 -0
  70. package/templates/variants/bun-hono/Makefile +14 -8
  71. package/templates/variants/bun-hono/migrations/0000_init.sql +12 -55
  72. package/templates/variants/bun-hono/package.json +12 -5
  73. package/templates/variants/bun-hono/scripts/migrate.ts +4 -1
  74. package/templates/variants/bun-hono/src/auth.ts +181 -0
  75. package/templates/variants/bun-hono/src/db/repository.ts +68 -421
  76. package/templates/variants/bun-hono/src/db/schema.ts +15 -64
  77. package/templates/variants/bun-hono/src/index.ts +65 -180
  78. package/templates/variants/bun-hono/src/temporal/activities.ts +14 -0
  79. package/templates/variants/bun-hono/src/temporal/worker.ts +38 -0
  80. package/templates/variants/bun-hono/src/temporal/workflows.ts +10 -0
  81. package/templates/variants/bun-hono/src/waitlist/service.ts +166 -0
  82. package/templates/variants/bun-hono/src/waitlist/types.ts +50 -0
  83. package/templates/variants/bun-hono/test/app.test.ts +72 -41
  84. package/templates/variants/bun-hono/test/waitlist.integration.test.ts +102 -0
  85. package/templates/variants/go-chi/Makefile +27 -11
  86. package/templates/variants/go-chi/atlas.hcl +8 -0
  87. package/templates/variants/go-chi/cmd/server/main.go +21 -10
  88. package/templates/variants/go-chi/go.mod +1 -3
  89. package/templates/variants/go-chi/internal/app/service.go +202 -685
  90. package/templates/variants/go-chi/internal/auth/middleware.go +289 -0
  91. package/templates/variants/go-chi/internal/auth/middleware_test.go +38 -0
  92. package/templates/variants/go-chi/internal/config/config.go +27 -11
  93. package/templates/variants/go-chi/internal/httpapi/routes.go +78 -157
  94. package/templates/variants/go-chi/internal/httpapi/waitlist_integration_test.go +199 -0
  95. package/templates/variants/go-chi/internal/temporal/activities.go +27 -0
  96. package/templates/variants/go-chi/internal/temporal/worker.go +42 -0
  97. package/templates/variants/go-chi/internal/temporal/workflows.go +18 -0
  98. package/templates/variants/go-chi/migrations/0000_init.sql +12 -55
  99. package/templates/variants/go-chi/migrations/atlas.sum +2 -0
  100. package/templates/variants/go-chi/package.json +7 -1
  101. package/templates/variants/go-connectrpc/Makefile +26 -9
  102. package/templates/variants/go-connectrpc/atlas.hcl +8 -0
  103. package/templates/variants/go-connectrpc/buf.gen.yaml +2 -2
  104. package/templates/variants/go-connectrpc/cmd/server/main.go +23 -12
  105. package/templates/variants/go-connectrpc/gen/waitlist/v1/waitlist.pb.go +960 -0
  106. package/templates/variants/go-connectrpc/gen/waitlist/v1/waitlistv1connect/waitlist.connect.go +283 -0
  107. package/templates/variants/go-connectrpc/go.mod +1 -1
  108. package/templates/variants/go-connectrpc/internal/app/service.go +202 -685
  109. package/templates/variants/go-connectrpc/internal/auth/middleware.go +289 -0
  110. package/templates/variants/go-connectrpc/internal/auth/middleware_test.go +38 -0
  111. package/templates/variants/go-connectrpc/internal/config/config.go +27 -11
  112. package/templates/variants/go-connectrpc/internal/connectapi/handler.go +78 -201
  113. package/templates/variants/go-connectrpc/internal/connectapi/waitlist_integration_test.go +122 -0
  114. package/templates/variants/go-connectrpc/internal/httpapi/routes.go +147 -9
  115. package/templates/variants/go-connectrpc/internal/temporal/activities.go +27 -0
  116. package/templates/variants/go-connectrpc/internal/temporal/worker.go +42 -0
  117. package/templates/variants/go-connectrpc/internal/temporal/workflows.go +18 -0
  118. package/templates/variants/go-connectrpc/migrations/0000_init.sql +12 -55
  119. package/templates/variants/go-connectrpc/migrations/atlas.sum +2 -0
  120. package/templates/variants/go-connectrpc/package.json +7 -1
  121. package/templates/variants/go-connectrpc/protos/waitlist/v1/waitlist.proto +93 -0
  122. package/templates/root/.github/workflows/buf-publish.yml +0 -19
  123. package/templates/root/.github/workflows/ci.yml +0 -26
  124. package/templates/root/.github/workflows/deploy.yml +0 -22
  125. package/templates/root/Dockerfile +0 -23
  126. package/templates/root/README.md +0 -69
  127. package/templates/root/buf.gen.yaml +0 -10
  128. package/templates/root/buf.yaml +0 -9
  129. package/templates/root/cmd/server/main.go +0 -44
  130. package/templates/root/gen/dns/v1/dns.pb.go +0 -623
  131. package/templates/root/gen/dns/v1/dnsv1connect/dns.connect.go +0 -192
  132. package/templates/root/go.mod +0 -10
  133. package/templates/root/internal/app/service.go +0 -152
  134. package/templates/root/internal/app/token_source.go +0 -50
  135. package/templates/root/internal/cloudflare/client.go +0 -160
  136. package/templates/root/internal/config/config.go +0 -55
  137. package/templates/root/internal/connectapi/handler.go +0 -79
  138. package/templates/root/internal/httpapi/routes.go +0 -93
  139. package/templates/root/internal/vault/client.go +0 -148
  140. package/templates/root/package.json +0 -12
  141. package/templates/root/protos/dns/v1/dns.proto +0 -58
  142. package/templates/root/scripts/cloudrun/bootstrap.ts +0 -65
  143. package/templates/root/scripts/cloudrun/config.ts +0 -50
  144. package/templates/root/scripts/cloudrun/deploy.ts +0 -41
  145. package/templates/root/scripts/cloudrun/lib.ts +0 -244
  146. package/templates/root/service.yaml +0 -50
  147. package/templates/root/test/go.test.ts +0 -19
  148. package/templates/shared/scripts/cloudrun/integrations.ts +0 -111
  149. package/templates/variants/bun-connectrpc/gen/protos/chat/v1/chat_pb.ts +0 -1078
  150. package/templates/variants/bun-connectrpc/protos/chat/v1/chat.proto +0 -228
  151. package/templates/variants/bun-connectrpc/src/chat/service.ts +0 -384
  152. package/templates/variants/bun-connectrpc/src/chat/types.ts +0 -142
  153. package/templates/variants/bun-connectrpc/src/storage.ts +0 -72
  154. package/templates/variants/bun-connectrpc/src/webhooks.ts +0 -35
  155. package/templates/variants/bun-connectrpc/test/list-messages.integration.test.ts +0 -182
  156. package/templates/variants/bun-hono/src/chat/service.ts +0 -384
  157. package/templates/variants/bun-hono/src/chat/types.ts +0 -142
  158. package/templates/variants/bun-hono/src/storage.ts +0 -72
  159. package/templates/variants/bun-hono/src/webhooks.ts +0 -35
  160. package/templates/variants/bun-hono/test/list-messages.integration.test.ts +0 -256
  161. package/templates/variants/go-chi/buf.gen.yaml +0 -12
  162. package/templates/variants/go-chi/buf.yaml +0 -9
  163. package/templates/variants/go-chi/cmd/migrate/main.go +0 -101
  164. package/templates/variants/go-chi/internal/httpapi/list_messages_integration_test.go +0 -298
  165. package/templates/variants/go-chi/protos/chat/v1/chat.proto +0 -219
  166. package/templates/variants/go-connectrpc/cmd/migrate/main.go +0 -101
  167. package/templates/variants/go-connectrpc/gen/chat/v1/chat.pb.go +0 -2512
  168. package/templates/variants/go-connectrpc/gen/chat/v1/chatv1connect/chat.connect.go +0 -571
  169. package/templates/variants/go-connectrpc/internal/connectapi/list_messages_integration_test.go +0 -216
  170. package/templates/variants/go-connectrpc/protos/chat/v1/chat.proto +0 -232
  171. /package/bin/{create-svc.mjs → service.mjs} +0 -0
@@ -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
  )