@shdan/submesh 0.1.0

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 (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/contracts.d.ts +191 -0
  4. package/dist/contracts.d.ts.map +1 -0
  5. package/dist/contracts.js +2 -0
  6. package/dist/contracts.js.map +1 -0
  7. package/dist/drizzle/catalog-mapping-repository.d.ts +280 -0
  8. package/dist/drizzle/catalog-mapping-repository.d.ts.map +1 -0
  9. package/dist/drizzle/catalog-mapping-repository.js +62 -0
  10. package/dist/drizzle/catalog-mapping-repository.js.map +1 -0
  11. package/dist/drizzle/ensure-schema.d.ts +3 -0
  12. package/dist/drizzle/ensure-schema.d.ts.map +1 -0
  13. package/dist/drizzle/ensure-schema.js +100 -0
  14. package/dist/drizzle/ensure-schema.js.map +1 -0
  15. package/dist/drizzle/inbound-event-repository.d.ts +960 -0
  16. package/dist/drizzle/inbound-event-repository.d.ts.map +1 -0
  17. package/dist/drizzle/inbound-event-repository.js +148 -0
  18. package/dist/drizzle/inbound-event-repository.js.map +1 -0
  19. package/dist/drizzle/index.d.ts +40 -0
  20. package/dist/drizzle/index.d.ts.map +1 -0
  21. package/dist/drizzle/index.js +57 -0
  22. package/dist/drizzle/index.js.map +1 -0
  23. package/dist/drizzle/migrate.d.ts +11 -0
  24. package/dist/drizzle/migrate.d.ts.map +1 -0
  25. package/dist/drizzle/migrate.js +22 -0
  26. package/dist/drizzle/migrate.js.map +1 -0
  27. package/dist/drizzle/plan-repository.d.ts +497 -0
  28. package/dist/drizzle/plan-repository.d.ts.map +1 -0
  29. package/dist/drizzle/plan-repository.js +70 -0
  30. package/dist/drizzle/plan-repository.js.map +1 -0
  31. package/dist/drizzle/plugin-installation-repository.d.ts +26 -0
  32. package/dist/drizzle/plugin-installation-repository.d.ts.map +1 -0
  33. package/dist/drizzle/plugin-installation-repository.js +71 -0
  34. package/dist/drizzle/plugin-installation-repository.js.map +1 -0
  35. package/dist/drizzle/repository-set.d.ts +4 -0
  36. package/dist/drizzle/repository-set.d.ts.map +1 -0
  37. package/dist/drizzle/repository-set.js +19 -0
  38. package/dist/drizzle/repository-set.js.map +1 -0
  39. package/dist/drizzle/schema.d.ts +2370 -0
  40. package/dist/drizzle/schema.d.ts.map +1 -0
  41. package/dist/drizzle/schema.js +103 -0
  42. package/dist/drizzle/schema.js.map +1 -0
  43. package/dist/drizzle/subject-repository.d.ts +295 -0
  44. package/dist/drizzle/subject-repository.d.ts.map +1 -0
  45. package/dist/drizzle/subject-repository.js +76 -0
  46. package/dist/drizzle/subject-repository.js.map +1 -0
  47. package/dist/drizzle/subscription-repository.d.ts +60 -0
  48. package/dist/drizzle/subscription-repository.d.ts.map +1 -0
  49. package/dist/drizzle/subscription-repository.js +128 -0
  50. package/dist/drizzle/subscription-repository.js.map +1 -0
  51. package/dist/drizzle/summary-repository.d.ts +9 -0
  52. package/dist/drizzle/summary-repository.d.ts.map +1 -0
  53. package/dist/drizzle/summary-repository.js +25 -0
  54. package/dist/drizzle/summary-repository.js.map +1 -0
  55. package/dist/drizzle/types.d.ts +4 -0
  56. package/dist/drizzle/types.d.ts.map +1 -0
  57. package/dist/drizzle/types.js +2 -0
  58. package/dist/drizzle/types.js.map +1 -0
  59. package/dist/errors.d.ts +10 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +13 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/hooks.d.ts +24 -0
  64. package/dist/hooks.d.ts.map +1 -0
  65. package/dist/hooks.js +2 -0
  66. package/dist/hooks.js.map +1 -0
  67. package/dist/index.d.ts +11 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +9 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/logger.d.ts +16 -0
  72. package/dist/logger.d.ts.map +1 -0
  73. package/dist/logger.js +8 -0
  74. package/dist/logger.js.map +1 -0
  75. package/dist/plugins/builtin-plugins.d.ts +3 -0
  76. package/dist/plugins/builtin-plugins.d.ts.map +1 -0
  77. package/dist/plugins/builtin-plugins.js +7 -0
  78. package/dist/plugins/builtin-plugins.js.map +1 -0
  79. package/dist/plugins/hash-payload.d.ts +2 -0
  80. package/dist/plugins/hash-payload.d.ts.map +1 -0
  81. package/dist/plugins/hash-payload.js +5 -0
  82. package/dist/plugins/hash-payload.js.map +1 -0
  83. package/dist/plugins/manual.d.ts +12 -0
  84. package/dist/plugins/manual.d.ts.map +1 -0
  85. package/dist/plugins/manual.js +87 -0
  86. package/dist/plugins/manual.js.map +1 -0
  87. package/dist/plugins/plan-provisioning.d.ts +18 -0
  88. package/dist/plugins/plan-provisioning.d.ts.map +1 -0
  89. package/dist/plugins/plan-provisioning.js +159 -0
  90. package/dist/plugins/plan-provisioning.js.map +1 -0
  91. package/dist/plugins/plugin-registry.d.ts +9 -0
  92. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  93. package/dist/plugins/plugin-registry.js +18 -0
  94. package/dist/plugins/plugin-registry.js.map +1 -0
  95. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts +4 -0
  96. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts.map +1 -0
  97. package/dist/providers/apple/plugin/app-store-plan-sync.js +85 -0
  98. package/dist/providers/apple/plugin/app-store-plan-sync.js.map +1 -0
  99. package/dist/providers/apple/plugin/app-store.d.ts +20 -0
  100. package/dist/providers/apple/plugin/app-store.d.ts.map +1 -0
  101. package/dist/providers/apple/plugin/app-store.js +397 -0
  102. package/dist/providers/apple/plugin/app-store.js.map +1 -0
  103. package/dist/providers/apple/security/app-store-verification.d.ts +4 -0
  104. package/dist/providers/apple/security/app-store-verification.d.ts.map +1 -0
  105. package/dist/providers/apple/security/app-store-verification.js +100 -0
  106. package/dist/providers/apple/security/app-store-verification.js.map +1 -0
  107. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts +3 -0
  108. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts.map +1 -0
  109. package/dist/providers/apple/services/app-store-subscription-verification-service.js +155 -0
  110. package/dist/providers/apple/services/app-store-subscription-verification-service.js.map +1 -0
  111. package/dist/providers/google/plugin/play-plan-sync.d.ts +4 -0
  112. package/dist/providers/google/plugin/play-plan-sync.d.ts.map +1 -0
  113. package/dist/providers/google/plugin/play-plan-sync.js +270 -0
  114. package/dist/providers/google/plugin/play-plan-sync.js.map +1 -0
  115. package/dist/providers/google/plugin/play.d.ts +20 -0
  116. package/dist/providers/google/plugin/play.d.ts.map +1 -0
  117. package/dist/providers/google/plugin/play.js +460 -0
  118. package/dist/providers/google/plugin/play.js.map +1 -0
  119. package/dist/providers/google/security/oauth.d.ts +10 -0
  120. package/dist/providers/google/security/oauth.d.ts.map +1 -0
  121. package/dist/providers/google/security/oauth.js +116 -0
  122. package/dist/providers/google/security/oauth.js.map +1 -0
  123. package/dist/providers/google/security/pubsub-verification.d.ts +3 -0
  124. package/dist/providers/google/security/pubsub-verification.d.ts.map +1 -0
  125. package/dist/providers/google/security/pubsub-verification.js +229 -0
  126. package/dist/providers/google/security/pubsub-verification.js.map +1 -0
  127. package/dist/providers/google/services/play-subscription-verification-service.d.ts +3 -0
  128. package/dist/providers/google/services/play-subscription-verification-service.d.ts.map +1 -0
  129. package/dist/providers/google/services/play-subscription-verification-service.js +96 -0
  130. package/dist/providers/google/services/play-subscription-verification-service.js.map +1 -0
  131. package/dist/repositories/catalog-mapping-repository.d.ts +9 -0
  132. package/dist/repositories/catalog-mapping-repository.d.ts.map +1 -0
  133. package/dist/repositories/catalog-mapping-repository.js +2 -0
  134. package/dist/repositories/catalog-mapping-repository.js.map +1 -0
  135. package/dist/repositories/inbound-event-repository.d.ts +23 -0
  136. package/dist/repositories/inbound-event-repository.d.ts.map +1 -0
  137. package/dist/repositories/inbound-event-repository.js +2 -0
  138. package/dist/repositories/inbound-event-repository.js.map +1 -0
  139. package/dist/repositories/index.d.ts +30 -0
  140. package/dist/repositories/index.d.ts.map +1 -0
  141. package/dist/repositories/index.js +2 -0
  142. package/dist/repositories/index.js.map +1 -0
  143. package/dist/repositories/plan-repository.d.ts +10 -0
  144. package/dist/repositories/plan-repository.d.ts.map +1 -0
  145. package/dist/repositories/plan-repository.js +2 -0
  146. package/dist/repositories/plan-repository.js.map +1 -0
  147. package/dist/repositories/plugin-installation-repository.d.ts +13 -0
  148. package/dist/repositories/plugin-installation-repository.d.ts.map +1 -0
  149. package/dist/repositories/plugin-installation-repository.js +2 -0
  150. package/dist/repositories/plugin-installation-repository.js.map +1 -0
  151. package/dist/repositories/subject-repository.d.ts +10 -0
  152. package/dist/repositories/subject-repository.d.ts.map +1 -0
  153. package/dist/repositories/subject-repository.js +2 -0
  154. package/dist/repositories/subject-repository.js.map +1 -0
  155. package/dist/repositories/subscription-repository.d.ts +24 -0
  156. package/dist/repositories/subscription-repository.d.ts.map +1 -0
  157. package/dist/repositories/subscription-repository.js +2 -0
  158. package/dist/repositories/subscription-repository.js.map +1 -0
  159. package/dist/security/jwt.d.ts +22 -0
  160. package/dist/security/jwt.d.ts.map +1 -0
  161. package/dist/security/jwt.js +132 -0
  162. package/dist/security/jwt.js.map +1 -0
  163. package/dist/security/plugin-webhook-verification.d.ts +3 -0
  164. package/dist/security/plugin-webhook-verification.d.ts.map +1 -0
  165. package/dist/security/plugin-webhook-verification.js +44 -0
  166. package/dist/security/plugin-webhook-verification.js.map +1 -0
  167. package/dist/security/relay-signature.d.ts +12 -0
  168. package/dist/security/relay-signature.d.ts.map +1 -0
  169. package/dist/security/relay-signature.js +39 -0
  170. package/dist/security/relay-signature.js.map +1 -0
  171. package/dist/services/canonical-subscription-service.d.ts +4 -0
  172. package/dist/services/canonical-subscription-service.d.ts.map +1 -0
  173. package/dist/services/canonical-subscription-service.js +20 -0
  174. package/dist/services/canonical-subscription-service.js.map +1 -0
  175. package/dist/services/managed-subscription-service.d.ts +5 -0
  176. package/dist/services/managed-subscription-service.d.ts.map +1 -0
  177. package/dist/services/managed-subscription-service.js +24 -0
  178. package/dist/services/managed-subscription-service.js.map +1 -0
  179. package/dist/services/plan-provisioning-service.d.ts +5 -0
  180. package/dist/services/plan-provisioning-service.d.ts.map +1 -0
  181. package/dist/services/plan-provisioning-service.js +100 -0
  182. package/dist/services/plan-provisioning-service.js.map +1 -0
  183. package/dist/services/plan-resolution.d.ts +4 -0
  184. package/dist/services/plan-resolution.d.ts.map +1 -0
  185. package/dist/services/plan-resolution.js +33 -0
  186. package/dist/services/plan-resolution.js.map +1 -0
  187. package/dist/services/plugin-installation-service.d.ts +6 -0
  188. package/dist/services/plugin-installation-service.d.ts.map +1 -0
  189. package/dist/services/plugin-installation-service.js +19 -0
  190. package/dist/services/plugin-installation-service.js.map +1 -0
  191. package/dist/services/provider-subscription-sync-service.d.ts +4 -0
  192. package/dist/services/provider-subscription-sync-service.d.ts.map +1 -0
  193. package/dist/services/provider-subscription-sync-service.js +13 -0
  194. package/dist/services/provider-subscription-sync-service.js.map +1 -0
  195. package/dist/services/subject-resolution.d.ts +4 -0
  196. package/dist/services/subject-resolution.d.ts.map +1 -0
  197. package/dist/services/subject-resolution.js +48 -0
  198. package/dist/services/subject-resolution.js.map +1 -0
  199. package/dist/services/webhook-ingestion-service.d.ts +14 -0
  200. package/dist/services/webhook-ingestion-service.d.ts.map +1 -0
  201. package/dist/services/webhook-ingestion-service.js +149 -0
  202. package/dist/services/webhook-ingestion-service.js.map +1 -0
  203. package/dist/submesh.d.ts +265 -0
  204. package/dist/submesh.d.ts.map +1 -0
  205. package/dist/submesh.js +602 -0
  206. package/dist/submesh.js.map +1 -0
  207. package/dist/utils/canonical.d.ts +7 -0
  208. package/dist/utils/canonical.d.ts.map +1 -0
  209. package/dist/utils/canonical.js +8 -0
  210. package/dist/utils/canonical.js.map +1 -0
  211. package/dist/utils/parse.d.ts +42 -0
  212. package/dist/utils/parse.d.ts.map +1 -0
  213. package/dist/utils/parse.js +74 -0
  214. package/dist/utils/parse.js.map +1 -0
  215. package/dist/utils/records.d.ts +2 -0
  216. package/dist/utils/records.d.ts.map +1 -0
  217. package/dist/utils/records.js +7 -0
  218. package/dist/utils/records.js.map +1 -0
  219. package/dist/utils/time.d.ts +2 -0
  220. package/dist/utils/time.d.ts.map +1 -0
  221. package/dist/utils/time.js +4 -0
  222. package/dist/utils/time.js.map +1 -0
  223. package/dist/utils/validation.d.ts +10 -0
  224. package/dist/utils/validation.d.ts.map +1 -0
  225. package/dist/utils/validation.js +19 -0
  226. package/dist/utils/validation.js.map +1 -0
  227. package/drizzle/0000_cute_the_order.sql +94 -0
  228. package/drizzle/meta/0000_snapshot.json +559 -0
  229. package/drizzle/meta/_journal.json +13 -0
  230. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQnB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYhB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBzB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBzB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQlB,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { integer, jsonb, pgTable, text, unique } from "drizzle-orm/pg-core";
2
+ export const subjects = pgTable("subjects", {
3
+ id: text("id").primaryKey(),
4
+ email: text("email"),
5
+ name: text("name"),
6
+ externalRef: text("external_ref"),
7
+ metadata: jsonb("metadata").$type().notNull(),
8
+ createdAt: text("created_at").notNull(),
9
+ updatedAt: text("updated_at").notNull(),
10
+ });
11
+ export const subjectIdentities = pgTable("subject_identities", {
12
+ id: text("id").primaryKey(),
13
+ subjectId: text("subject_id")
14
+ .notNull()
15
+ .references(() => subjects.id, { onDelete: "cascade" }),
16
+ provider: text("provider").notNull(),
17
+ externalId: text("external_id").notNull(),
18
+ metadata: jsonb("metadata").$type().notNull(),
19
+ createdAt: text("created_at").notNull(),
20
+ }, (table) => ({
21
+ providerExternalIdUnique: unique().on(table.provider, table.externalId),
22
+ }));
23
+ export const plans = pgTable("plans", {
24
+ id: text("id").primaryKey(),
25
+ code: text("code").notNull().unique(),
26
+ name: text("name").notNull(),
27
+ description: text("description"),
28
+ interval: text("interval_unit").$type().notNull(),
29
+ priceAmount: integer("price_amount").notNull(),
30
+ currency: text("currency").notNull(),
31
+ entitlements: text("entitlements").array().notNull(),
32
+ metadata: jsonb("metadata").$type().notNull(),
33
+ createdAt: text("created_at").notNull(),
34
+ updatedAt: text("updated_at").notNull(),
35
+ });
36
+ export const catalogMappings = pgTable("catalog_mappings", {
37
+ id: text("id").primaryKey(),
38
+ pluginKey: text("plugin_key").notNull(),
39
+ externalProductId: text("external_product_id").notNull(),
40
+ planCode: text("plan_code").notNull(),
41
+ metadata: jsonb("metadata").$type().notNull(),
42
+ createdAt: text("created_at").notNull(),
43
+ updatedAt: text("updated_at").notNull(),
44
+ }, (table) => ({
45
+ pluginProductUnique: unique().on(table.pluginKey, table.externalProductId),
46
+ }));
47
+ export const subscriptions = pgTable("subscriptions", {
48
+ id: text("id").primaryKey(),
49
+ subjectId: text("subject_id")
50
+ .notNull()
51
+ .references(() => subjects.id, { onDelete: "cascade" }),
52
+ planId: text("plan_id")
53
+ .notNull()
54
+ .references(() => plans.id, { onDelete: "restrict" }),
55
+ pluginKey: text("plugin_key").notNull(),
56
+ sourceType: text("source_type").notNull(),
57
+ sourceRef: text("source_ref").notNull(),
58
+ status: text("status").$type().notNull(),
59
+ currentPeriodStart: text("current_period_start"),
60
+ currentPeriodEnd: text("current_period_end"),
61
+ trialEndAt: text("trial_end_at"),
62
+ cancelAt: text("cancel_at"),
63
+ metadata: jsonb("metadata").$type().notNull(),
64
+ createdAt: text("created_at").notNull(),
65
+ updatedAt: text("updated_at").notNull(),
66
+ }, (table) => ({
67
+ pluginSourceUnique: unique().on(table.pluginKey, table.sourceRef),
68
+ }));
69
+ export const pluginInstallations = pgTable("plugin_installations", {
70
+ id: text("id").primaryKey(),
71
+ pluginKey: text("plugin_key").notNull().unique(),
72
+ displayName: text("display_name").notNull(),
73
+ enabled: integer("enabled").notNull(),
74
+ config: jsonb("config").$type().notNull(),
75
+ createdAt: text("created_at").notNull(),
76
+ updatedAt: text("updated_at").notNull(),
77
+ });
78
+ export const inboundEvents = pgTable("inbound_events", {
79
+ id: text("id").primaryKey(),
80
+ pluginKey: text("plugin_key").notNull(),
81
+ eventKey: text("event_key").notNull(),
82
+ eventType: text("event_type").notNull(),
83
+ sourceRef: text("source_ref"),
84
+ payload: jsonb("payload").$type().notNull(),
85
+ status: text("status").$type().notNull(),
86
+ processedCount: integer("processed_count").notNull(),
87
+ errorMessage: text("error_message"),
88
+ processedAt: text("processed_at"),
89
+ createdAt: text("created_at").notNull(),
90
+ updatedAt: text("updated_at").notNull(),
91
+ }, (table) => ({
92
+ pluginEventUnique: unique().on(table.pluginKey, table.eventKey),
93
+ }));
94
+ export const schema = {
95
+ subjects,
96
+ subjectIdentities,
97
+ plans,
98
+ catalogMappings,
99
+ subscriptions,
100
+ pluginInstallations,
101
+ inboundEvents,
102
+ };
103
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ5E,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE;IAC1C,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACtE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CACtC,oBAAoB,EACpB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;SAC1B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACzD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IACzC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACtE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,wBAAwB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;CACxE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;IACpC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAgB,CAAC,OAAO,EAAE;IAC/D,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAC9C,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACtE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CACpC,kBAAkB,EAClB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE;IACxD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACtE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,mBAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC;CAC3E,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,eAAe,EACf;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;SAC1B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACzD,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IACzC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAsB,CAAC,OAAO,EAAE;IAC5D,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC;IAChD,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAC5C,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACtE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;CAClE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IACjE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IAChD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAC3C,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACrC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IAClE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,gBAAgB,EAChB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE;IACpE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAsB,CAAC,OAAO,EAAE;IAC5D,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE;IACpD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;IACnC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC;CAChE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ;IACR,iBAAiB;IACjB,KAAK;IACL,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,aAAa;CACd,CAAC"}
@@ -0,0 +1,295 @@
1
+ import type { SubjectRepository } from "../repositories/subject-repository.js";
2
+ import type { LinkIdentityInput, UpsertSubjectInput } from "../contracts.js";
3
+ import type { SubmeshDrizzleDatabase } from "./types.js";
4
+ export declare class DrizzleSubjectRepository implements SubjectRepository {
5
+ private readonly db;
6
+ constructor(db: SubmeshDrizzleDatabase);
7
+ list(): Omit<import("drizzle-orm/pg-core").PgSelectBase<"subjects", {
8
+ id: import("drizzle-orm/pg-core").PgColumn<{
9
+ name: "id";
10
+ tableName: "subjects";
11
+ dataType: "string";
12
+ columnType: "PgText";
13
+ data: string;
14
+ driverParam: string;
15
+ notNull: true;
16
+ hasDefault: false;
17
+ isPrimaryKey: true;
18
+ isAutoincrement: false;
19
+ hasRuntimeDefault: false;
20
+ enumValues: [string, ...string[]];
21
+ baseColumn: never;
22
+ identity: undefined;
23
+ generated: undefined;
24
+ }, {}, {}>;
25
+ email: import("drizzle-orm/pg-core").PgColumn<{
26
+ name: "email";
27
+ tableName: "subjects";
28
+ dataType: "string";
29
+ columnType: "PgText";
30
+ data: string;
31
+ driverParam: string;
32
+ notNull: false;
33
+ hasDefault: false;
34
+ isPrimaryKey: false;
35
+ isAutoincrement: false;
36
+ hasRuntimeDefault: false;
37
+ enumValues: [string, ...string[]];
38
+ baseColumn: never;
39
+ identity: undefined;
40
+ generated: undefined;
41
+ }, {}, {}>;
42
+ name: import("drizzle-orm/pg-core").PgColumn<{
43
+ name: "name";
44
+ tableName: "subjects";
45
+ dataType: "string";
46
+ columnType: "PgText";
47
+ data: string;
48
+ driverParam: string;
49
+ notNull: false;
50
+ hasDefault: false;
51
+ isPrimaryKey: false;
52
+ isAutoincrement: false;
53
+ hasRuntimeDefault: false;
54
+ enumValues: [string, ...string[]];
55
+ baseColumn: never;
56
+ identity: undefined;
57
+ generated: undefined;
58
+ }, {}, {}>;
59
+ externalRef: import("drizzle-orm/pg-core").PgColumn<{
60
+ name: "external_ref";
61
+ tableName: "subjects";
62
+ dataType: "string";
63
+ columnType: "PgText";
64
+ data: string;
65
+ driverParam: string;
66
+ notNull: false;
67
+ hasDefault: false;
68
+ isPrimaryKey: false;
69
+ isAutoincrement: false;
70
+ hasRuntimeDefault: false;
71
+ enumValues: [string, ...string[]];
72
+ baseColumn: never;
73
+ identity: undefined;
74
+ generated: undefined;
75
+ }, {}, {}>;
76
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
77
+ name: "metadata";
78
+ tableName: "subjects";
79
+ dataType: "json";
80
+ columnType: "PgJsonb";
81
+ data: Record<string, unknown>;
82
+ driverParam: unknown;
83
+ notNull: true;
84
+ hasDefault: false;
85
+ isPrimaryKey: false;
86
+ isAutoincrement: false;
87
+ hasRuntimeDefault: false;
88
+ enumValues: undefined;
89
+ baseColumn: never;
90
+ identity: undefined;
91
+ generated: undefined;
92
+ }, {}, {
93
+ $type: Record<string, unknown>;
94
+ }>;
95
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
96
+ name: "created_at";
97
+ tableName: "subjects";
98
+ dataType: "string";
99
+ columnType: "PgText";
100
+ data: string;
101
+ driverParam: string;
102
+ notNull: true;
103
+ hasDefault: false;
104
+ isPrimaryKey: false;
105
+ isAutoincrement: false;
106
+ hasRuntimeDefault: false;
107
+ enumValues: [string, ...string[]];
108
+ baseColumn: never;
109
+ identity: undefined;
110
+ generated: undefined;
111
+ }, {}, {}>;
112
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
113
+ name: "updated_at";
114
+ tableName: "subjects";
115
+ dataType: "string";
116
+ columnType: "PgText";
117
+ data: string;
118
+ driverParam: string;
119
+ notNull: true;
120
+ hasDefault: false;
121
+ isPrimaryKey: false;
122
+ isAutoincrement: false;
123
+ hasRuntimeDefault: false;
124
+ enumValues: [string, ...string[]];
125
+ baseColumn: never;
126
+ identity: undefined;
127
+ generated: undefined;
128
+ }, {}, {}>;
129
+ }, "single", Record<"subjects", "not-null">, false, "orderBy", {
130
+ id: string;
131
+ email: string | null;
132
+ name: string | null;
133
+ externalRef: string | null;
134
+ metadata: Record<string, unknown>;
135
+ createdAt: string;
136
+ updatedAt: string;
137
+ }[], {
138
+ id: import("drizzle-orm/pg-core").PgColumn<{
139
+ name: "id";
140
+ tableName: "subjects";
141
+ dataType: "string";
142
+ columnType: "PgText";
143
+ data: string;
144
+ driverParam: string;
145
+ notNull: true;
146
+ hasDefault: false;
147
+ isPrimaryKey: true;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: [string, ...string[]];
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {}>;
155
+ email: import("drizzle-orm/pg-core").PgColumn<{
156
+ name: "email";
157
+ tableName: "subjects";
158
+ dataType: "string";
159
+ columnType: "PgText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: false;
163
+ hasDefault: false;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: [string, ...string[]];
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {}>;
172
+ name: import("drizzle-orm/pg-core").PgColumn<{
173
+ name: "name";
174
+ tableName: "subjects";
175
+ dataType: "string";
176
+ columnType: "PgText";
177
+ data: string;
178
+ driverParam: string;
179
+ notNull: false;
180
+ hasDefault: false;
181
+ isPrimaryKey: false;
182
+ isAutoincrement: false;
183
+ hasRuntimeDefault: false;
184
+ enumValues: [string, ...string[]];
185
+ baseColumn: never;
186
+ identity: undefined;
187
+ generated: undefined;
188
+ }, {}, {}>;
189
+ externalRef: import("drizzle-orm/pg-core").PgColumn<{
190
+ name: "external_ref";
191
+ tableName: "subjects";
192
+ dataType: "string";
193
+ columnType: "PgText";
194
+ data: string;
195
+ driverParam: string;
196
+ notNull: false;
197
+ hasDefault: false;
198
+ isPrimaryKey: false;
199
+ isAutoincrement: false;
200
+ hasRuntimeDefault: false;
201
+ enumValues: [string, ...string[]];
202
+ baseColumn: never;
203
+ identity: undefined;
204
+ generated: undefined;
205
+ }, {}, {}>;
206
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
207
+ name: "metadata";
208
+ tableName: "subjects";
209
+ dataType: "json";
210
+ columnType: "PgJsonb";
211
+ data: Record<string, unknown>;
212
+ driverParam: unknown;
213
+ notNull: true;
214
+ hasDefault: false;
215
+ isPrimaryKey: false;
216
+ isAutoincrement: false;
217
+ hasRuntimeDefault: false;
218
+ enumValues: undefined;
219
+ baseColumn: never;
220
+ identity: undefined;
221
+ generated: undefined;
222
+ }, {}, {
223
+ $type: Record<string, unknown>;
224
+ }>;
225
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
226
+ name: "created_at";
227
+ tableName: "subjects";
228
+ dataType: "string";
229
+ columnType: "PgText";
230
+ data: string;
231
+ driverParam: string;
232
+ notNull: true;
233
+ hasDefault: false;
234
+ isPrimaryKey: false;
235
+ isAutoincrement: false;
236
+ hasRuntimeDefault: false;
237
+ enumValues: [string, ...string[]];
238
+ baseColumn: never;
239
+ identity: undefined;
240
+ generated: undefined;
241
+ }, {}, {}>;
242
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
243
+ name: "updated_at";
244
+ tableName: "subjects";
245
+ dataType: "string";
246
+ columnType: "PgText";
247
+ data: string;
248
+ driverParam: string;
249
+ notNull: true;
250
+ hasDefault: false;
251
+ isPrimaryKey: false;
252
+ isAutoincrement: false;
253
+ hasRuntimeDefault: false;
254
+ enumValues: [string, ...string[]];
255
+ baseColumn: never;
256
+ identity: undefined;
257
+ generated: undefined;
258
+ }, {}, {}>;
259
+ }>, "orderBy">;
260
+ getById(id: string): Promise<{
261
+ id: string;
262
+ email: string | null;
263
+ name: string | null;
264
+ externalRef: string | null;
265
+ metadata: Record<string, unknown>;
266
+ createdAt: string;
267
+ updatedAt: string;
268
+ } | undefined>;
269
+ upsert(input: UpsertSubjectInput): Promise<{
270
+ id: string;
271
+ email: string | null;
272
+ name: string | null;
273
+ externalRef: string | null;
274
+ metadata: Record<string, unknown>;
275
+ createdAt: string;
276
+ updatedAt: string;
277
+ }>;
278
+ findIdentity(provider: string, externalId: string): Promise<{
279
+ id: string;
280
+ metadata: Record<string, unknown>;
281
+ createdAt: string;
282
+ subjectId: string;
283
+ provider: string;
284
+ externalId: string;
285
+ } | undefined>;
286
+ upsertIdentity(input: LinkIdentityInput): Promise<{
287
+ id: string;
288
+ metadata: Record<string, unknown>;
289
+ createdAt: string;
290
+ subjectId: string;
291
+ provider: string;
292
+ externalId: string;
293
+ }>;
294
+ }
295
+ //# sourceMappingURL=subject-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-repository.d.ts","sourceRoot":"","sources":["../../src/drizzle/subject-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,wBAAyB,YAAW,iBAAiB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,sBAAsB;IAEvD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIE,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;IAMlB,MAAM,CAAC,KAAK,EAAE,kBAAkB;;;;;;;;;IAsChC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;;;;;;IASjD,cAAc,CAAC,KAAK,EAAE,iBAAiB;;;;;;;;CAoB9C"}
@@ -0,0 +1,76 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { and, desc, eq } from "drizzle-orm";
3
+ import { now } from "../utils/time.js";
4
+ import { subjectIdentities, subjects } from "./schema.js";
5
+ export class DrizzleSubjectRepository {
6
+ db;
7
+ constructor(db) {
8
+ this.db = db;
9
+ }
10
+ list() {
11
+ return this.db.select().from(subjects).orderBy(desc(subjects.createdAt));
12
+ }
13
+ async getById(id) {
14
+ return this.db.query.subjects.findFirst({
15
+ where: eq(subjects.id, id),
16
+ });
17
+ }
18
+ async upsert(input) {
19
+ const existing = await this.getById(input.id);
20
+ const timestamp = now();
21
+ if (!existing) {
22
+ const [created] = await this.db
23
+ .insert(subjects)
24
+ .values({
25
+ id: input.id,
26
+ email: input.email ?? null,
27
+ name: input.name ?? null,
28
+ externalRef: input.externalRef ?? null,
29
+ metadata: input.metadata ?? {},
30
+ createdAt: timestamp,
31
+ updatedAt: timestamp,
32
+ })
33
+ .returning();
34
+ return created;
35
+ }
36
+ const [updated] = await this.db
37
+ .update(subjects)
38
+ .set({
39
+ email: input.email ?? existing.email ?? null,
40
+ name: input.name ?? existing.name ?? null,
41
+ externalRef: input.externalRef ?? existing.externalRef ?? null,
42
+ metadata: {
43
+ ...existing.metadata,
44
+ ...(input.metadata ?? {}),
45
+ },
46
+ updatedAt: timestamp,
47
+ })
48
+ .where(eq(subjects.id, input.id))
49
+ .returning();
50
+ return updated;
51
+ }
52
+ async findIdentity(provider, externalId) {
53
+ return this.db.query.subjectIdentities.findFirst({
54
+ where: and(eq(subjectIdentities.provider, provider), eq(subjectIdentities.externalId, externalId)),
55
+ });
56
+ }
57
+ async upsertIdentity(input) {
58
+ const existing = await this.findIdentity(input.provider, input.externalId);
59
+ if (existing) {
60
+ return existing;
61
+ }
62
+ const [created] = await this.db
63
+ .insert(subjectIdentities)
64
+ .values({
65
+ id: randomUUID(),
66
+ subjectId: input.subjectId,
67
+ provider: input.provider,
68
+ externalId: input.externalId,
69
+ metadata: input.metadata ?? {},
70
+ createdAt: now(),
71
+ })
72
+ .returning();
73
+ return created;
74
+ }
75
+ }
76
+ //# sourceMappingURL=subject-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-repository.js","sourceRoot":"","sources":["../../src/drizzle/subject-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { SubscriptionWithPlan } from "@shdan/submesh-core";
2
+ import type { SubscriptionRepository, UpsertSubscriptionInput } from "../repositories/subscription-repository.js";
3
+ import type { UpdateSubscriptionInput } from "../contracts.js";
4
+ import type { SubmeshDrizzleDatabase } from "./types.js";
5
+ export declare class DrizzleSubscriptionRepository implements SubscriptionRepository {
6
+ private readonly db;
7
+ constructor(db: SubmeshDrizzleDatabase);
8
+ list(): Promise<SubscriptionWithPlan[]>;
9
+ listBySubjectId(subjectId: string): Promise<SubscriptionWithPlan[]>;
10
+ getById(id: string): Promise<SubscriptionWithPlan | undefined>;
11
+ getBySource(pluginKey: string, sourceRef: string): Promise<{
12
+ id: string;
13
+ metadata: Record<string, unknown>;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ subjectId: string;
17
+ pluginKey: string;
18
+ planId: string;
19
+ sourceType: string;
20
+ sourceRef: string;
21
+ status: import("@shdan/submesh-core").SubscriptionStatus;
22
+ currentPeriodStart: string | null;
23
+ currentPeriodEnd: string | null;
24
+ trialEndAt: string | null;
25
+ cancelAt: string | null;
26
+ } | undefined>;
27
+ upsert(input: UpsertSubscriptionInput): Promise<{
28
+ id: string;
29
+ metadata: Record<string, unknown>;
30
+ createdAt: string;
31
+ updatedAt: string;
32
+ subjectId: string;
33
+ pluginKey: string;
34
+ planId: string;
35
+ sourceType: string;
36
+ sourceRef: string;
37
+ status: import("@shdan/submesh-core").SubscriptionStatus;
38
+ currentPeriodStart: string | null;
39
+ currentPeriodEnd: string | null;
40
+ trialEndAt: string | null;
41
+ cancelAt: string | null;
42
+ }>;
43
+ update(id: string, input: UpdateSubscriptionInput): Promise<{
44
+ id: string;
45
+ subjectId: string;
46
+ planId: string;
47
+ pluginKey: string;
48
+ sourceType: string;
49
+ sourceRef: string;
50
+ status: import("@shdan/submesh-core").SubscriptionStatus;
51
+ currentPeriodStart: string | null;
52
+ currentPeriodEnd: string | null;
53
+ trialEndAt: string | null;
54
+ cancelAt: string | null;
55
+ metadata: Record<string, unknown>;
56
+ createdAt: string;
57
+ updatedAt: string;
58
+ } | undefined>;
59
+ }
60
+ //# sourceMappingURL=subscription-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-repository.d.ts","sourceRoot":"","sources":["../../src/drizzle/subscription-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAQ,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAiBzD,qBAAa,6BAA8B,YAAW,sBAAsB;IAC9D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,sBAAsB;IAEjD,IAAI;IAUJ,eAAe,CAAC,SAAS,EAAE,MAAM;IAWjC,OAAO,CAAC,EAAE,EAAE,MAAM;IAWlB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;IAShD,MAAM,CAAC,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;;IA+CrC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;;CAqCxD"}