create-m5kdev 0.35.0 → 0.37.2

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 (61) hide show
  1. package/package.json +3 -3
  2. package/templates/minimal-app/.dockerignore.tpl +6 -0
  3. package/templates/minimal-app/apps/e2e/playwright.config.ts.tpl +3 -0
  4. package/templates/minimal-app/apps/e2e/servers.ts.tpl +4 -0
  5. package/templates/minimal-app/apps/e2e/tests/expo-helpers.ts.tpl +2 -34
  6. package/templates/minimal-app/apps/e2e/tests/expo-standard.spec.ts.tpl +225 -5
  7. package/templates/minimal-app/apps/e2e/tests/helpers.ts.tpl +47 -1
  8. package/templates/minimal-app/apps/e2e/tests/mcp-helpers.ts.tpl +406 -0
  9. package/templates/minimal-app/apps/e2e/tests/mcp.spec.ts.tpl +108 -0
  10. package/templates/minimal-app/apps/e2e/tests/standard.spec.ts.tpl +290 -8
  11. package/templates/minimal-app/apps/expo/app.json.tpl +1 -0
  12. package/templates/minimal-app/apps/expo/package.json.tpl +4 -0
  13. package/templates/minimal-app/apps/expo/src/app/_layout.tsx.tpl +4 -1
  14. package/templates/minimal-app/apps/expo/src/app/notifications.tsx.tpl +70 -0
  15. package/templates/minimal-app/apps/expo/src/app/organization/accept-invitation.tsx.tpl +8 -16
  16. package/templates/minimal-app/apps/expo/src/app/posts.tsx.tpl +4 -1
  17. package/templates/minimal-app/apps/expo/src/lib/trpc.ts.tpl +11 -2
  18. package/templates/minimal-app/apps/landing/vite.config.ts.tpl +2 -3
  19. package/templates/minimal-app/apps/server/AGENTS.md.tpl +10 -0
  20. package/templates/minimal-app/apps/server/db.e2e.ts.tpl +6 -40
  21. package/templates/minimal-app/apps/server/db.ts.tpl +6 -42
  22. package/templates/minimal-app/apps/server/drizzle/{0000_wealthy_absorbing_man.sql → 0000_whole_echo.sql} +102 -3
  23. package/templates/minimal-app/apps/server/drizzle/0001_yummy_spectrum.sql +26 -0
  24. package/templates/minimal-app/apps/server/drizzle/0002_crazy_lilith.sql +47 -0
  25. package/templates/minimal-app/apps/server/drizzle/0003_freezing_fantastic_four.sql +4 -0
  26. package/templates/minimal-app/apps/server/drizzle/0004_slow_ezekiel_stane.sql +99 -0
  27. package/templates/minimal-app/apps/server/drizzle/0005_wonderful_the_professor.sql +2 -0
  28. package/templates/minimal-app/apps/server/drizzle/0006_lazy_blue_marvel.sql +159 -0
  29. package/templates/minimal-app/apps/server/drizzle/0007_abnormal_ultimo.sql +2 -0
  30. package/templates/minimal-app/apps/server/drizzle/0008_steady_nekra.sql +87 -0
  31. package/templates/minimal-app/apps/server/drizzle/meta/0000_snapshot.json.tpl +2625 -1780
  32. package/templates/minimal-app/apps/server/drizzle/meta/0001_snapshot.json.tpl +2671 -1796
  33. package/templates/minimal-app/apps/server/drizzle/meta/0002_snapshot.json.tpl +2716 -1818
  34. package/templates/minimal-app/apps/server/drizzle/meta/0003_snapshot.json.tpl +715 -164
  35. package/templates/minimal-app/apps/server/drizzle/meta/0004_snapshot.json.tpl +2498 -0
  36. package/templates/minimal-app/apps/server/drizzle/meta/0005_snapshot.json.tpl +2484 -0
  37. package/templates/minimal-app/apps/server/drizzle/meta/0006_snapshot.json.tpl +3603 -0
  38. package/templates/minimal-app/apps/server/drizzle/meta/0007_snapshot.json.tpl +3620 -0
  39. package/templates/minimal-app/apps/server/drizzle/meta/0008_snapshot.json.tpl +3620 -0
  40. package/templates/minimal-app/apps/server/drizzle/meta/_journal.json.tpl +44 -9
  41. package/templates/minimal-app/apps/server/src/app.ts.tpl +12 -2
  42. package/templates/minimal-app/apps/server/src/modules/posts/posts.db.ts.tpl +2 -2
  43. package/templates/minimal-app/apps/server/src/modules/posts/posts.mcp.ts.tpl +17 -0
  44. package/templates/minimal-app/apps/server/src/modules/posts/posts.module.ts.tpl +11 -0
  45. package/templates/minimal-app/apps/server/src/modules/posts/posts.service.ts.tpl +14 -5
  46. package/templates/minimal-app/apps/server/src/modules/test-harness/test-harness.module.ts.tpl +13 -36
  47. package/templates/minimal-app/apps/server/src/schema.ts.tpl +16 -2
  48. package/templates/minimal-app/apps/shared/package.json.tpl +1 -0
  49. package/templates/minimal-app/apps/shared/src/modules/app/app.constants.ts.tpl +1 -1
  50. package/templates/minimal-app/apps/shared/src/modules/notification/notification.constants.ts.tpl +5 -0
  51. package/templates/minimal-app/apps/shared/src/modules/notification/notification.schema.ts.tpl +1 -1
  52. package/templates/minimal-app/apps/webapp/src/Layout.tsx.tpl +17 -1
  53. package/templates/minimal-app/apps/webapp/src/Router.tsx.tpl +10 -8
  54. package/templates/minimal-app/apps/webapp/src/modules/notification/NotificationPreferencesRoute.tsx.tpl +29 -0
  55. package/templates/minimal-app/apps/webapp/src/modules/notification/StarterWebPush.tsx.tpl +44 -0
  56. package/templates/minimal-app/apps/webapp/translations/en/{{APP_SLUG}}.json.tpl +8 -0
  57. package/templates/minimal-app/pnpm-workspace.yaml.tpl +14 -13
  58. package/templates/minimal-app/template.manifest.json +9 -0
  59. package/templates/minimal-app/apps/server/drizzle/0001_third_ink.sql +0 -1
  60. package/templates/minimal-app/apps/server/drizzle/0002_concerned_proudstar.sql +0 -3
  61. package/templates/minimal-app/apps/server/drizzle/0003_silly_the_liberteens.sql +0 -27
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "6",
3
3
  "dialect": "sqlite",
4
- "id": "d3ade3d2-d0fe-4822-8b3b-4d14d1cdbee1",
5
- "prevId": "a4efbe3a-95de-45c2-a7a4-2e80de0472d5",
4
+ "id": "da7a4e6f-cfc3-4d74-a4d1-32ee0e9f6147",
5
+ "prevId": "9e0d7905-363b-497d-8c5d-68b06a59079e",
6
6
  "tables": {
7
7
  "account_claim_magic_links": {
8
8
  "name": "account_claim_magic_links",
@@ -66,10 +66,10 @@
66
66
  },
67
67
  "indexes": {},
68
68
  "foreignKeys": {
69
- "account_claim_magic_links_claim_id_waitlist_id_fk": {
70
- "name": "account_claim_magic_links_claim_id_waitlist_id_fk",
69
+ "account_claim_magic_links_claim_id_account_claims_id_fk": {
70
+ "name": "account_claim_magic_links_claim_id_account_claims_id_fk",
71
71
  "tableFrom": "account_claim_magic_links",
72
- "tableTo": "waitlist",
72
+ "tableTo": "account_claims",
73
73
  "columnsFrom": [
74
74
  "claim_id"
75
75
  ],
@@ -97,6 +97,93 @@
97
97
  "uniqueConstraints": {},
98
98
  "checkConstraints": {}
99
99
  },
100
+ "account_claims": {
101
+ "name": "account_claims",
102
+ "columns": {
103
+ "id": {
104
+ "name": "id",
105
+ "type": "text",
106
+ "primaryKey": true,
107
+ "notNull": true,
108
+ "autoincrement": false
109
+ },
110
+ "claim_user_id": {
111
+ "name": "claim_user_id",
112
+ "type": "text",
113
+ "primaryKey": false,
114
+ "notNull": true,
115
+ "autoincrement": false
116
+ },
117
+ "status": {
118
+ "name": "status",
119
+ "type": "text",
120
+ "primaryKey": false,
121
+ "notNull": true,
122
+ "autoincrement": false
123
+ },
124
+ "code": {
125
+ "name": "code",
126
+ "type": "text",
127
+ "primaryKey": false,
128
+ "notNull": false,
129
+ "autoincrement": false
130
+ },
131
+ "expires_at": {
132
+ "name": "expires_at",
133
+ "type": "integer",
134
+ "primaryKey": false,
135
+ "notNull": false,
136
+ "autoincrement": false
137
+ },
138
+ "claimed_at": {
139
+ "name": "claimed_at",
140
+ "type": "integer",
141
+ "primaryKey": false,
142
+ "notNull": false,
143
+ "autoincrement": false
144
+ },
145
+ "claimed_email": {
146
+ "name": "claimed_email",
147
+ "type": "text",
148
+ "primaryKey": false,
149
+ "notNull": false,
150
+ "autoincrement": false
151
+ },
152
+ "created_at": {
153
+ "name": "created_at",
154
+ "type": "integer",
155
+ "primaryKey": false,
156
+ "notNull": true,
157
+ "autoincrement": false
158
+ },
159
+ "updated_at": {
160
+ "name": "updated_at",
161
+ "type": "integer",
162
+ "primaryKey": false,
163
+ "notNull": false,
164
+ "autoincrement": false
165
+ }
166
+ },
167
+ "indexes": {},
168
+ "foreignKeys": {
169
+ "account_claims_claim_user_id_users_id_fk": {
170
+ "name": "account_claims_claim_user_id_users_id_fk",
171
+ "tableFrom": "account_claims",
172
+ "tableTo": "users",
173
+ "columnsFrom": [
174
+ "claim_user_id"
175
+ ],
176
+ "columnsTo": [
177
+ "id"
178
+ ],
179
+ "onDelete": "no action",
180
+ "onUpdate": "no action"
181
+ }
182
+ },
183
+ "compositePrimaryKeys": {},
184
+ "uniqueConstraints": {},
185
+ "checkConstraints": {}
186
+ },
100
187
  "accounts": {
101
188
  "name": "accounts",
102
189
  "columns": {
@@ -212,6 +299,174 @@
212
299
  "uniqueConstraints": {},
213
300
  "checkConstraints": {}
214
301
  },
302
+ "ai_usage": {
303
+ "name": "ai_usage",
304
+ "columns": {
305
+ "id": {
306
+ "name": "id",
307
+ "type": "text",
308
+ "primaryKey": true,
309
+ "notNull": true,
310
+ "autoincrement": false
311
+ },
312
+ "user_id": {
313
+ "name": "user_id",
314
+ "type": "text",
315
+ "primaryKey": false,
316
+ "notNull": false,
317
+ "autoincrement": false
318
+ },
319
+ "member_id": {
320
+ "name": "member_id",
321
+ "type": "text",
322
+ "primaryKey": false,
323
+ "notNull": false,
324
+ "autoincrement": false
325
+ },
326
+ "team_id": {
327
+ "name": "team_id",
328
+ "type": "text",
329
+ "primaryKey": false,
330
+ "notNull": false,
331
+ "autoincrement": false
332
+ },
333
+ "organization_id": {
334
+ "name": "organization_id",
335
+ "type": "text",
336
+ "primaryKey": false,
337
+ "notNull": false,
338
+ "autoincrement": false
339
+ },
340
+ "feature": {
341
+ "name": "feature",
342
+ "type": "text",
343
+ "primaryKey": false,
344
+ "notNull": true,
345
+ "autoincrement": false
346
+ },
347
+ "provider": {
348
+ "name": "provider",
349
+ "type": "text",
350
+ "primaryKey": false,
351
+ "notNull": true,
352
+ "autoincrement": false
353
+ },
354
+ "model": {
355
+ "name": "model",
356
+ "type": "text",
357
+ "primaryKey": false,
358
+ "notNull": true,
359
+ "autoincrement": false
360
+ },
361
+ "input_tokens": {
362
+ "name": "input_tokens",
363
+ "type": "integer",
364
+ "primaryKey": false,
365
+ "notNull": false,
366
+ "autoincrement": false
367
+ },
368
+ "output_tokens": {
369
+ "name": "output_tokens",
370
+ "type": "integer",
371
+ "primaryKey": false,
372
+ "notNull": false,
373
+ "autoincrement": false
374
+ },
375
+ "total_tokens": {
376
+ "name": "total_tokens",
377
+ "type": "integer",
378
+ "primaryKey": false,
379
+ "notNull": false,
380
+ "autoincrement": false
381
+ },
382
+ "cost": {
383
+ "name": "cost",
384
+ "type": "real",
385
+ "primaryKey": false,
386
+ "notNull": false,
387
+ "autoincrement": false
388
+ },
389
+ "trace_id": {
390
+ "name": "trace_id",
391
+ "type": "text",
392
+ "primaryKey": false,
393
+ "notNull": false,
394
+ "autoincrement": false
395
+ },
396
+ "created_at": {
397
+ "name": "created_at",
398
+ "type": "integer",
399
+ "primaryKey": false,
400
+ "notNull": true,
401
+ "autoincrement": false
402
+ },
403
+ "metadata": {
404
+ "name": "metadata",
405
+ "type": "text",
406
+ "primaryKey": false,
407
+ "notNull": false,
408
+ "autoincrement": false
409
+ }
410
+ },
411
+ "indexes": {},
412
+ "foreignKeys": {
413
+ "ai_usage_user_id_users_id_fk": {
414
+ "name": "ai_usage_user_id_users_id_fk",
415
+ "tableFrom": "ai_usage",
416
+ "tableTo": "users",
417
+ "columnsFrom": [
418
+ "user_id"
419
+ ],
420
+ "columnsTo": [
421
+ "id"
422
+ ],
423
+ "onDelete": "set null",
424
+ "onUpdate": "no action"
425
+ },
426
+ "ai_usage_member_id_members_id_fk": {
427
+ "name": "ai_usage_member_id_members_id_fk",
428
+ "tableFrom": "ai_usage",
429
+ "tableTo": "members",
430
+ "columnsFrom": [
431
+ "member_id"
432
+ ],
433
+ "columnsTo": [
434
+ "id"
435
+ ],
436
+ "onDelete": "set null",
437
+ "onUpdate": "no action"
438
+ },
439
+ "ai_usage_team_id_teams_id_fk": {
440
+ "name": "ai_usage_team_id_teams_id_fk",
441
+ "tableFrom": "ai_usage",
442
+ "tableTo": "teams",
443
+ "columnsFrom": [
444
+ "team_id"
445
+ ],
446
+ "columnsTo": [
447
+ "id"
448
+ ],
449
+ "onDelete": "set null",
450
+ "onUpdate": "no action"
451
+ },
452
+ "ai_usage_organization_id_organizations_id_fk": {
453
+ "name": "ai_usage_organization_id_organizations_id_fk",
454
+ "tableFrom": "ai_usage",
455
+ "tableTo": "organizations",
456
+ "columnsFrom": [
457
+ "organization_id"
458
+ ],
459
+ "columnsTo": [
460
+ "id"
461
+ ],
462
+ "onDelete": "set null",
463
+ "onUpdate": "no action"
464
+ }
465
+ },
466
+ "compositePrimaryKeys": {},
467
+ "uniqueConstraints": {},
468
+ "checkConstraints": {}
469
+ },
215
470
  "apikeys": {
216
471
  "name": "apikeys",
217
472
  "columns": {
@@ -383,6 +638,79 @@
383
638
  "uniqueConstraints": {},
384
639
  "checkConstraints": {}
385
640
  },
641
+ "chats": {
642
+ "name": "chats",
643
+ "columns": {
644
+ "id": {
645
+ "name": "id",
646
+ "type": "text",
647
+ "primaryKey": true,
648
+ "notNull": true,
649
+ "autoincrement": false
650
+ },
651
+ "user_id": {
652
+ "name": "user_id",
653
+ "type": "text",
654
+ "primaryKey": false,
655
+ "notNull": true,
656
+ "autoincrement": false
657
+ },
658
+ "title": {
659
+ "name": "title",
660
+ "type": "text",
661
+ "primaryKey": false,
662
+ "notNull": false,
663
+ "autoincrement": false
664
+ },
665
+ "type": {
666
+ "name": "type",
667
+ "type": "text",
668
+ "primaryKey": false,
669
+ "notNull": false,
670
+ "autoincrement": false
671
+ },
672
+ "conversation": {
673
+ "name": "conversation",
674
+ "type": "text",
675
+ "primaryKey": false,
676
+ "notNull": false,
677
+ "autoincrement": false
678
+ },
679
+ "created_at": {
680
+ "name": "created_at",
681
+ "type": "integer",
682
+ "primaryKey": false,
683
+ "notNull": false,
684
+ "autoincrement": false
685
+ },
686
+ "updated_at": {
687
+ "name": "updated_at",
688
+ "type": "integer",
689
+ "primaryKey": false,
690
+ "notNull": true,
691
+ "autoincrement": false
692
+ }
693
+ },
694
+ "indexes": {},
695
+ "foreignKeys": {
696
+ "chats_user_id_users_id_fk": {
697
+ "name": "chats_user_id_users_id_fk",
698
+ "tableFrom": "chats",
699
+ "tableTo": "users",
700
+ "columnsFrom": [
701
+ "user_id"
702
+ ],
703
+ "columnsTo": [
704
+ "id"
705
+ ],
706
+ "onDelete": "cascade",
707
+ "onUpdate": "no action"
708
+ }
709
+ },
710
+ "compositePrimaryKeys": {},
711
+ "uniqueConstraints": {},
712
+ "checkConstraints": {}
713
+ },
386
714
  "files": {
387
715
  "name": "files",
388
716
  "columns": {
@@ -612,6 +940,13 @@
612
940
  "notNull": false,
613
941
  "autoincrement": false
614
942
  },
943
+ "member_id": {
944
+ "name": "member_id",
945
+ "type": "text",
946
+ "primaryKey": false,
947
+ "notNull": false,
948
+ "autoincrement": false
949
+ },
615
950
  "email": {
616
951
  "name": "email",
617
952
  "type": "text",
@@ -683,6 +1018,19 @@
683
1018
  "onDelete": "no action",
684
1019
  "onUpdate": "no action"
685
1020
  },
1021
+ "invitations_member_id_members_id_fk": {
1022
+ "name": "invitations_member_id_members_id_fk",
1023
+ "tableFrom": "invitations",
1024
+ "tableTo": "members",
1025
+ "columnsFrom": [
1026
+ "member_id"
1027
+ ],
1028
+ "columnsTo": [
1029
+ "id"
1030
+ ],
1031
+ "onDelete": "no action",
1032
+ "onUpdate": "no action"
1033
+ },
686
1034
  "invitations_inviter_id_users_id_fk": {
687
1035
  "name": "invitations_inviter_id_users_id_fk",
688
1036
  "tableFrom": "invitations",
@@ -722,7 +1070,14 @@
722
1070
  "name": "user_id",
723
1071
  "type": "text",
724
1072
  "primaryKey": false,
725
- "notNull": true,
1073
+ "notNull": false,
1074
+ "autoincrement": false
1075
+ },
1076
+ "email": {
1077
+ "name": "email",
1078
+ "type": "text",
1079
+ "primaryKey": false,
1080
+ "notNull": false,
726
1081
  "autoincrement": false
727
1082
  },
728
1083
  "name": {
@@ -793,32 +1148,237 @@
793
1148
  "default": "'[]'"
794
1149
  }
795
1150
  },
796
- "indexes": {},
797
- "foreignKeys": {
798
- "members_organization_id_organizations_id_fk": {
799
- "name": "members_organization_id_organizations_id_fk",
800
- "tableFrom": "members",
801
- "tableTo": "organizations",
802
- "columnsFrom": [
803
- "organization_id"
804
- ],
805
- "columnsTo": [
806
- "id"
1151
+ "indexes": {
1152
+ "members_attached_user_organization_unique": {
1153
+ "name": "members_attached_user_organization_unique",
1154
+ "columns": [
1155
+ "user_id",
1156
+ "organization_id"
1157
+ ],
1158
+ "isUnique": true,
1159
+ "where": "\"members\".\"user_id\" is not null"
1160
+ },
1161
+ "members_live_pending_email_organization_unique": {
1162
+ "name": "members_live_pending_email_organization_unique",
1163
+ "columns": [
1164
+ "email",
1165
+ "organization_id"
1166
+ ],
1167
+ "isUnique": true,
1168
+ "where": "\"members\".\"user_id\" is null and \"members\".\"deleted_at\" is null"
1169
+ }
1170
+ },
1171
+ "foreignKeys": {
1172
+ "members_organization_id_organizations_id_fk": {
1173
+ "name": "members_organization_id_organizations_id_fk",
1174
+ "tableFrom": "members",
1175
+ "tableTo": "organizations",
1176
+ "columnsFrom": [
1177
+ "organization_id"
1178
+ ],
1179
+ "columnsTo": [
1180
+ "id"
1181
+ ],
1182
+ "onDelete": "no action",
1183
+ "onUpdate": "no action"
1184
+ },
1185
+ "members_user_id_users_id_fk": {
1186
+ "name": "members_user_id_users_id_fk",
1187
+ "tableFrom": "members",
1188
+ "tableTo": "users",
1189
+ "columnsFrom": [
1190
+ "user_id"
1191
+ ],
1192
+ "columnsTo": [
1193
+ "id"
1194
+ ],
1195
+ "onDelete": "no action",
1196
+ "onUpdate": "no action"
1197
+ }
1198
+ },
1199
+ "compositePrimaryKeys": {},
1200
+ "uniqueConstraints": {},
1201
+ "checkConstraints": {}
1202
+ },
1203
+ "notification_devices": {
1204
+ "name": "notification_devices",
1205
+ "columns": {
1206
+ "id": {
1207
+ "name": "id",
1208
+ "type": "text",
1209
+ "primaryKey": true,
1210
+ "notNull": true,
1211
+ "autoincrement": false
1212
+ },
1213
+ "user_id": {
1214
+ "name": "user_id",
1215
+ "type": "text",
1216
+ "primaryKey": false,
1217
+ "notNull": true,
1218
+ "autoincrement": false
1219
+ },
1220
+ "platform": {
1221
+ "name": "platform",
1222
+ "type": "text",
1223
+ "primaryKey": false,
1224
+ "notNull": true,
1225
+ "autoincrement": false
1226
+ },
1227
+ "endpoint": {
1228
+ "name": "endpoint",
1229
+ "type": "text",
1230
+ "primaryKey": false,
1231
+ "notNull": false,
1232
+ "autoincrement": false
1233
+ },
1234
+ "subscription": {
1235
+ "name": "subscription",
1236
+ "type": "text",
1237
+ "primaryKey": false,
1238
+ "notNull": false,
1239
+ "autoincrement": false
1240
+ },
1241
+ "token": {
1242
+ "name": "token",
1243
+ "type": "text",
1244
+ "primaryKey": false,
1245
+ "notNull": false,
1246
+ "autoincrement": false
1247
+ },
1248
+ "label": {
1249
+ "name": "label",
1250
+ "type": "text",
1251
+ "primaryKey": false,
1252
+ "notNull": false,
1253
+ "autoincrement": false
1254
+ },
1255
+ "enabled": {
1256
+ "name": "enabled",
1257
+ "type": "integer",
1258
+ "primaryKey": false,
1259
+ "notNull": true,
1260
+ "autoincrement": false,
1261
+ "default": true
1262
+ },
1263
+ "created_at": {
1264
+ "name": "created_at",
1265
+ "type": "integer",
1266
+ "primaryKey": false,
1267
+ "notNull": true,
1268
+ "autoincrement": false
1269
+ },
1270
+ "updated_at": {
1271
+ "name": "updated_at",
1272
+ "type": "integer",
1273
+ "primaryKey": false,
1274
+ "notNull": true,
1275
+ "autoincrement": false
1276
+ }
1277
+ },
1278
+ "indexes": {
1279
+ "notification_devices_endpoint_unique": {
1280
+ "name": "notification_devices_endpoint_unique",
1281
+ "columns": [
1282
+ "endpoint"
1283
+ ],
1284
+ "isUnique": true
1285
+ },
1286
+ "notification_devices_token_unique": {
1287
+ "name": "notification_devices_token_unique",
1288
+ "columns": [
1289
+ "token"
1290
+ ],
1291
+ "isUnique": true
1292
+ }
1293
+ },
1294
+ "foreignKeys": {
1295
+ "notification_devices_user_id_users_id_fk": {
1296
+ "name": "notification_devices_user_id_users_id_fk",
1297
+ "tableFrom": "notification_devices",
1298
+ "tableTo": "users",
1299
+ "columnsFrom": [
1300
+ "user_id"
1301
+ ],
1302
+ "columnsTo": [
1303
+ "id"
1304
+ ],
1305
+ "onDelete": "cascade",
1306
+ "onUpdate": "no action"
1307
+ }
1308
+ },
1309
+ "compositePrimaryKeys": {},
1310
+ "uniqueConstraints": {},
1311
+ "checkConstraints": {}
1312
+ },
1313
+ "notification_preferences": {
1314
+ "name": "notification_preferences",
1315
+ "columns": {
1316
+ "id": {
1317
+ "name": "id",
1318
+ "type": "text",
1319
+ "primaryKey": true,
1320
+ "notNull": true,
1321
+ "autoincrement": false
1322
+ },
1323
+ "member_id": {
1324
+ "name": "member_id",
1325
+ "type": "text",
1326
+ "primaryKey": false,
1327
+ "notNull": true,
1328
+ "autoincrement": false
1329
+ },
1330
+ "kind": {
1331
+ "name": "kind",
1332
+ "type": "text",
1333
+ "primaryKey": false,
1334
+ "notNull": true,
1335
+ "autoincrement": false
1336
+ },
1337
+ "channel": {
1338
+ "name": "channel",
1339
+ "type": "text",
1340
+ "primaryKey": false,
1341
+ "notNull": true,
1342
+ "autoincrement": false
1343
+ },
1344
+ "created_at": {
1345
+ "name": "created_at",
1346
+ "type": "integer",
1347
+ "primaryKey": false,
1348
+ "notNull": true,
1349
+ "autoincrement": false
1350
+ },
1351
+ "updated_at": {
1352
+ "name": "updated_at",
1353
+ "type": "integer",
1354
+ "primaryKey": false,
1355
+ "notNull": true,
1356
+ "autoincrement": false
1357
+ }
1358
+ },
1359
+ "indexes": {
1360
+ "notification_preferences_member_kind_channel_unique": {
1361
+ "name": "notification_preferences_member_kind_channel_unique",
1362
+ "columns": [
1363
+ "member_id",
1364
+ "kind",
1365
+ "channel"
807
1366
  ],
808
- "onDelete": "no action",
809
- "onUpdate": "no action"
810
- },
811
- "members_user_id_users_id_fk": {
812
- "name": "members_user_id_users_id_fk",
813
- "tableFrom": "members",
814
- "tableTo": "users",
1367
+ "isUnique": true
1368
+ }
1369
+ },
1370
+ "foreignKeys": {
1371
+ "notification_preferences_member_id_members_id_fk": {
1372
+ "name": "notification_preferences_member_id_members_id_fk",
1373
+ "tableFrom": "notification_preferences",
1374
+ "tableTo": "members",
815
1375
  "columnsFrom": [
816
- "user_id"
1376
+ "member_id"
817
1377
  ],
818
1378
  "columnsTo": [
819
1379
  "id"
820
1380
  ],
821
- "onDelete": "no action",
1381
+ "onDelete": "cascade",
822
1382
  "onUpdate": "no action"
823
1383
  }
824
1384
  },
@@ -826,8 +1386,8 @@
826
1386
  "uniqueConstraints": {},
827
1387
  "checkConstraints": {}
828
1388
  },
829
- "notification_devices": {
830
- "name": "notification_devices",
1389
+ "notification_send_logs": {
1390
+ "name": "notification_send_logs",
831
1391
  "columns": {
832
1392
  "id": {
833
1393
  "name": "id",
@@ -836,6 +1396,20 @@
836
1396
  "notNull": true,
837
1397
  "autoincrement": false
838
1398
  },
1399
+ "batch_id": {
1400
+ "name": "batch_id",
1401
+ "type": "text",
1402
+ "primaryKey": false,
1403
+ "notNull": true,
1404
+ "autoincrement": false
1405
+ },
1406
+ "notification_id": {
1407
+ "name": "notification_id",
1408
+ "type": "text",
1409
+ "primaryKey": false,
1410
+ "notNull": true,
1411
+ "autoincrement": false
1412
+ },
839
1413
  "user_id": {
840
1414
  "name": "user_id",
841
1415
  "type": "text",
@@ -843,48 +1417,68 @@
843
1417
  "notNull": true,
844
1418
  "autoincrement": false
845
1419
  },
846
- "platform": {
847
- "name": "platform",
1420
+ "device_id": {
1421
+ "name": "device_id",
1422
+ "type": "text",
1423
+ "primaryKey": false,
1424
+ "notNull": false,
1425
+ "autoincrement": false
1426
+ },
1427
+ "channel": {
1428
+ "name": "channel",
848
1429
  "type": "text",
849
1430
  "primaryKey": false,
850
1431
  "notNull": true,
851
1432
  "autoincrement": false
852
1433
  },
853
- "endpoint": {
854
- "name": "endpoint",
1434
+ "provider": {
1435
+ "name": "provider",
855
1436
  "type": "text",
856
1437
  "primaryKey": false,
857
1438
  "notNull": false,
858
1439
  "autoincrement": false
859
1440
  },
860
- "subscription": {
861
- "name": "subscription",
1441
+ "title": {
1442
+ "name": "title",
862
1443
  "type": "text",
863
1444
  "primaryKey": false,
864
- "notNull": false,
1445
+ "notNull": true,
865
1446
  "autoincrement": false
866
1447
  },
867
- "token": {
868
- "name": "token",
1448
+ "body": {
1449
+ "name": "body",
869
1450
  "type": "text",
870
1451
  "primaryKey": false,
871
- "notNull": false,
1452
+ "notNull": true,
872
1453
  "autoincrement": false
873
1454
  },
874
- "label": {
875
- "name": "label",
1455
+ "data": {
1456
+ "name": "data",
876
1457
  "type": "text",
877
1458
  "primaryKey": false,
878
1459
  "notNull": false,
879
1460
  "autoincrement": false
880
1461
  },
881
- "enabled": {
882
- "name": "enabled",
883
- "type": "integer",
1462
+ "status": {
1463
+ "name": "status",
1464
+ "type": "text",
884
1465
  "primaryKey": false,
885
1466
  "notNull": true,
886
- "autoincrement": false,
887
- "default": true
1467
+ "autoincrement": false
1468
+ },
1469
+ "error": {
1470
+ "name": "error",
1471
+ "type": "text",
1472
+ "primaryKey": false,
1473
+ "notNull": false,
1474
+ "autoincrement": false
1475
+ },
1476
+ "job_id": {
1477
+ "name": "job_id",
1478
+ "type": "text",
1479
+ "primaryKey": false,
1480
+ "notNull": false,
1481
+ "autoincrement": false
888
1482
  },
889
1483
  "created_at": {
890
1484
  "name": "created_at",
@@ -901,26 +1495,24 @@
901
1495
  "autoincrement": false
902
1496
  }
903
1497
  },
904
- "indexes": {
905
- "notification_devices_endpoint_unique": {
906
- "name": "notification_devices_endpoint_unique",
907
- "columns": [
908
- "endpoint"
1498
+ "indexes": {},
1499
+ "foreignKeys": {
1500
+ "notification_send_logs_notification_id_notifications_id_fk": {
1501
+ "name": "notification_send_logs_notification_id_notifications_id_fk",
1502
+ "tableFrom": "notification_send_logs",
1503
+ "tableTo": "notifications",
1504
+ "columnsFrom": [
1505
+ "notification_id"
909
1506
  ],
910
- "isUnique": true
911
- },
912
- "notification_devices_token_unique": {
913
- "name": "notification_devices_token_unique",
914
- "columns": [
915
- "token"
1507
+ "columnsTo": [
1508
+ "id"
916
1509
  ],
917
- "isUnique": true
918
- }
919
- },
920
- "foreignKeys": {
921
- "notification_devices_user_id_users_id_fk": {
922
- "name": "notification_devices_user_id_users_id_fk",
923
- "tableFrom": "notification_devices",
1510
+ "onDelete": "cascade",
1511
+ "onUpdate": "no action"
1512
+ },
1513
+ "notification_send_logs_user_id_users_id_fk": {
1514
+ "name": "notification_send_logs_user_id_users_id_fk",
1515
+ "tableFrom": "notification_send_logs",
924
1516
  "tableTo": "users",
925
1517
  "columnsFrom": [
926
1518
  "user_id"
@@ -930,14 +1522,27 @@
930
1522
  ],
931
1523
  "onDelete": "cascade",
932
1524
  "onUpdate": "no action"
1525
+ },
1526
+ "notification_send_logs_device_id_notification_devices_id_fk": {
1527
+ "name": "notification_send_logs_device_id_notification_devices_id_fk",
1528
+ "tableFrom": "notification_send_logs",
1529
+ "tableTo": "notification_devices",
1530
+ "columnsFrom": [
1531
+ "device_id"
1532
+ ],
1533
+ "columnsTo": [
1534
+ "id"
1535
+ ],
1536
+ "onDelete": "set null",
1537
+ "onUpdate": "no action"
933
1538
  }
934
1539
  },
935
1540
  "compositePrimaryKeys": {},
936
1541
  "uniqueConstraints": {},
937
1542
  "checkConstraints": {}
938
1543
  },
939
- "notification_send_logs": {
940
- "name": "notification_send_logs",
1544
+ "notifications": {
1545
+ "name": "notifications",
941
1546
  "columns": {
942
1547
  "id": {
943
1548
  "name": "id",
@@ -946,8 +1551,8 @@
946
1551
  "notNull": true,
947
1552
  "autoincrement": false
948
1553
  },
949
- "batch_id": {
950
- "name": "batch_id",
1554
+ "member_id": {
1555
+ "name": "member_id",
951
1556
  "type": "text",
952
1557
  "primaryKey": false,
953
1558
  "notNull": true,
@@ -960,15 +1565,8 @@
960
1565
  "notNull": true,
961
1566
  "autoincrement": false
962
1567
  },
963
- "device_id": {
964
- "name": "device_id",
965
- "type": "text",
966
- "primaryKey": false,
967
- "notNull": true,
968
- "autoincrement": false
969
- },
970
- "provider": {
971
- "name": "provider",
1568
+ "kind": {
1569
+ "name": "kind",
972
1570
  "type": "text",
973
1571
  "primaryKey": false,
974
1572
  "notNull": true,
@@ -995,23 +1593,46 @@
995
1593
  "notNull": false,
996
1594
  "autoincrement": false
997
1595
  },
998
- "status": {
999
- "name": "status",
1596
+ "visible_in_inbox": {
1597
+ "name": "visible_in_inbox",
1598
+ "type": "integer",
1599
+ "primaryKey": false,
1600
+ "notNull": true,
1601
+ "autoincrement": false,
1602
+ "default": false
1603
+ },
1604
+ "armed_channels": {
1605
+ "name": "armed_channels",
1000
1606
  "type": "text",
1001
1607
  "primaryKey": false,
1002
1608
  "notNull": true,
1609
+ "autoincrement": false,
1610
+ "default": "'[]'"
1611
+ },
1612
+ "web_pushed_at": {
1613
+ "name": "web_pushed_at",
1614
+ "type": "integer",
1615
+ "primaryKey": false,
1616
+ "notNull": false,
1003
1617
  "autoincrement": false
1004
1618
  },
1005
- "error": {
1006
- "name": "error",
1007
- "type": "text",
1619
+ "mobile_pushed_at": {
1620
+ "name": "mobile_pushed_at",
1621
+ "type": "integer",
1008
1622
  "primaryKey": false,
1009
1623
  "notNull": false,
1010
1624
  "autoincrement": false
1011
1625
  },
1012
- "job_id": {
1013
- "name": "job_id",
1014
- "type": "text",
1626
+ "emailed_at": {
1627
+ "name": "emailed_at",
1628
+ "type": "integer",
1629
+ "primaryKey": false,
1630
+ "notNull": false,
1631
+ "autoincrement": false
1632
+ },
1633
+ "read_at": {
1634
+ "name": "read_at",
1635
+ "type": "integer",
1015
1636
  "primaryKey": false,
1016
1637
  "notNull": false,
1017
1638
  "autoincrement": false
@@ -1033,12 +1654,12 @@
1033
1654
  },
1034
1655
  "indexes": {},
1035
1656
  "foreignKeys": {
1036
- "notification_send_logs_user_id_users_id_fk": {
1037
- "name": "notification_send_logs_user_id_users_id_fk",
1038
- "tableFrom": "notification_send_logs",
1039
- "tableTo": "users",
1657
+ "notifications_member_id_members_id_fk": {
1658
+ "name": "notifications_member_id_members_id_fk",
1659
+ "tableFrom": "notifications",
1660
+ "tableTo": "members",
1040
1661
  "columnsFrom": [
1041
- "user_id"
1662
+ "member_id"
1042
1663
  ],
1043
1664
  "columnsTo": [
1044
1665
  "id"
@@ -1046,12 +1667,12 @@
1046
1667
  "onDelete": "cascade",
1047
1668
  "onUpdate": "no action"
1048
1669
  },
1049
- "notification_send_logs_device_id_notification_devices_id_fk": {
1050
- "name": "notification_send_logs_device_id_notification_devices_id_fk",
1051
- "tableFrom": "notification_send_logs",
1052
- "tableTo": "notification_devices",
1670
+ "notifications_user_id_users_id_fk": {
1671
+ "name": "notifications_user_id_users_id_fk",
1672
+ "tableFrom": "notifications",
1673
+ "tableTo": "users",
1053
1674
  "columnsFrom": [
1054
- "device_id"
1675
+ "user_id"
1055
1676
  ],
1056
1677
  "columnsTo": [
1057
1678
  "id"
@@ -1708,27 +2329,6 @@
1708
2329
  "notNull": false,
1709
2330
  "autoincrement": false
1710
2331
  },
1711
- "payment_customer_id": {
1712
- "name": "payment_customer_id",
1713
- "type": "text",
1714
- "primaryKey": false,
1715
- "notNull": false,
1716
- "autoincrement": false
1717
- },
1718
- "payment_plan_tier": {
1719
- "name": "payment_plan_tier",
1720
- "type": "text",
1721
- "primaryKey": false,
1722
- "notNull": false,
1723
- "autoincrement": false
1724
- },
1725
- "payment_plan_expires_at": {
1726
- "name": "payment_plan_expires_at",
1727
- "type": "integer",
1728
- "primaryKey": false,
1729
- "notNull": false,
1730
- "autoincrement": false
1731
- },
1732
2332
  "preferences": {
1733
2333
  "name": "preferences",
1734
2334
  "type": "text",
@@ -1782,13 +2382,6 @@
1782
2382
  "stripe_customer_id"
1783
2383
  ],
1784
2384
  "isUnique": true
1785
- },
1786
- "users_payment_customer_id_unique": {
1787
- "name": "users_payment_customer_id_unique",
1788
- "columns": [
1789
- "payment_customer_id"
1790
- ],
1791
- "isUnique": true
1792
2385
  }
1793
2386
  },
1794
2387
  "foreignKeys": {},
@@ -1894,14 +2487,6 @@
1894
2487
  "autoincrement": false,
1895
2488
  "default": "'WAITLIST'"
1896
2489
  },
1897
- "type": {
1898
- "name": "type",
1899
- "type": "text",
1900
- "primaryKey": false,
1901
- "notNull": true,
1902
- "autoincrement": false,
1903
- "default": "'WAITLIST'"
1904
- },
1905
2490
  "code": {
1906
2491
  "name": "code",
1907
2492
  "type": "text",
@@ -1922,27 +2507,6 @@
1922
2507
  "primaryKey": false,
1923
2508
  "notNull": false,
1924
2509
  "autoincrement": false
1925
- },
1926
- "claim_user_id": {
1927
- "name": "claim_user_id",
1928
- "type": "text",
1929
- "primaryKey": false,
1930
- "notNull": false,
1931
- "autoincrement": false
1932
- },
1933
- "claimed_at": {
1934
- "name": "claimed_at",
1935
- "type": "integer",
1936
- "primaryKey": false,
1937
- "notNull": false,
1938
- "autoincrement": false
1939
- },
1940
- "claimed_email": {
1941
- "name": "claimed_email",
1942
- "type": "text",
1943
- "primaryKey": false,
1944
- "notNull": false,
1945
- "autoincrement": false
1946
2510
  }
1947
2511
  },
1948
2512
  "indexes": {},
@@ -1959,19 +2523,6 @@
1959
2523
  ],
1960
2524
  "onDelete": "no action",
1961
2525
  "onUpdate": "no action"
1962
- },
1963
- "waitlist_claim_user_id_users_id_fk": {
1964
- "name": "waitlist_claim_user_id_users_id_fk",
1965
- "tableFrom": "waitlist",
1966
- "tableTo": "users",
1967
- "columnsFrom": [
1968
- "claim_user_id"
1969
- ],
1970
- "columnsTo": [
1971
- "id"
1972
- ],
1973
- "onDelete": "no action",
1974
- "onUpdate": "no action"
1975
2526
  }
1976
2527
  },
1977
2528
  "compositePrimaryKeys": {},