@headless-lms/adapter-db 0.3.0 → 0.5.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 (123) hide show
  1. package/dist/client.d.ts +8 -2
  2. package/dist/client.js +10 -2
  3. package/dist/client.js.map +1 -1
  4. package/dist/index.d.ts +10 -4
  5. package/dist/index.js +9 -3
  6. package/dist/repositories/admin.d.ts +12 -4
  7. package/dist/repositories/admin.js +165 -23
  8. package/dist/repositories/admin.js.map +1 -1
  9. package/dist/repositories/assets.d.ts +2 -2
  10. package/dist/repositories/assets.js +11 -5
  11. package/dist/repositories/assets.js.map +1 -1
  12. package/dist/repositories/automations.d.ts +0 -1
  13. package/dist/repositories/automations.js +2 -18
  14. package/dist/repositories/automations.js.map +1 -1
  15. package/dist/repositories/chats.d.ts +14 -5
  16. package/dist/repositories/chats.js +194 -85
  17. package/dist/repositories/chats.js.map +1 -1
  18. package/dist/repositories/content.d.ts +24 -7
  19. package/dist/repositories/content.js +229 -48
  20. package/dist/repositories/content.js.map +1 -1
  21. package/dist/repositories/credentials.js +1 -1
  22. package/dist/repositories/devices.d.ts +17 -0
  23. package/dist/repositories/devices.js +75 -0
  24. package/dist/repositories/devices.js.map +1 -0
  25. package/dist/repositories/digest-runs.d.ts +14 -0
  26. package/dist/repositories/digest-runs.js +39 -0
  27. package/dist/repositories/digest-runs.js.map +1 -0
  28. package/dist/repositories/discussion.d.ts +7 -2
  29. package/dist/repositories/discussion.js +18 -7
  30. package/dist/repositories/discussion.js.map +1 -1
  31. package/dist/repositories/entitlements.d.ts +11 -9
  32. package/dist/repositories/entitlements.js +56 -59
  33. package/dist/repositories/entitlements.js.map +1 -1
  34. package/dist/repositories/event-reports.d.ts +16 -0
  35. package/dist/repositories/event-reports.js +199 -0
  36. package/dist/repositories/event-reports.js.map +1 -0
  37. package/dist/repositories/grant-covers.d.ts +4 -3
  38. package/dist/repositories/grant-covers.js +7 -4
  39. package/dist/repositories/grant-covers.js.map +1 -1
  40. package/dist/repositories/identity.js +1 -1
  41. package/dist/repositories/inserted-row.d.ts +5 -0
  42. package/dist/repositories/inserted-row.js +7 -0
  43. package/dist/repositories/inserted-row.js.map +1 -0
  44. package/dist/repositories/integrations.js +1 -1
  45. package/dist/repositories/member.d.ts +12 -4
  46. package/dist/repositories/member.js +19 -7
  47. package/dist/repositories/member.js.map +1 -1
  48. package/dist/repositories/members.d.ts +2 -5
  49. package/dist/repositories/members.js +39 -94
  50. package/dist/repositories/members.js.map +1 -1
  51. package/dist/repositories/mentions.d.ts +17 -0
  52. package/dist/repositories/mentions.js +55 -0
  53. package/dist/repositories/mentions.js.map +1 -0
  54. package/dist/repositories/notification-settings.d.ts +19 -0
  55. package/dist/repositories/notification-settings.js +67 -0
  56. package/dist/repositories/notification-settings.js.map +1 -0
  57. package/dist/repositories/notifications.d.ts +23 -16
  58. package/dist/repositories/notifications.js +152 -44
  59. package/dist/repositories/notifications.js.map +1 -1
  60. package/dist/repositories/org-user-profile.d.ts +0 -17
  61. package/dist/repositories/org-user-profile.js +0 -1
  62. package/dist/repositories/org-user-profile.js.map +1 -1
  63. package/dist/repositories/organizations.d.ts +4 -4
  64. package/dist/repositories/organizations.js +25 -47
  65. package/dist/repositories/organizations.js.map +1 -1
  66. package/dist/repositories/outbox.d.ts +5 -1
  67. package/dist/repositories/outbox.js +12 -3
  68. package/dist/repositories/outbox.js.map +1 -1
  69. package/dist/repositories/posts.d.ts +4 -8
  70. package/dist/repositories/posts.js +26 -29
  71. package/dist/repositories/posts.js.map +1 -1
  72. package/dist/repositories/progress.js +1 -1
  73. package/dist/repositories/roles.d.ts +35 -0
  74. package/dist/repositories/roles.js +244 -0
  75. package/dist/repositories/roles.js.map +1 -0
  76. package/dist/repositories/settings.js +1 -1
  77. package/dist/repositories/subscriptions.d.ts +18 -0
  78. package/dist/repositories/subscriptions.js +72 -0
  79. package/dist/repositories/subscriptions.js.map +1 -0
  80. package/dist/schema/assets.d.ts +17 -0
  81. package/dist/schema/assets.js +1 -0
  82. package/dist/schema/assets.js.map +1 -1
  83. package/dist/schema/automations.d.ts +524 -19
  84. package/dist/schema/automations.js +73 -7
  85. package/dist/schema/automations.js.map +1 -1
  86. package/dist/schema/content.d.ts +437 -3
  87. package/dist/schema/content.js +70 -3
  88. package/dist/schema/content.js.map +1 -1
  89. package/dist/schema/discussion.d.ts +295 -128
  90. package/dist/schema/discussion.js +63 -26
  91. package/dist/schema/discussion.js.map +1 -1
  92. package/dist/schema/identity.d.ts +109 -109
  93. package/dist/schema/identity.js +28 -70
  94. package/dist/schema/identity.js.map +1 -1
  95. package/dist/schema/index.d.ts +7 -6
  96. package/dist/schema/index.js +16 -7
  97. package/dist/schema/index.js.map +1 -1
  98. package/dist/schema/organizations.d.ts +5 -22
  99. package/dist/schema/organizations.js +1 -13
  100. package/dist/schema/organizations.js.map +1 -1
  101. package/dist/schema/roles.d.ts +369 -0
  102. package/dist/schema/roles.js +71 -0
  103. package/dist/schema/roles.js.map +1 -0
  104. package/drizzle/0011_digest_runs.sql +8 -0
  105. package/drizzle/0012_subscriptions.sql +16 -0
  106. package/drizzle/0013_mentions.sql +10 -0
  107. package/drizzle/0014_notification_settings_devices.sql +36 -0
  108. package/drizzle/0015_automations_drop_source.sql +2 -0
  109. package/drizzle/0016_notifications_automations.sql +48 -0
  110. package/drizzle/0017_configurable_roles.sql +38 -0
  111. package/drizzle/0018_messages_client_id.sql +2 -0
  112. package/drizzle/0019_events.sql +44 -0
  113. package/drizzle/meta/0011_snapshot.json +8868 -0
  114. package/drizzle/meta/0012_snapshot.json +8873 -0
  115. package/drizzle/meta/0013_snapshot.json +8943 -0
  116. package/drizzle/meta/0014_snapshot.json +9305 -0
  117. package/drizzle/meta/0015_snapshot.json +9270 -0
  118. package/drizzle/meta/0016_snapshot.json +9230 -0
  119. package/drizzle/meta/0017_snapshot.json +9518 -0
  120. package/drizzle/meta/0018_snapshot.json +9557 -0
  121. package/drizzle/meta/0019_snapshot.json +9919 -0
  122. package/drizzle/meta/_journal.json +63 -0
  123. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"discussion.js","names":[],"sources":["../../src/schema/discussion.ts"],"sourcesContent":["// discussion tables — comments on an activity, their reactions and reports.\n// Configuration is not here: the course's comment settings ride on the course's\n// `content` settings row, and an activity's override rides on the activity's\n// own settings blob.\n//\n// The author is always an org user, so one column covers both\n// learners and staff. Staff-ness is NOT stored — it is read from the author's\n// current role. A removed comment keeps its row so replies below it survive;\n// only the body stops being served.\n//\n// No course_id: which course an activity sits in is content's fact and changes\n// when a course is restructured. The staff comment list joins to modules to\n// scope by course.\nimport { desc, sql } from \"drizzle-orm\";\nimport {\n pgTable,\n text,\n integer,\n boolean,\n jsonb,\n timestamp,\n primaryKey,\n foreignKey,\n unique,\n index,\n check,\n} from \"drizzle-orm/pg-core\";\nimport type {\n BlockedUser,\n Chat,\n ChatUser,\n Comment,\n CommentReaction,\n CommentReport,\n Message,\n MessageAttachment,\n MessageFlag,\n MessageReaction,\n Post,\n PostBookmark,\n PostFlag,\n PostFollow,\n PostReaction,\n} from \"@headless-lms/core/schemas\";\nimport { genId } from \"@headless-lms/core/shared/id\";\nimport { organizations, orgUsers } from \"./organizations.js\";\nimport { activities, communities, spaceTopics, spaces } from \"./content.js\";\nimport { assets } from \"./assets.js\";\nimport type { Expect, NoDrift } from \"./drift.js\";\n\nexport const posts = pgTable(\n \"posts\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"post\")),\n communityId: text(\"community_id\").notNull(),\n spaceId: text(\"space_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n topicId: text(\"topic_id\"),\n title: text(\"title\").notNull(),\n body: text(\"body\").notNull(),\n extra: jsonb(\"extra\").$type<Post[\"extra\"]>().notNull().default({}),\n coverAssetId: text(\"cover_asset_id\"),\n status: text(\"status\", {\n enum: [\"draft\", \"scheduled\", \"pending\", \"published\", \"removed\"],\n })\n .notNull()\n .default(\"draft\"),\n scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }),\n removedBy: text(\"removed_by\"),\n pinned: boolean(\"pinned\").notNull().default(false),\n commentsClosed: boolean(\"comments_closed\"),\n reactionsEnabled: boolean(\"reactions_enabled\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n spaceFk: foreignKey({\n columns: [t.orgId, t.spaceId, t.communityId],\n foreignColumns: [spaces.orgId, spaces.id, spaces.communityId],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n topicFk: foreignKey({\n columns: [t.orgId, t.spaceId, t.topicId],\n foreignColumns: [spaceTopics.orgId, spaceTopics.spaceId, spaceTopics.id],\n }),\n coverAssetFk: foreignKey({\n columns: [t.orgId, t.coverAssetId],\n foreignColumns: [assets.orgId, assets.id],\n }),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n removedByFk: foreignKey({\n columns: [t.orgId, t.removedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n removedCk: check(\n \"posts_removed_by_check\",\n sql`${t.removedBy} is null or ${t.status} = 'removed'`,\n ),\n scheduledCk: check(\n \"posts_scheduled_check\",\n sql`${t.status} <> 'scheduled' or ${t.scheduledAt} is not null`,\n ),\n feedIdx: index(\"posts_feed_idx\").on(\n t.orgId,\n t.spaceId,\n t.status,\n desc(t.pinned),\n desc(t.publishedAt),\n ),\n dueIdx: index(\"posts_due_idx\").on(t.orgId, t.status, t.scheduledAt),\n authorIdx: index(\"posts_author_idx\").on(t.orgId, t.orgUserId, t.createdAt),\n coverAssetIdx: index(\"posts_cover_asset_idx\").on(t.orgId, t.coverAssetId),\n }),\n);\n\nexport const postReactions = pgTable(\n \"post_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.postId, t.orgUserId] }),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const postFollows = pgTable(\n \"post_follows\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.postId, t.orgUserId] }),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const postBookmarks = pgTable(\n \"post_bookmarks\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.postId, t.orgUserId] }),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n userIdx: index(\"post_bookmarks_user_idx\").on(t.orgId, t.orgUserId, t.createdAt),\n }),\n);\n\nexport const postFlags = pgTable(\n \"post_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"postFlag\")),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"removed\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.postId, t.orgUserId),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"post_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedAt} is null) = (${t.resolvedBy} is null)`,\n ),\n openIdx: index(\"post_flags_open_idx\").on(t.orgId, t.postId, t.resolvedAt),\n }),\n);\n\nexport const comments = pgTable(\n \"comments\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"comment\")),\n activityId: text(\"activity_id\"),\n postId: text(\"post_id\"),\n communityId: text(\"community_id\"),\n parentId: text(\"parent_id\"),\n orgUserId: text(\"org_user_id\").notNull(),\n body: text(\"body\").notNull(),\n status: text(\"status\", { enum: [\"pending\", \"published\", \"removed\"] })\n .notNull()\n .default(\"published\"),\n removedBy: text(\"removed_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n activityFk: foreignKey({\n columns: [t.orgId, t.activityId],\n foreignColumns: [activities.orgId, activities.id],\n }).onDelete(\"cascade\"),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n removedByFk: foreignKey({\n columns: [t.orgId, t.removedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n parentFk: foreignKey({\n columns: [t.orgId, t.parentId],\n foreignColumns: [t.orgId, t.id],\n }),\n removedCk: check(\n \"comments_removed_by_check\",\n sql`${t.removedBy} is null or ${t.status} = 'removed'`,\n ),\n targetCk: check(\"comments_target_check\", sql`num_nonnulls(${t.activityId}, ${t.postId}) = 1`),\n communityCk: check(\n \"comments_community_check\",\n sql`${t.postId} is null or ${t.communityId} is not null`,\n ),\n activityIdx: index(\"comments_activity_idx\").on(t.orgId, t.activityId, t.status, t.createdAt),\n postIdx: index(\"comments_post_idx\").on(t.orgId, t.postId, t.status, t.createdAt),\n queueIdx: index(\"comments_queue_idx\").on(t.orgId, t.status, t.createdAt),\n communityIdx: index(\"comments_community_idx\").on(t.orgId, t.communityId),\n parentIdx: index(\"comments_parent_idx\").on(t.orgId, t.parentId, t.createdAt),\n }),\n);\n\nexport const commentReactions = pgTable(\n \"comment_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n commentId: text(\"comment_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.commentId, t.orgUserId] }),\n commentFk: foreignKey({\n columns: [t.orgId, t.commentId],\n foreignColumns: [comments.orgId, comments.id],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const commentFlags = pgTable(\n \"comment_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"commentReport\")),\n commentId: text(\"comment_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"removed\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.commentId, t.orgUserId),\n commentFk: foreignKey({\n columns: [t.orgId, t.commentId],\n foreignColumns: [comments.orgId, comments.id],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"comment_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedBy} is null or ${t.resolvedAt} is not null)`,\n ),\n openIdx: index(\"comment_flags_open_idx\").on(t.orgId, t.commentId, t.resolvedAt),\n }),\n);\n\nexport const chats = pgTable(\n \"chats\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"chat\")),\n communityId: text(\"community_id\").notNull(),\n kind: text(\"kind\", { enum: [\"direct\", \"group\"] }).notNull(),\n status: text(\"status\", { enum: [\"pending\", \"open\", \"closed\"] })\n .notNull()\n .default(\"open\"),\n createdBy: text(\"created_by\"),\n lockedAt: timestamp(\"locked_at\", { withTimezone: true }),\n lockedBy: text(\"locked_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n communityUq: unique().on(t.orgId, t.id, t.communityId),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n createdByFk: foreignKey({\n columns: [t.orgId, t.createdBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n lockedByFk: foreignKey({\n columns: [t.orgId, t.lockedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n lockedCk: check(\"chats_locked_check\", sql`${t.lockedBy} is null or ${t.lockedAt} is not null`),\n }),\n);\n\nexport const chatUsers = pgTable(\n \"chat_users\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n chatId: text(\"chat_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n joinedAt: timestamp(\"joined_at\", { withTimezone: true }).notNull().defaultNow(),\n leftAt: timestamp(\"left_at\", { withTimezone: true }),\n lastReadMessageId: text(\"last_read_message_id\"),\n muted: boolean(\"muted\").notNull().default(false),\n mutedUntil: timestamp(\"muted_until\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.chatId, t.orgUserId] }),\n chatFk: foreignKey({\n columns: [t.orgId, t.chatId, t.communityId],\n foreignColumns: [chats.orgId, chats.id, chats.communityId],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n userIdx: index(\"chat_users_user_idx\").on(t.orgId, t.communityId, t.orgUserId),\n }),\n);\n\nexport const messages = pgTable(\n \"messages\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"message\")),\n communityId: text(\"community_id\").notNull(),\n chatId: text(\"chat_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n body: text(\"body\").notNull(),\n replyToId: text(\"reply_to_id\"),\n editedAt: timestamp(\"edited_at\", { withTimezone: true }),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n communityUq: unique().on(t.orgId, t.id, t.communityId),\n chatFk: foreignKey({\n columns: [t.orgId, t.chatId, t.communityId],\n foreignColumns: [chats.orgId, chats.id, chats.communityId],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n replyFk: foreignKey({\n columns: [t.orgId, t.replyToId],\n foreignColumns: [t.orgId, t.id],\n }),\n chatIdx: index(\"messages_chat_idx\").on(t.orgId, t.chatId, t.createdAt),\n replyIdx: index(\"messages_reply_idx\").on(t.orgId, t.replyToId),\n }),\n);\n\nexport const messageAttachments = pgTable(\n \"message_attachments\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n assetId: text(\"asset_id\").notNull(),\n seq: integer(\"seq\").notNull().default(0),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.messageId, t.assetId] }),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n assetFk: foreignKey({\n columns: [t.orgId, t.assetId],\n foreignColumns: [assets.orgId, assets.id],\n }),\n assetIdx: index(\"message_attachments_asset_idx\").on(t.orgId, t.assetId),\n }),\n);\n\nexport const messageReactions = pgTable(\n \"message_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.messageId, t.orgUserId] }),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const messageFlags = pgTable(\n \"message_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"messageFlag\")),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"deleted\", \"locked\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.messageId, t.orgUserId),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"message_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedAt} is null) = (${t.resolvedBy} is null)`,\n ),\n openIdx: index(\"message_flags_open_idx\").on(t.orgId, t.communityId, t.messageId, t.resolvedAt),\n }),\n);\n\nexport const blockedUsers = pgTable(\n \"blocked_users\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n blockerOrgUserId: text(\"blocker_org_user_id\").notNull(),\n blockedOrgUserId: text(\"blocked_org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({\n columns: [t.orgId, t.communityId, t.blockerOrgUserId, t.blockedOrgUserId],\n }),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n blockerFk: foreignKey({\n columns: [t.orgId, t.blockerOrgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n blockedFk: foreignKey({\n columns: [t.orgId, t.blockedOrgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n blockedIdx: index(\"blocked_users_blocked_idx\").on(t.orgId, t.communityId, t.blockedOrgUserId),\n }),\n);\n\ntype _PostsDrift = Expect<NoDrift<typeof posts.$inferSelect, Post>>;\ntype _PostReactionsDrift = Expect<NoDrift<typeof postReactions.$inferSelect, PostReaction>>;\ntype _PostFollowsDrift = Expect<NoDrift<typeof postFollows.$inferSelect, PostFollow>>;\ntype _PostBookmarksDrift = Expect<NoDrift<typeof postBookmarks.$inferSelect, PostBookmark>>;\ntype _PostFlagsDrift = Expect<NoDrift<typeof postFlags.$inferSelect, PostFlag>>;\ntype _CommentsDrift = Expect<NoDrift<typeof comments.$inferSelect, Comment>>;\ntype _CommentReactionsDrift = Expect<\n NoDrift<typeof commentReactions.$inferSelect, CommentReaction>\n>;\ntype _CommentFlagsDrift = Expect<NoDrift<typeof commentFlags.$inferSelect, CommentReport>>;\ntype _ChatsDrift = Expect<NoDrift<typeof chats.$inferSelect, Chat>>;\ntype _ChatUsersDrift = Expect<NoDrift<typeof chatUsers.$inferSelect, ChatUser>>;\ntype _MessagesDrift = Expect<NoDrift<typeof messages.$inferSelect, Message>>;\ntype _MessageAttachmentsDrift = Expect<\n NoDrift<typeof messageAttachments.$inferSelect, MessageAttachment>\n>;\ntype _MessageReactionsDrift = Expect<\n NoDrift<typeof messageReactions.$inferSelect, MessageReaction>\n>;\ntype _MessageFlagsDrift = Expect<NoDrift<typeof messageFlags.$inferSelect, MessageFlag>>;\ntype _BlockedUsersDrift = Expect<NoDrift<typeof blockedUsers.$inferSelect, BlockedUser>>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"discussion.js","names":[],"sources":["../../src/schema/discussion.ts"],"sourcesContent":["// discussion tables — comments on an activity, their reactions and reports.\n// Configuration is not here: the course's comment settings ride on the course's\n// `content` settings row, and an activity's override rides on the activity's\n// own settings blob.\n//\n// The author is always an org user, so one column covers both\n// learners and staff. Staff-ness is NOT stored — it is read from the author's\n// current role. A removed comment keeps its row so replies below it survive;\n// only the body stops being served.\n//\n// No course_id: which course an activity sits in is content's fact and changes\n// when a course is restructured. The staff comment list joins to modules to\n// scope by course.\nimport { desc, sql } from \"drizzle-orm\";\nimport {\n pgTable,\n text,\n integer,\n boolean,\n jsonb,\n timestamp,\n primaryKey,\n foreignKey,\n unique,\n index,\n uniqueIndex,\n uuid,\n check,\n} from \"drizzle-orm/pg-core\";\nimport type {\n BlockedUser,\n Chat,\n ChatUser,\n Comment,\n CommentReaction,\n CommentReport,\n DigestRun,\n Mention,\n Message,\n MessageAttachment,\n MessageFlag,\n MessageReaction,\n Post,\n PostBookmark,\n PostFlag,\n PostReaction,\n Subscription,\n} from \"@headless-lms/core/schemas\";\nimport { genId } from \"@headless-lms/core/shared/id\";\nimport { organizations, orgUsers } from \"./organizations.js\";\nimport { activities, communities, spaceTopics, spaces } from \"./content.js\";\nimport { assets } from \"./assets.js\";\nimport type { Expect, NoDrift } from \"./drift.js\";\n\nexport const posts = pgTable(\n \"posts\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"post\")),\n communityId: text(\"community_id\").notNull(),\n spaceId: text(\"space_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n topicId: text(\"topic_id\"),\n title: text(\"title\").notNull(),\n body: text(\"body\").notNull(),\n extra: jsonb(\"extra\").$type<Post[\"extra\"]>().notNull().default({}),\n coverAssetId: text(\"cover_asset_id\"),\n status: text(\"status\", {\n enum: [\"draft\", \"scheduled\", \"pending\", \"published\", \"removed\"],\n })\n .notNull()\n .default(\"draft\"),\n scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }),\n removedBy: text(\"removed_by\"),\n pinned: boolean(\"pinned\").notNull().default(false),\n commentsClosed: boolean(\"comments_closed\"),\n reactionsEnabled: boolean(\"reactions_enabled\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n spaceFk: foreignKey({\n columns: [t.orgId, t.spaceId, t.communityId],\n foreignColumns: [spaces.orgId, spaces.id, spaces.communityId],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n topicFk: foreignKey({\n columns: [t.orgId, t.spaceId, t.topicId],\n foreignColumns: [spaceTopics.orgId, spaceTopics.spaceId, spaceTopics.id],\n }),\n coverAssetFk: foreignKey({\n columns: [t.orgId, t.coverAssetId],\n foreignColumns: [assets.orgId, assets.id],\n }),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n removedByFk: foreignKey({\n columns: [t.orgId, t.removedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n removedCk: check(\n \"posts_removed_by_check\",\n sql`${t.removedBy} is null or ${t.status} = 'removed'`,\n ),\n scheduledCk: check(\n \"posts_scheduled_check\",\n sql`${t.status} <> 'scheduled' or ${t.scheduledAt} is not null`,\n ),\n feedIdx: index(\"posts_feed_idx\").on(\n t.orgId,\n t.spaceId,\n t.status,\n desc(t.pinned),\n desc(t.publishedAt),\n ),\n dueIdx: index(\"posts_due_idx\").on(t.orgId, t.status, t.scheduledAt),\n authorIdx: index(\"posts_author_idx\").on(t.orgId, t.orgUserId, t.createdAt),\n coverAssetIdx: index(\"posts_cover_asset_idx\").on(t.orgId, t.coverAssetId),\n }),\n);\n\nexport const postReactions = pgTable(\n \"post_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.postId, t.orgUserId] }),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const postBookmarks = pgTable(\n \"post_bookmarks\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.postId, t.orgUserId] }),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n userIdx: index(\"post_bookmarks_user_idx\").on(t.orgId, t.orgUserId, t.createdAt),\n }),\n);\n\nexport const postFlags = pgTable(\n \"post_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"postFlag\")),\n postId: text(\"post_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"removed\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.postId, t.orgUserId),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"post_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedAt} is null) = (${t.resolvedBy} is null)`,\n ),\n openIdx: index(\"post_flags_open_idx\").on(t.orgId, t.postId, t.resolvedAt),\n }),\n);\n\nexport const comments = pgTable(\n \"comments\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"comment\")),\n activityId: text(\"activity_id\"),\n postId: text(\"post_id\"),\n communityId: text(\"community_id\"),\n parentId: text(\"parent_id\"),\n orgUserId: text(\"org_user_id\").notNull(),\n body: text(\"body\").notNull(),\n status: text(\"status\", { enum: [\"pending\", \"published\", \"removed\"] })\n .notNull()\n .default(\"published\"),\n removedBy: text(\"removed_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n activityFk: foreignKey({\n columns: [t.orgId, t.activityId],\n foreignColumns: [activities.orgId, activities.id],\n }).onDelete(\"cascade\"),\n postFk: foreignKey({\n columns: [t.orgId, t.postId],\n foreignColumns: [posts.orgId, posts.id],\n }).onDelete(\"cascade\"),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n removedByFk: foreignKey({\n columns: [t.orgId, t.removedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n parentFk: foreignKey({\n columns: [t.orgId, t.parentId],\n foreignColumns: [t.orgId, t.id],\n }),\n removedCk: check(\n \"comments_removed_by_check\",\n sql`${t.removedBy} is null or ${t.status} = 'removed'`,\n ),\n targetCk: check(\"comments_target_check\", sql`num_nonnulls(${t.activityId}, ${t.postId}) = 1`),\n communityCk: check(\n \"comments_community_check\",\n sql`${t.postId} is null or ${t.communityId} is not null`,\n ),\n activityIdx: index(\"comments_activity_idx\").on(t.orgId, t.activityId, t.status, t.createdAt),\n postIdx: index(\"comments_post_idx\").on(t.orgId, t.postId, t.status, t.createdAt),\n queueIdx: index(\"comments_queue_idx\").on(t.orgId, t.status, t.createdAt),\n communityIdx: index(\"comments_community_idx\").on(t.orgId, t.communityId),\n parentIdx: index(\"comments_parent_idx\").on(t.orgId, t.parentId, t.createdAt),\n }),\n);\n\nexport const commentReactions = pgTable(\n \"comment_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n commentId: text(\"comment_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.commentId, t.orgUserId] }),\n commentFk: foreignKey({\n columns: [t.orgId, t.commentId],\n foreignColumns: [comments.orgId, comments.id],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const commentFlags = pgTable(\n \"comment_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"commentReport\")),\n commentId: text(\"comment_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"removed\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.commentId, t.orgUserId),\n commentFk: foreignKey({\n columns: [t.orgId, t.commentId],\n foreignColumns: [comments.orgId, comments.id],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"comment_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedBy} is null or ${t.resolvedAt} is not null)`,\n ),\n openIdx: index(\"comment_flags_open_idx\").on(t.orgId, t.commentId, t.resolvedAt),\n }),\n);\n\nexport const chats = pgTable(\n \"chats\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"chat\")),\n communityId: text(\"community_id\").notNull(),\n kind: text(\"kind\", { enum: [\"direct\", \"group\"] }).notNull(),\n status: text(\"status\", { enum: [\"pending\", \"open\", \"closed\"] })\n .notNull()\n .default(\"open\"),\n createdBy: text(\"created_by\"),\n lockedAt: timestamp(\"locked_at\", { withTimezone: true }),\n lockedBy: text(\"locked_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n communityUq: unique().on(t.orgId, t.id, t.communityId),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n // SET NULL is narrowed to the nullable column in 0009_community_indexes.sql; drizzle cannot express it.\n createdByFk: foreignKey({\n columns: [t.orgId, t.createdBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n lockedByFk: foreignKey({\n columns: [t.orgId, t.lockedBy],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"set null\"),\n lockedCk: check(\"chats_locked_check\", sql`${t.lockedBy} is null or ${t.lockedAt} is not null`),\n }),\n);\n\nexport const chatUsers = pgTable(\n \"chat_users\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n chatId: text(\"chat_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n joinedAt: timestamp(\"joined_at\", { withTimezone: true }).notNull().defaultNow(),\n leftAt: timestamp(\"left_at\", { withTimezone: true }),\n lastReadMessageId: text(\"last_read_message_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.chatId, t.orgUserId] }),\n chatFk: foreignKey({\n columns: [t.orgId, t.chatId, t.communityId],\n foreignColumns: [chats.orgId, chats.id, chats.communityId],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n userIdx: index(\"chat_users_user_idx\").on(t.orgId, t.communityId, t.orgUserId),\n }),\n);\n\nexport const messages = pgTable(\n \"messages\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"message\")),\n communityId: text(\"community_id\").notNull(),\n chatId: text(\"chat_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n body: text(\"body\").notNull(),\n replyToId: text(\"reply_to_id\"),\n clientId: uuid(\"client_id\"),\n editedAt: timestamp(\"edited_at\", { withTimezone: true }),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n communityUq: unique().on(t.orgId, t.id, t.communityId),\n chatFk: foreignKey({\n columns: [t.orgId, t.chatId, t.communityId],\n foreignColumns: [chats.orgId, chats.id, chats.communityId],\n }).onDelete(\"cascade\"),\n authorFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }),\n replyFk: foreignKey({\n columns: [t.orgId, t.replyToId],\n foreignColumns: [t.orgId, t.id],\n }),\n chatIdx: index(\"messages_chat_idx\").on(t.orgId, t.chatId, t.createdAt),\n replyIdx: index(\"messages_reply_idx\").on(t.orgId, t.replyToId),\n clientUq: uniqueIndex(\"messages_client_id_uq\").on(t.orgId, t.chatId, t.orgUserId, t.clientId),\n }),\n);\n\nexport const messageAttachments = pgTable(\n \"message_attachments\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n assetId: text(\"asset_id\").notNull(),\n seq: integer(\"seq\").notNull().default(0),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.messageId, t.assetId] }),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n assetFk: foreignKey({\n columns: [t.orgId, t.assetId],\n foreignColumns: [assets.orgId, assets.id],\n }),\n assetIdx: index(\"message_attachments_asset_idx\").on(t.orgId, t.assetId),\n }),\n);\n\nexport const messageReactions = pgTable(\n \"message_reactions\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n emoji: text(\"emoji\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.messageId, t.orgUserId] }),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const messageFlags = pgTable(\n \"message_flags\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n id: text(\"id\")\n .notNull()\n .$defaultFn(() => genId(\"messageFlag\")),\n communityId: text(\"community_id\").notNull(),\n messageId: text(\"message_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n reason: text(\"reason\").notNull().default(\"\"),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n resolution: text(\"resolution\", { enum: [\"dismissed\", \"deleted\", \"locked\"] }),\n resolvedBy: text(\"resolved_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.id] }),\n reporterUq: unique().on(t.orgId, t.messageId, t.orgUserId),\n messageFk: foreignKey({\n columns: [t.orgId, t.messageId, t.communityId],\n foreignColumns: [messages.orgId, messages.id, messages.communityId],\n }).onDelete(\"cascade\"),\n reporterFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n resolvedCk: check(\n \"message_flags_resolved_check\",\n sql`(${t.resolvedAt} is null) = (${t.resolution} is null) and (${t.resolvedAt} is null) = (${t.resolvedBy} is null)`,\n ),\n openIdx: index(\"message_flags_open_idx\").on(t.orgId, t.communityId, t.messageId, t.resolvedAt),\n }),\n);\n\nexport const blockedUsers = pgTable(\n \"blocked_users\",\n {\n orgId: text(\"org_id\")\n .notNull()\n .references(() => organizations.id),\n communityId: text(\"community_id\").notNull(),\n blockerOrgUserId: text(\"blocker_org_user_id\").notNull(),\n blockedOrgUserId: text(\"blocked_org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n .notNull()\n .defaultNow()\n .$onUpdate(() => new Date()),\n },\n (t) => ({\n pk: primaryKey({\n columns: [t.orgId, t.communityId, t.blockerOrgUserId, t.blockedOrgUserId],\n }),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n blockerFk: foreignKey({\n columns: [t.orgId, t.blockerOrgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n blockedFk: foreignKey({\n columns: [t.orgId, t.blockedOrgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n blockedIdx: index(\"blocked_users_blocked_idx\").on(t.orgId, t.communityId, t.blockedOrgUserId),\n }),\n);\n\nexport const digestRuns = pgTable(\n \"digest_runs\",\n {\n orgId: text(\"org_id\").notNull(),\n communityId: text(\"community_id\").notNull(),\n lastDueAt: timestamp(\"last_due_at\", { withTimezone: true }).notNull(),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.communityId] }),\n communityFk: foreignKey({\n columns: [t.orgId, t.communityId],\n foreignColumns: [communities.orgId, communities.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const subscriptions = pgTable(\n \"subscriptions\",\n {\n orgId: text(\"org_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n itemType: text(\"item_type\", { enum: [\"post\", \"space\", \"chat\"] }).notNull(),\n itemId: text(\"item_id\").notNull(),\n state: text(\"state\", { enum: [\"following\", \"muted\"] }).notNull(),\n mutedUntil: timestamp(\"muted_until\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.orgUserId, t.itemType, t.itemId] }),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n itemIdx: index(\"subscriptions_item_idx\").on(t.orgId, t.itemType, t.itemId, t.state),\n }),\n);\n\nexport const mentions = pgTable(\n \"mentions\",\n {\n orgId: text(\"org_id\").notNull(),\n itemType: text(\"item_type\", { enum: [\"post\", \"comment\", \"message\"] }).notNull(),\n itemId: text(\"item_id\").notNull(),\n orgUserId: text(\"org_user_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (t) => ({\n pk: primaryKey({ columns: [t.orgId, t.itemType, t.itemId, t.orgUserId] }),\n orgUserFk: foreignKey({\n columns: [t.orgId, t.orgUserId],\n foreignColumns: [orgUsers.orgId, orgUsers.id],\n }).onDelete(\"cascade\"),\n }),\n);\n\ntype _PostsDrift = Expect<NoDrift<typeof posts.$inferSelect, Post>>;\ntype _PostReactionsDrift = Expect<NoDrift<typeof postReactions.$inferSelect, PostReaction>>;\ntype _PostBookmarksDrift = Expect<NoDrift<typeof postBookmarks.$inferSelect, PostBookmark>>;\ntype _PostFlagsDrift = Expect<NoDrift<typeof postFlags.$inferSelect, PostFlag>>;\ntype _CommentsDrift = Expect<NoDrift<typeof comments.$inferSelect, Comment>>;\ntype _CommentReactionsDrift = Expect<\n NoDrift<typeof commentReactions.$inferSelect, CommentReaction>\n>;\ntype _CommentFlagsDrift = Expect<NoDrift<typeof commentFlags.$inferSelect, CommentReport>>;\ntype _ChatsDrift = Expect<NoDrift<typeof chats.$inferSelect, Chat>>;\ntype _ChatUsersDrift = Expect<NoDrift<typeof chatUsers.$inferSelect, ChatUser>>;\ntype _MessagesDrift = Expect<NoDrift<typeof messages.$inferSelect, Message>>;\ntype _MessageAttachmentsDrift = Expect<\n NoDrift<typeof messageAttachments.$inferSelect, MessageAttachment>\n>;\ntype _MessageReactionsDrift = Expect<\n NoDrift<typeof messageReactions.$inferSelect, MessageReaction>\n>;\ntype _MessageFlagsDrift = Expect<NoDrift<typeof messageFlags.$inferSelect, MessageFlag>>;\ntype _BlockedUsersDrift = Expect<NoDrift<typeof blockedUsers.$inferSelect, BlockedUser>>;\ntype _DigestRunsDrift = Expect<NoDrift<typeof digestRuns.$inferSelect, DigestRun>>;\ntype _SubscriptionsDrift = Expect<NoDrift<typeof subscriptions.$inferSelect, Subscription>>;\ntype _MentionsDrift = Expect<NoDrift<typeof mentions.$inferSelect, Mention>>;\n"],"mappings":"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"}
@@ -287,13 +287,13 @@ declare const userProfiles: import("drizzle-orm/pg-core").PgTableWithColumns<{
287
287
  };
288
288
  dialect: "pg";
289
289
  }>;
290
- declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
291
- name: "notifications";
290
+ declare const notificationSettings: import("drizzle-orm/pg-core").PgTableWithColumns<{
291
+ name: "notification_settings";
292
292
  schema: undefined;
293
293
  columns: {
294
294
  orgId: import("drizzle-orm/pg-core").PgColumn<{
295
295
  name: "org_id";
296
- tableName: "notifications";
296
+ tableName: "notification_settings";
297
297
  dataType: "string";
298
298
  columnType: "PgText";
299
299
  data: string;
@@ -310,7 +310,7 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
310
310
  }, {}, {}>;
311
311
  id: import("drizzle-orm/pg-core").PgColumn<{
312
312
  name: "id";
313
- tableName: "notifications";
313
+ tableName: "notification_settings";
314
314
  dataType: "string";
315
315
  columnType: "PgText";
316
316
  data: string;
@@ -327,7 +327,7 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
327
327
  }, {}, {}>;
328
328
  userId: import("drizzle-orm/pg-core").PgColumn<{
329
329
  name: "user_id";
330
- tableName: "notifications";
330
+ tableName: "notification_settings";
331
331
  dataType: "string";
332
332
  columnType: "PgText";
333
333
  data: string;
@@ -342,26 +342,26 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
342
342
  identity: undefined;
343
343
  generated: undefined;
344
344
  }, {}, {}>;
345
- kind: import("drizzle-orm/pg-core").PgColumn<{
346
- name: "kind";
347
- tableName: "notifications";
345
+ communityId: import("drizzle-orm/pg-core").PgColumn<{
346
+ name: "community_id";
347
+ tableName: "notification_settings";
348
348
  dataType: "string";
349
349
  columnType: "PgText";
350
- data: "newPostInSpace" | "newCommentOnPost" | "replyToYourComment" | "yourPostWasPublished" | "yourPostWasRemoved" | "yourCommentWasRemoved" | "requestApproved" | "requestDeclined" | "invitedToSpace" | "newMessage" | "messageRequest" | "addedToGroupChat" | "youAreNowAModerator" | "membershipEndingSoon" | "welcomeToCommunity" | "postAwaitingReview" | "joinRequest" | "somethingWasFlagged" | "messageWasFlagged";
350
+ data: string;
351
351
  driverParam: string;
352
- notNull: true;
352
+ notNull: false;
353
353
  hasDefault: false;
354
354
  isPrimaryKey: false;
355
355
  isAutoincrement: false;
356
356
  hasRuntimeDefault: false;
357
- enumValues: ["newPostInSpace", "newCommentOnPost", "replyToYourComment", "yourPostWasPublished", "yourPostWasRemoved", "yourCommentWasRemoved", "requestApproved", "requestDeclined", "invitedToSpace", "newMessage", "messageRequest", "addedToGroupChat", "youAreNowAModerator", "membershipEndingSoon", "welcomeToCommunity", "postAwaitingReview", "joinRequest", "somethingWasFlagged", "messageWasFlagged"];
357
+ enumValues: [string, ...string[]];
358
358
  baseColumn: never;
359
359
  identity: undefined;
360
360
  generated: undefined;
361
361
  }, {}, {}>;
362
- actorOrgUserId: import("drizzle-orm/pg-core").PgColumn<{
363
- name: "actor_org_user_id";
364
- tableName: "notifications";
362
+ spaceId: import("drizzle-orm/pg-core").PgColumn<{
363
+ name: "space_id";
364
+ tableName: "notification_settings";
365
365
  dataType: "string";
366
366
  columnType: "PgText";
367
367
  data: string;
@@ -376,14 +376,14 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
376
376
  identity: undefined;
377
377
  generated: undefined;
378
378
  }, {}, {}>;
379
- communityId: import("drizzle-orm/pg-core").PgColumn<{
380
- name: "community_id";
381
- tableName: "notifications";
379
+ category: import("drizzle-orm/pg-core").PgColumn<{
380
+ name: "category";
381
+ tableName: "notification_settings";
382
382
  dataType: "string";
383
383
  columnType: "PgText";
384
384
  data: string;
385
385
  driverParam: string;
386
- notNull: false;
386
+ notNull: true;
387
387
  hasDefault: false;
388
388
  isPrimaryKey: false;
389
389
  isAutoincrement: false;
@@ -393,14 +393,14 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
393
393
  identity: undefined;
394
394
  generated: undefined;
395
395
  }, {}, {}>;
396
- spaceId: import("drizzle-orm/pg-core").PgColumn<{
397
- name: "space_id";
398
- tableName: "notifications";
396
+ channel: import("drizzle-orm/pg-core").PgColumn<{
397
+ name: "channel";
398
+ tableName: "notification_settings";
399
399
  dataType: "string";
400
400
  columnType: "PgText";
401
401
  data: string;
402
402
  driverParam: string;
403
- notNull: false;
403
+ notNull: true;
404
404
  hasDefault: false;
405
405
  isPrimaryKey: false;
406
406
  isAutoincrement: false;
@@ -410,48 +410,55 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
410
410
  identity: undefined;
411
411
  generated: undefined;
412
412
  }, {}, {}>;
413
- postId: import("drizzle-orm/pg-core").PgColumn<{
414
- name: "post_id";
415
- tableName: "notifications";
416
- dataType: "string";
417
- columnType: "PgText";
418
- data: string;
419
- driverParam: string;
420
- notNull: false;
413
+ enabled: import("drizzle-orm/pg-core").PgColumn<{
414
+ name: "enabled";
415
+ tableName: "notification_settings";
416
+ dataType: "boolean";
417
+ columnType: "PgBoolean";
418
+ data: boolean;
419
+ driverParam: boolean;
420
+ notNull: true;
421
421
  hasDefault: false;
422
422
  isPrimaryKey: false;
423
423
  isAutoincrement: false;
424
424
  hasRuntimeDefault: false;
425
- enumValues: [string, ...string[]];
425
+ enumValues: undefined;
426
426
  baseColumn: never;
427
427
  identity: undefined;
428
428
  generated: undefined;
429
429
  }, {}, {}>;
430
- commentId: import("drizzle-orm/pg-core").PgColumn<{
431
- name: "comment_id";
432
- tableName: "notifications";
433
- dataType: "string";
434
- columnType: "PgText";
435
- data: string;
430
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
431
+ name: "updated_at";
432
+ tableName: "notification_settings";
433
+ dataType: "date";
434
+ columnType: "PgTimestamp";
435
+ data: Date;
436
436
  driverParam: string;
437
- notNull: false;
438
- hasDefault: false;
437
+ notNull: true;
438
+ hasDefault: true;
439
439
  isPrimaryKey: false;
440
440
  isAutoincrement: false;
441
441
  hasRuntimeDefault: false;
442
- enumValues: [string, ...string[]];
442
+ enumValues: undefined;
443
443
  baseColumn: never;
444
444
  identity: undefined;
445
445
  generated: undefined;
446
446
  }, {}, {}>;
447
- chatId: import("drizzle-orm/pg-core").PgColumn<{
448
- name: "chat_id";
449
- tableName: "notifications";
447
+ };
448
+ dialect: "pg";
449
+ }>;
450
+ declare const devices: import("drizzle-orm/pg-core").PgTableWithColumns<{
451
+ name: "devices";
452
+ schema: undefined;
453
+ columns: {
454
+ orgId: import("drizzle-orm/pg-core").PgColumn<{
455
+ name: "org_id";
456
+ tableName: "devices";
450
457
  dataType: "string";
451
458
  columnType: "PgText";
452
459
  data: string;
453
460
  driverParam: string;
454
- notNull: false;
461
+ notNull: true;
455
462
  hasDefault: false;
456
463
  isPrimaryKey: false;
457
464
  isAutoincrement: false;
@@ -461,67 +468,60 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
461
468
  identity: undefined;
462
469
  generated: undefined;
463
470
  }, {}, {}>;
464
- messageId: import("drizzle-orm/pg-core").PgColumn<{
465
- name: "message_id";
466
- tableName: "notifications";
471
+ id: import("drizzle-orm/pg-core").PgColumn<{
472
+ name: "id";
473
+ tableName: "devices";
467
474
  dataType: "string";
468
475
  columnType: "PgText";
469
476
  data: string;
470
477
  driverParam: string;
471
- notNull: false;
472
- hasDefault: false;
478
+ notNull: true;
479
+ hasDefault: true;
473
480
  isPrimaryKey: false;
474
481
  isAutoincrement: false;
475
- hasRuntimeDefault: false;
482
+ hasRuntimeDefault: true;
476
483
  enumValues: [string, ...string[]];
477
484
  baseColumn: never;
478
485
  identity: undefined;
479
486
  generated: undefined;
480
487
  }, {}, {}>;
481
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
482
- name: "created_at";
483
- tableName: "notifications";
484
- dataType: "date";
485
- columnType: "PgTimestamp";
486
- data: Date;
488
+ userId: import("drizzle-orm/pg-core").PgColumn<{
489
+ name: "user_id";
490
+ tableName: "devices";
491
+ dataType: "string";
492
+ columnType: "PgText";
493
+ data: string;
487
494
  driverParam: string;
488
495
  notNull: true;
489
- hasDefault: true;
496
+ hasDefault: false;
490
497
  isPrimaryKey: false;
491
498
  isAutoincrement: false;
492
499
  hasRuntimeDefault: false;
493
- enumValues: undefined;
500
+ enumValues: [string, ...string[]];
494
501
  baseColumn: never;
495
502
  identity: undefined;
496
503
  generated: undefined;
497
504
  }, {}, {}>;
498
- readAt: import("drizzle-orm/pg-core").PgColumn<{
499
- name: "read_at";
500
- tableName: "notifications";
501
- dataType: "date";
502
- columnType: "PgTimestamp";
503
- data: Date;
505
+ provider: import("drizzle-orm/pg-core").PgColumn<{
506
+ name: "provider";
507
+ tableName: "devices";
508
+ dataType: "string";
509
+ columnType: "PgText";
510
+ data: "apns" | "fcm" | "webpush";
504
511
  driverParam: string;
505
- notNull: false;
512
+ notNull: true;
506
513
  hasDefault: false;
507
514
  isPrimaryKey: false;
508
515
  isAutoincrement: false;
509
516
  hasRuntimeDefault: false;
510
- enumValues: undefined;
517
+ enumValues: ["apns", "fcm", "webpush"];
511
518
  baseColumn: never;
512
519
  identity: undefined;
513
520
  generated: undefined;
514
521
  }, {}, {}>;
515
- };
516
- dialect: "pg";
517
- }>;
518
- declare const notificationPreferences: import("drizzle-orm/pg-core").PgTableWithColumns<{
519
- name: "notification_preferences";
520
- schema: undefined;
521
- columns: {
522
- orgId: import("drizzle-orm/pg-core").PgColumn<{
523
- name: "org_id";
524
- tableName: "notification_preferences";
522
+ token: import("drizzle-orm/pg-core").PgColumn<{
523
+ name: "token";
524
+ tableName: "devices";
525
525
  dataType: "string";
526
526
  columnType: "PgText";
527
527
  data: string;
@@ -536,14 +536,14 @@ declare const notificationPreferences: import("drizzle-orm/pg-core").PgTableWith
536
536
  identity: undefined;
537
537
  generated: undefined;
538
538
  }, {}, {}>;
539
- userId: import("drizzle-orm/pg-core").PgColumn<{
540
- name: "user_id";
541
- tableName: "notification_preferences";
539
+ p256dh: import("drizzle-orm/pg-core").PgColumn<{
540
+ name: "p256dh";
541
+ tableName: "devices";
542
542
  dataType: "string";
543
543
  columnType: "PgText";
544
544
  data: string;
545
545
  driverParam: string;
546
- notNull: true;
546
+ notNull: false;
547
547
  hasDefault: false;
548
548
  isPrimaryKey: false;
549
549
  isAutoincrement: false;
@@ -553,60 +553,60 @@ declare const notificationPreferences: import("drizzle-orm/pg-core").PgTableWith
553
553
  identity: undefined;
554
554
  generated: undefined;
555
555
  }, {}, {}>;
556
- kind: import("drizzle-orm/pg-core").PgColumn<{
557
- name: "kind";
558
- tableName: "notification_preferences";
556
+ auth: import("drizzle-orm/pg-core").PgColumn<{
557
+ name: "auth";
558
+ tableName: "devices";
559
559
  dataType: "string";
560
560
  columnType: "PgText";
561
- data: "newPostInSpace" | "newCommentOnPost" | "replyToYourComment" | "yourPostWasPublished" | "yourPostWasRemoved" | "yourCommentWasRemoved" | "requestApproved" | "requestDeclined" | "invitedToSpace" | "newMessage" | "messageRequest" | "addedToGroupChat" | "youAreNowAModerator" | "membershipEndingSoon" | "welcomeToCommunity" | "postAwaitingReview" | "joinRequest" | "somethingWasFlagged" | "messageWasFlagged";
561
+ data: string;
562
562
  driverParam: string;
563
- notNull: true;
563
+ notNull: false;
564
564
  hasDefault: false;
565
565
  isPrimaryKey: false;
566
566
  isAutoincrement: false;
567
567
  hasRuntimeDefault: false;
568
- enumValues: ["newPostInSpace", "newCommentOnPost", "replyToYourComment", "yourPostWasPublished", "yourPostWasRemoved", "yourCommentWasRemoved", "requestApproved", "requestDeclined", "invitedToSpace", "newMessage", "messageRequest", "addedToGroupChat", "youAreNowAModerator", "membershipEndingSoon", "welcomeToCommunity", "postAwaitingReview", "joinRequest", "somethingWasFlagged", "messageWasFlagged"];
568
+ enumValues: [string, ...string[]];
569
569
  baseColumn: never;
570
570
  identity: undefined;
571
571
  generated: undefined;
572
572
  }, {}, {}>;
573
- inApp: import("drizzle-orm/pg-core").PgColumn<{
574
- name: "in_app";
575
- tableName: "notification_preferences";
576
- dataType: "boolean";
577
- columnType: "PgBoolean";
578
- data: boolean;
579
- driverParam: boolean;
580
- notNull: true;
573
+ appId: import("drizzle-orm/pg-core").PgColumn<{
574
+ name: "app_id";
575
+ tableName: "devices";
576
+ dataType: "string";
577
+ columnType: "PgText";
578
+ data: string;
579
+ driverParam: string;
580
+ notNull: false;
581
581
  hasDefault: false;
582
582
  isPrimaryKey: false;
583
583
  isAutoincrement: false;
584
584
  hasRuntimeDefault: false;
585
- enumValues: undefined;
585
+ enumValues: [string, ...string[]];
586
586
  baseColumn: never;
587
587
  identity: undefined;
588
588
  generated: undefined;
589
589
  }, {}, {}>;
590
- email: import("drizzle-orm/pg-core").PgColumn<{
591
- name: "email";
592
- tableName: "notification_preferences";
593
- dataType: "boolean";
594
- columnType: "PgBoolean";
595
- data: boolean;
596
- driverParam: boolean;
597
- notNull: true;
590
+ environment: import("drizzle-orm/pg-core").PgColumn<{
591
+ name: "environment";
592
+ tableName: "devices";
593
+ dataType: "string";
594
+ columnType: "PgText";
595
+ data: "production" | "sandbox";
596
+ driverParam: string;
597
+ notNull: false;
598
598
  hasDefault: false;
599
599
  isPrimaryKey: false;
600
600
  isAutoincrement: false;
601
601
  hasRuntimeDefault: false;
602
- enumValues: undefined;
602
+ enumValues: ["production", "sandbox"];
603
603
  baseColumn: never;
604
604
  identity: undefined;
605
605
  generated: undefined;
606
606
  }, {}, {}>;
607
607
  createdAt: import("drizzle-orm/pg-core").PgColumn<{
608
608
  name: "created_at";
609
- tableName: "notification_preferences";
609
+ tableName: "devices";
610
610
  dataType: "date";
611
611
  columnType: "PgTimestamp";
612
612
  data: Date;
@@ -621,9 +621,9 @@ declare const notificationPreferences: import("drizzle-orm/pg-core").PgTableWith
621
621
  identity: undefined;
622
622
  generated: undefined;
623
623
  }, {}, {}>;
624
- updatedAt: import("drizzle-orm/pg-core").PgColumn<{
625
- name: "updated_at";
626
- tableName: "notification_preferences";
624
+ lastSeenAt: import("drizzle-orm/pg-core").PgColumn<{
625
+ name: "last_seen_at";
626
+ tableName: "devices";
627
627
  dataType: "date";
628
628
  columnType: "PgTimestamp";
629
629
  data: Date;
@@ -642,5 +642,5 @@ declare const notificationPreferences: import("drizzle-orm/pg-core").PgTableWith
642
642
  dialect: "pg";
643
643
  }>;
644
644
  //#endregion
645
- export { notificationPreferences, notifications, userProfiles, users };
645
+ export { devices, notificationSettings, userProfiles, users };
646
646
  //# sourceMappingURL=identity.d.ts.map