sovrium 0.0.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 (527) hide show
  1. package/CHANGELOG.md +3497 -0
  2. package/LICENSE.md +147 -0
  3. package/LICENSE_EE.md +297 -0
  4. package/README.md +321 -0
  5. package/drizzle/0000_melted_kabuki.sql +163 -0
  6. package/drizzle/meta/0000_snapshot.json +1216 -0
  7. package/drizzle/meta/_journal.json +13 -0
  8. package/package.json +167 -0
  9. package/schemas/0.0.1/app.openapi.json +70 -0
  10. package/schemas/0.0.1/app.schema.json +7961 -0
  11. package/schemas/0.0.2/app.openapi.json +80 -0
  12. package/schemas/0.0.2/app.schema.json +8829 -0
  13. package/schemas/development/app.openapi.json +70 -0
  14. package/schemas/development/app.schema.json +7456 -0
  15. package/src/application/errors/app-validation-error.ts +14 -0
  16. package/src/application/errors/static-generation-error.ts +16 -0
  17. package/src/application/metadata/favicon-transformer.ts +127 -0
  18. package/src/application/models/server.ts +27 -0
  19. package/src/application/ports/models/user-metadata.ts +36 -0
  20. package/src/application/ports/models/user-session.ts +34 -0
  21. package/src/application/ports/repositories/activity-log-repository.ts +68 -0
  22. package/src/application/ports/repositories/activity-repository.ts +49 -0
  23. package/src/application/ports/repositories/analytics-repository.ts +164 -0
  24. package/src/application/ports/repositories/auth-repository.ts +33 -0
  25. package/src/application/ports/repositories/batch-repository.ts +86 -0
  26. package/src/application/ports/repositories/comment-repository.ts +150 -0
  27. package/src/application/ports/repositories/index.ts +41 -0
  28. package/src/application/ports/repositories/table-repository.ts +139 -0
  29. package/src/application/ports/services/css-compiler.ts +55 -0
  30. package/src/application/ports/services/index.ts +16 -0
  31. package/src/application/ports/services/page-renderer.ts +79 -0
  32. package/src/application/ports/services/server-factory.ts +80 -0
  33. package/src/application/ports/services/static-site-generator.ts +82 -0
  34. package/src/application/use-cases/activity/programs.ts +66 -0
  35. package/src/application/use-cases/analytics/collect-page-view.ts +114 -0
  36. package/src/application/use-cases/analytics/purge-old-data.ts +40 -0
  37. package/src/application/use-cases/analytics/query-campaigns.ts +43 -0
  38. package/src/application/use-cases/analytics/query-devices.ts +36 -0
  39. package/src/application/use-cases/analytics/query-overview.ts +50 -0
  40. package/src/application/use-cases/analytics/query-pages.ts +40 -0
  41. package/src/application/use-cases/analytics/query-referrers.ts +43 -0
  42. package/src/application/use-cases/analytics/ua-parser.ts +89 -0
  43. package/src/application/use-cases/analytics/visitor-hash.ts +77 -0
  44. package/src/application/use-cases/auth/bootstrap-admin.ts +270 -0
  45. package/src/application/use-cases/list-activity-logs.ts +123 -0
  46. package/src/application/use-cases/server/generate-static-helpers.ts +374 -0
  47. package/src/application/use-cases/server/generate-static.ts +287 -0
  48. package/src/application/use-cases/server/start-server.ts +118 -0
  49. package/src/application/use-cases/server/startup-error-handler.ts +69 -0
  50. package/src/application/use-cases/server/static-content-generators.ts +182 -0
  51. package/src/application/use-cases/server/static-language-generators.ts +181 -0
  52. package/src/application/use-cases/server/static-url-rewriter.ts +237 -0
  53. package/src/application/use-cases/server/translation-replacer.ts +164 -0
  54. package/src/application/use-cases/tables/activity-programs.ts +93 -0
  55. package/src/application/use-cases/tables/batch-operations.ts +156 -0
  56. package/src/application/use-cases/tables/comment-programs.ts +436 -0
  57. package/src/application/use-cases/tables/permissions/permissions.ts +25 -0
  58. package/src/application/use-cases/tables/programs.ts +435 -0
  59. package/src/application/use-cases/tables/table-operations.ts +412 -0
  60. package/src/application/use-cases/tables/user-role.ts +52 -0
  61. package/src/application/use-cases/tables/utils/display-formatter.ts +471 -0
  62. package/src/application/use-cases/tables/utils/field-read-filter.ts +189 -0
  63. package/src/application/use-cases/tables/utils/list-helpers.ts +122 -0
  64. package/src/application/use-cases/tables/utils/record-transformer.ts +319 -0
  65. package/src/cli.ts +370 -0
  66. package/src/domain/errors/create-tagged-error.ts +36 -0
  67. package/src/domain/errors/index.ts +78 -0
  68. package/src/domain/models/api/analytics.ts +179 -0
  69. package/src/domain/models/api/auth.ts +231 -0
  70. package/src/domain/models/api/common.ts +60 -0
  71. package/src/domain/models/api/error.ts +89 -0
  72. package/src/domain/models/api/health.ts +38 -0
  73. package/src/domain/models/api/index.ts +42 -0
  74. package/src/domain/models/api/request.ts +132 -0
  75. package/src/domain/models/api/tables.ts +444 -0
  76. package/src/domain/models/app/analytics/index.ts +129 -0
  77. package/src/domain/models/app/auth/config.ts +116 -0
  78. package/src/domain/models/app/auth/index.ts +230 -0
  79. package/src/domain/models/app/auth/methods/email-and-password.ts +67 -0
  80. package/src/domain/models/app/auth/methods/index.ts +11 -0
  81. package/src/domain/models/app/auth/methods/magic-link.ts +54 -0
  82. package/src/domain/models/app/auth/oauth/index.ts +8 -0
  83. package/src/domain/models/app/auth/oauth/providers.ts +105 -0
  84. package/src/domain/models/app/auth/plugins/admin.ts +130 -0
  85. package/src/domain/models/app/auth/plugins/index.ts +74 -0
  86. package/src/domain/models/app/auth/plugins/two-factor.ts +63 -0
  87. package/src/domain/models/app/auth/roles.ts +179 -0
  88. package/src/domain/models/app/auth/strategies.ts +191 -0
  89. package/src/domain/models/app/auth/validation.ts +127 -0
  90. package/src/domain/models/app/common/branded-ids.ts +200 -0
  91. package/src/domain/models/app/common/definitions.ts +187 -0
  92. package/src/domain/models/app/component/common/component-children.ts +119 -0
  93. package/src/domain/models/app/component/common/component-props.ts +89 -0
  94. package/src/domain/models/app/component/common/component-reference.ts +170 -0
  95. package/src/domain/models/app/component/component.ts +81 -0
  96. package/src/domain/models/app/components.ts +65 -0
  97. package/src/domain/models/app/description.ts +83 -0
  98. package/src/domain/models/app/index.ts +258 -0
  99. package/src/domain/models/app/language/language-config.ts +200 -0
  100. package/src/domain/models/app/languages.ts +205 -0
  101. package/src/domain/models/app/name.ts +66 -0
  102. package/src/domain/models/app/page/common/interactions/click-interaction.ts +116 -0
  103. package/src/domain/models/app/page/common/interactions/entrance-animation.ts +84 -0
  104. package/src/domain/models/app/page/common/interactions/hover-interaction.ts +144 -0
  105. package/src/domain/models/app/page/common/interactions/interactions.ts +64 -0
  106. package/src/domain/models/app/page/common/interactions/scroll-interaction.ts +93 -0
  107. package/src/domain/models/app/page/common/responsive.ts +114 -0
  108. package/src/domain/models/app/page/common/url.ts +35 -0
  109. package/src/domain/models/app/page/common/variable-reference.ts +53 -0
  110. package/src/domain/models/app/page/id.ts +44 -0
  111. package/src/domain/models/app/page/index.ts +270 -0
  112. package/src/domain/models/app/page/meta/analytics.ts +248 -0
  113. package/src/domain/models/app/page/meta/custom-elements.ts +180 -0
  114. package/src/domain/models/app/page/meta/dns-prefetch.ts +77 -0
  115. package/src/domain/models/app/page/meta/favicon-set.ts +203 -0
  116. package/src/domain/models/app/page/meta/favicon.ts +50 -0
  117. package/src/domain/models/app/page/meta/favicons-config.ts +73 -0
  118. package/src/domain/models/app/page/meta/index.ts +278 -0
  119. package/src/domain/models/app/page/meta/open-graph.ts +166 -0
  120. package/src/domain/models/app/page/meta/preload.ts +190 -0
  121. package/src/domain/models/app/page/meta/structured-data/article.ts +211 -0
  122. package/src/domain/models/app/page/meta/structured-data/breadcrumb.ts +115 -0
  123. package/src/domain/models/app/page/meta/structured-data/common-fields.ts +201 -0
  124. package/src/domain/models/app/page/meta/structured-data/education-event.ts +256 -0
  125. package/src/domain/models/app/page/meta/structured-data/faq-page.ts +127 -0
  126. package/src/domain/models/app/page/meta/structured-data/index.ts +95 -0
  127. package/src/domain/models/app/page/meta/structured-data/local-business.ts +247 -0
  128. package/src/domain/models/app/page/meta/structured-data/organization.ts +171 -0
  129. package/src/domain/models/app/page/meta/structured-data/person.ts +138 -0
  130. package/src/domain/models/app/page/meta/structured-data/postal-address.ts +106 -0
  131. package/src/domain/models/app/page/meta/structured-data/product.ts +214 -0
  132. package/src/domain/models/app/page/meta/twitter-card.ts +217 -0
  133. package/src/domain/models/app/page/name.ts +38 -0
  134. package/src/domain/models/app/page/path.ts +21 -0
  135. package/src/domain/models/app/page/scripts/external-scripts.ts +163 -0
  136. package/src/domain/models/app/page/scripts/features.ts +135 -0
  137. package/src/domain/models/app/page/scripts/inline-scripts.ts +114 -0
  138. package/src/domain/models/app/page/scripts/scripts.ts +102 -0
  139. package/src/domain/models/app/page/sections.ts +298 -0
  140. package/src/domain/models/app/pages.ts +61 -0
  141. package/src/domain/models/app/permissions/index.ts +61 -0
  142. package/src/domain/models/app/permissions/resource-action.ts +114 -0
  143. package/src/domain/models/app/permissions/roles.ts +120 -0
  144. package/src/domain/models/app/table/check-constraints.ts +105 -0
  145. package/src/domain/models/app/table/cycle-detection.ts +124 -0
  146. package/src/domain/models/app/table/database-identifier.ts +153 -0
  147. package/src/domain/models/app/table/field-name.ts +36 -0
  148. package/src/domain/models/app/table/field-types/advanced/array-field.ts +33 -0
  149. package/src/domain/models/app/table/field-types/advanced/autonumber-field.ts +54 -0
  150. package/src/domain/models/app/table/field-types/advanced/button-field.ts +56 -0
  151. package/src/domain/models/app/table/field-types/advanced/color-field.ts +57 -0
  152. package/src/domain/models/app/table/field-types/advanced/count-field.ts +54 -0
  153. package/src/domain/models/app/table/field-types/advanced/formula-field.ts +58 -0
  154. package/src/domain/models/app/table/field-types/advanced/geolocation-field.ts +49 -0
  155. package/src/domain/models/app/table/field-types/advanced/index.ts +16 -0
  156. package/src/domain/models/app/table/field-types/advanced/json-field.ts +25 -0
  157. package/src/domain/models/app/table/field-types/advanced/unknown-field.ts +85 -0
  158. package/src/domain/models/app/table/field-types/base-field.ts +42 -0
  159. package/src/domain/models/app/table/field-types/date-time/created-at-field.ts +49 -0
  160. package/src/domain/models/app/table/field-types/date-time/date-field.ts +95 -0
  161. package/src/domain/models/app/table/field-types/date-time/deleted-at-field.ts +56 -0
  162. package/src/domain/models/app/table/field-types/date-time/duration-field.ts +73 -0
  163. package/src/domain/models/app/table/field-types/date-time/index.ts +12 -0
  164. package/src/domain/models/app/table/field-types/date-time/updated-at-field.ts +50 -0
  165. package/src/domain/models/app/table/field-types/index.ts +19 -0
  166. package/src/domain/models/app/table/field-types/media/barcode-field.ts +58 -0
  167. package/src/domain/models/app/table/field-types/media/index.ts +10 -0
  168. package/src/domain/models/app/table/field-types/media/multiple-attachments-field.ts +80 -0
  169. package/src/domain/models/app/table/field-types/media/single-attachment-field.ts +81 -0
  170. package/src/domain/models/app/table/field-types/numeric/currency-field.ts +144 -0
  171. package/src/domain/models/app/table/field-types/numeric/decimal-field.ts +113 -0
  172. package/src/domain/models/app/table/field-types/numeric/index.ts +13 -0
  173. package/src/domain/models/app/table/field-types/numeric/integer-field.ts +98 -0
  174. package/src/domain/models/app/table/field-types/numeric/percentage-field.ts +115 -0
  175. package/src/domain/models/app/table/field-types/numeric/progress-field.ts +71 -0
  176. package/src/domain/models/app/table/field-types/numeric/rating-field.ts +74 -0
  177. package/src/domain/models/app/table/field-types/relational/index.ts +10 -0
  178. package/src/domain/models/app/table/field-types/relational/lookup-field.ts +46 -0
  179. package/src/domain/models/app/table/field-types/relational/relationship-field.ts +112 -0
  180. package/src/domain/models/app/table/field-types/relational/rollup-field.ts +58 -0
  181. package/src/domain/models/app/table/field-types/selection/checkbox-field.ts +51 -0
  182. package/src/domain/models/app/table/field-types/selection/index.ts +11 -0
  183. package/src/domain/models/app/table/field-types/selection/multi-select-field.ts +68 -0
  184. package/src/domain/models/app/table/field-types/selection/single-select-field.ts +54 -0
  185. package/src/domain/models/app/table/field-types/selection/status-field.ts +37 -0
  186. package/src/domain/models/app/table/field-types/text/email-field.ts +80 -0
  187. package/src/domain/models/app/table/field-types/text/index.ts +13 -0
  188. package/src/domain/models/app/table/field-types/text/long-text-field.ts +77 -0
  189. package/src/domain/models/app/table/field-types/text/phone-number-field.ts +82 -0
  190. package/src/domain/models/app/table/field-types/text/rich-text-field.ts +66 -0
  191. package/src/domain/models/app/table/field-types/text/single-line-text-field.ts +79 -0
  192. package/src/domain/models/app/table/field-types/text/url-field.ts +81 -0
  193. package/src/domain/models/app/table/field-types/user/created-by-field.ts +50 -0
  194. package/src/domain/models/app/table/field-types/user/deleted-by-field.ts +57 -0
  195. package/src/domain/models/app/table/field-types/user/index.ts +11 -0
  196. package/src/domain/models/app/table/field-types/user/updated-by-field.ts +51 -0
  197. package/src/domain/models/app/table/field-types/user/user-field.ts +52 -0
  198. package/src/domain/models/app/table/field-types/validation-utils.ts +166 -0
  199. package/src/domain/models/app/table/fields.ts +216 -0
  200. package/src/domain/models/app/table/foreign-keys.ts +111 -0
  201. package/src/domain/models/app/table/formula-keywords.ts +326 -0
  202. package/src/domain/models/app/table/id.ts +31 -0
  203. package/src/domain/models/app/table/index.ts +290 -0
  204. package/src/domain/models/app/table/indexes.ts +80 -0
  205. package/src/domain/models/app/table/name.ts +37 -0
  206. package/src/domain/models/app/table/permissions/field-permission.ts +83 -0
  207. package/src/domain/models/app/table/permissions/index.ts +167 -0
  208. package/src/domain/models/app/table/permissions/permission-evaluator.ts +372 -0
  209. package/src/domain/models/app/table/permissions/permission.ts +49 -0
  210. package/src/domain/models/app/table/primary-key.ts +62 -0
  211. package/src/domain/models/app/table/table-formula-validation.ts +168 -0
  212. package/src/domain/models/app/table/table-indexes-validation.ts +38 -0
  213. package/src/domain/models/app/table/table-permissions-validation.ts +77 -0
  214. package/src/domain/models/app/table/table-primary-key-validation.ts +49 -0
  215. package/src/domain/models/app/table/table-views-validation.ts +408 -0
  216. package/src/domain/models/app/table/unique-constraints.ts +79 -0
  217. package/src/domain/models/app/table/views/fields.ts +28 -0
  218. package/src/domain/models/app/table/views/filters.ts +162 -0
  219. package/src/domain/models/app/table/views/group-by.ts +32 -0
  220. package/src/domain/models/app/table/views/id.ts +50 -0
  221. package/src/domain/models/app/table/views/index.ts +177 -0
  222. package/src/domain/models/app/table/views/name.ts +32 -0
  223. package/src/domain/models/app/table/views/permissions.ts +98 -0
  224. package/src/domain/models/app/table/views/sorts.ts +31 -0
  225. package/src/domain/models/app/tables.ts +695 -0
  226. package/src/domain/models/app/theme/animations.ts +208 -0
  227. package/src/domain/models/app/theme/border-radius.ts +58 -0
  228. package/src/domain/models/app/theme/breakpoints.ts +62 -0
  229. package/src/domain/models/app/theme/colors.ts +110 -0
  230. package/src/domain/models/app/theme/fonts.ts +164 -0
  231. package/src/domain/models/app/theme/shadows.ts +61 -0
  232. package/src/domain/models/app/theme/spacing.ts +115 -0
  233. package/src/domain/models/app/theme.ts +66 -0
  234. package/src/domain/models/app/version.ts +87 -0
  235. package/src/domain/models/record-comment.ts +91 -0
  236. package/src/domain/utils/content-parsing.ts +49 -0
  237. package/src/domain/utils/format-detection.ts +69 -0
  238. package/src/domain/utils/index.ts +9 -0
  239. package/src/domain/utils/route-matcher.ts +184 -0
  240. package/src/domain/utils/translation-resolver.ts +170 -0
  241. package/src/index.ts +208 -0
  242. package/src/infrastructure/analytics/tracking-script.ts +48 -0
  243. package/src/infrastructure/auth/better-auth/auth.ts +216 -0
  244. package/src/infrastructure/auth/better-auth/email-handlers.ts +162 -0
  245. package/src/infrastructure/auth/better-auth/index.ts +16 -0
  246. package/src/infrastructure/auth/better-auth/layer.ts +97 -0
  247. package/src/infrastructure/auth/better-auth/plugins/admin.ts +56 -0
  248. package/src/infrastructure/auth/better-auth/plugins/magic-link.ts +31 -0
  249. package/src/infrastructure/auth/better-auth/plugins/two-factor.ts +19 -0
  250. package/src/infrastructure/auth/better-auth/schema.ts +152 -0
  251. package/src/infrastructure/auth/index.ts +27 -0
  252. package/src/infrastructure/css/cache/css-cache-service.ts +130 -0
  253. package/src/infrastructure/css/compiler.ts +210 -0
  254. package/src/infrastructure/css/css-compiler-live.ts +20 -0
  255. package/src/infrastructure/css/index.ts +25 -0
  256. package/src/infrastructure/css/styles/animation-styles-generator.ts +177 -0
  257. package/src/infrastructure/css/styles/click-animations.ts +147 -0
  258. package/src/infrastructure/css/styles/component-layer-generators.ts +147 -0
  259. package/src/infrastructure/css/theme/theme-generators.ts +130 -0
  260. package/src/infrastructure/css/theme/theme-layer-generators.ts +219 -0
  261. package/src/infrastructure/css/theme/theme-token-resolver.ts +76 -0
  262. package/src/infrastructure/database/activity-queries.ts +111 -0
  263. package/src/infrastructure/database/auth/auth-validation.ts +101 -0
  264. package/src/infrastructure/database/drizzle/db-bun.ts +17 -0
  265. package/src/infrastructure/database/drizzle/db.ts +17 -0
  266. package/src/infrastructure/database/drizzle/index.ts +16 -0
  267. package/src/infrastructure/database/drizzle/layer.ts +34 -0
  268. package/src/infrastructure/database/drizzle/migrate.ts +77 -0
  269. package/src/infrastructure/database/drizzle/schema/activity-log.ts +111 -0
  270. package/src/infrastructure/database/drizzle/schema/analytics-page-views.ts +116 -0
  271. package/src/infrastructure/database/drizzle/schema/migration-audit.ts +68 -0
  272. package/src/infrastructure/database/drizzle/schema/record-comments.ts +79 -0
  273. package/src/infrastructure/database/drizzle/schema.ts +12 -0
  274. package/src/infrastructure/database/field-utils.ts +87 -0
  275. package/src/infrastructure/database/filter-operators.ts +136 -0
  276. package/src/infrastructure/database/formula/formula-trigger-generators.ts +114 -0
  277. package/src/infrastructure/database/formula/formula-utils.ts +440 -0
  278. package/src/infrastructure/database/generators/index-generators.ts +152 -0
  279. package/src/infrastructure/database/generators/trigger-generators.ts +154 -0
  280. package/src/infrastructure/database/index.ts +35 -0
  281. package/src/infrastructure/database/lookup/lookup-expression-generators.ts +356 -0
  282. package/src/infrastructure/database/lookup/lookup-expressions.ts +116 -0
  283. package/src/infrastructure/database/lookup/lookup-view-generators.ts +403 -0
  284. package/src/infrastructure/database/lookup/lookup-view-helpers.ts +65 -0
  285. package/src/infrastructure/database/lookup/lookup-view-triggers.ts +121 -0
  286. package/src/infrastructure/database/migration-audit-trail.ts +375 -0
  287. package/src/infrastructure/database/repositories/activity-log-repository-live.ts +99 -0
  288. package/src/infrastructure/database/repositories/activity-repository-live.ts +21 -0
  289. package/src/infrastructure/database/repositories/analytics-repository-live.ts +316 -0
  290. package/src/infrastructure/database/repositories/auth-repository-live.ts +42 -0
  291. package/src/infrastructure/database/repositories/batch-repository-live.ts +29 -0
  292. package/src/infrastructure/database/repositories/comment-repository-live.ts +39 -0
  293. package/src/infrastructure/database/repositories/table-repository-live.ts +38 -0
  294. package/src/infrastructure/database/schema/schema-dependency-sorting.ts +142 -0
  295. package/src/infrastructure/database/schema/schema-initializer.ts +598 -0
  296. package/src/infrastructure/database/schema-migration/column-detection.ts +286 -0
  297. package/src/infrastructure/database/schema-migration/constants.ts +31 -0
  298. package/src/infrastructure/database/schema-migration/constraint-sync.ts +288 -0
  299. package/src/infrastructure/database/schema-migration/index-sync.ts +108 -0
  300. package/src/infrastructure/database/schema-migration/index.ts +66 -0
  301. package/src/infrastructure/database/schema-migration/migration-statements.ts +106 -0
  302. package/src/infrastructure/database/schema-migration/rename-detection.ts +87 -0
  303. package/src/infrastructure/database/schema-migration/table-operations.ts +65 -0
  304. package/src/infrastructure/database/schema-migration/type-utils.ts +98 -0
  305. package/src/infrastructure/database/schema-migration/types.ts +14 -0
  306. package/src/infrastructure/database/schema-migration-helpers.ts +53 -0
  307. package/src/infrastructure/database/session-context.ts +20 -0
  308. package/src/infrastructure/database/sql/sql-check-constraints.ts +252 -0
  309. package/src/infrastructure/database/sql/sql-column-generators.ts +174 -0
  310. package/src/infrastructure/database/sql/sql-execution.ts +245 -0
  311. package/src/infrastructure/database/sql/sql-field-predicates.ts +81 -0
  312. package/src/infrastructure/database/sql/sql-generators.ts +91 -0
  313. package/src/infrastructure/database/sql/sql-junction-tables.ts +79 -0
  314. package/src/infrastructure/database/sql/sql-key-constraints.ts +210 -0
  315. package/src/infrastructure/database/sql/sql-type-mappings.ts +106 -0
  316. package/src/infrastructure/database/sql/sql-utils.ts +53 -0
  317. package/src/infrastructure/database/table-live-layers.ts +30 -0
  318. package/src/infrastructure/database/table-operations/column-generators.ts +82 -0
  319. package/src/infrastructure/database/table-operations/create-table-sql.ts +81 -0
  320. package/src/infrastructure/database/table-operations/index.ts +55 -0
  321. package/src/infrastructure/database/table-operations/migration-utils.ts +157 -0
  322. package/src/infrastructure/database/table-operations/table-effects.ts +234 -0
  323. package/src/infrastructure/database/table-operations/table-features.ts +96 -0
  324. package/src/infrastructure/database/table-operations/type-compatibility.ts +58 -0
  325. package/src/infrastructure/database/table-operations.ts +47 -0
  326. package/src/infrastructure/database/table-queries/batch/batch-create.ts +80 -0
  327. package/src/infrastructure/database/table-queries/batch/batch-delete.ts +212 -0
  328. package/src/infrastructure/database/table-queries/batch/batch-helpers.ts +124 -0
  329. package/src/infrastructure/database/table-queries/batch/batch-restore.ts +161 -0
  330. package/src/infrastructure/database/table-queries/batch/batch-update.ts +146 -0
  331. package/src/infrastructure/database/table-queries/batch/batch-upsert.ts +357 -0
  332. package/src/infrastructure/database/table-queries/batch/batch.ts +14 -0
  333. package/src/infrastructure/database/table-queries/crud/crud-read.ts +351 -0
  334. package/src/infrastructure/database/table-queries/crud/crud-write.ts +399 -0
  335. package/src/infrastructure/database/table-queries/crud/crud.ts +16 -0
  336. package/src/infrastructure/database/table-queries/index.ts +11 -0
  337. package/src/infrastructure/database/table-queries/mutation-helpers/authorship-helpers.ts +152 -0
  338. package/src/infrastructure/database/table-queries/mutation-helpers/create-record-helpers.ts +90 -0
  339. package/src/infrastructure/database/table-queries/mutation-helpers/delete-helpers.ts +163 -0
  340. package/src/infrastructure/database/table-queries/mutation-helpers/record-fetch-helpers.ts +79 -0
  341. package/src/infrastructure/database/table-queries/mutation-helpers/update-helpers.ts +74 -0
  342. package/src/infrastructure/database/table-queries/query-helpers/activity-log-helpers.ts +53 -0
  343. package/src/infrastructure/database/table-queries/query-helpers/activity-queries.ts +106 -0
  344. package/src/infrastructure/database/table-queries/query-helpers/aggregation-helpers.ts +314 -0
  345. package/src/infrastructure/database/table-queries/query-helpers/comment-queries.ts +414 -0
  346. package/src/infrastructure/database/table-queries/query-helpers/record-validation-queries.ts +126 -0
  347. package/src/infrastructure/database/table-queries/query-helpers/trash-helpers.ts +58 -0
  348. package/src/infrastructure/database/table-queries/shared/error-handling.ts +47 -0
  349. package/src/infrastructure/database/table-queries/shared/typed-execute.ts +27 -0
  350. package/src/infrastructure/database/table-queries/shared/user-join-helpers.ts +38 -0
  351. package/src/infrastructure/database/table-queries/shared/validation.ts +39 -0
  352. package/src/infrastructure/database/views/view-generators.ts +258 -0
  353. package/src/infrastructure/devtools/devtools-layer.ts +43 -0
  354. package/src/infrastructure/devtools/index.ts +8 -0
  355. package/src/infrastructure/email/email-config.ts +103 -0
  356. package/src/infrastructure/email/email-service.ts +152 -0
  357. package/src/infrastructure/email/index.ts +107 -0
  358. package/src/infrastructure/email/nodemailer.ts +125 -0
  359. package/src/infrastructure/email/templates.ts +244 -0
  360. package/src/infrastructure/errors/auth-config-required-error.ts +21 -0
  361. package/src/infrastructure/errors/auth-error.ts +16 -0
  362. package/src/infrastructure/errors/css-compilation-error.ts +14 -0
  363. package/src/infrastructure/errors/index.ts +26 -0
  364. package/src/infrastructure/errors/schema-initialization-error.ts +19 -0
  365. package/src/infrastructure/errors/server-creation-error.ts +14 -0
  366. package/src/infrastructure/filesystem/copy-directory.ts +136 -0
  367. package/src/infrastructure/layers/app-layer.ts +61 -0
  368. package/src/infrastructure/layers/page-renderer-layer.ts +41 -0
  369. package/src/infrastructure/logging/index.ts +8 -0
  370. package/src/infrastructure/logging/logger.ts +204 -0
  371. package/src/infrastructure/schema/file-loader.ts +53 -0
  372. package/src/infrastructure/schema/index.ts +15 -0
  373. package/src/infrastructure/schema/remote-loader.ts +48 -0
  374. package/src/infrastructure/server/index.ts +26 -0
  375. package/src/infrastructure/server/language-detection.ts +87 -0
  376. package/src/infrastructure/server/lifecycle.ts +67 -0
  377. package/src/infrastructure/server/route-setup/api-routes.ts +310 -0
  378. package/src/infrastructure/server/route-setup/auth-route-utils.ts +399 -0
  379. package/src/infrastructure/server/route-setup/auth-routes.ts +245 -0
  380. package/src/infrastructure/server/route-setup/openapi-routes.ts +45 -0
  381. package/src/infrastructure/server/route-setup/openapi-schema.ts +120 -0
  382. package/src/infrastructure/server/route-setup/page-routes.ts +219 -0
  383. package/src/infrastructure/server/route-setup/static-assets.ts +191 -0
  384. package/src/infrastructure/server/server-factory-live.ts +45 -0
  385. package/src/infrastructure/server/server.ts +275 -0
  386. package/src/infrastructure/server/ssg-adapter.ts +196 -0
  387. package/src/infrastructure/server/static-site-generator-live.ts +20 -0
  388. package/src/infrastructure/utils/accept-language-parser.ts +106 -0
  389. package/src/infrastructure/utils/glob-matcher.ts +50 -0
  390. package/src/presentation/api/client.ts +114 -0
  391. package/src/presentation/api/middleware/auth.ts +233 -0
  392. package/src/presentation/api/middleware/table.ts +155 -0
  393. package/src/presentation/api/middleware/validation.ts +88 -0
  394. package/src/presentation/api/routes/activity/get-activity-by-id-handler.ts +77 -0
  395. package/src/presentation/api/routes/activity/index.ts +28 -0
  396. package/src/presentation/api/routes/activity.ts +339 -0
  397. package/src/presentation/api/routes/analytics.ts +328 -0
  398. package/src/presentation/api/routes/auth.ts +169 -0
  399. package/src/presentation/api/routes/index.ts +11 -0
  400. package/src/presentation/api/routes/tables/activity-handlers.ts +57 -0
  401. package/src/presentation/api/routes/tables/batch-permission-helpers.ts +163 -0
  402. package/src/presentation/api/routes/tables/batch-routes.ts +355 -0
  403. package/src/presentation/api/routes/tables/comment-handlers.ts +377 -0
  404. package/src/presentation/api/routes/tables/create-record-helpers.ts +179 -0
  405. package/src/presentation/api/routes/tables/effect-runner.ts +58 -0
  406. package/src/presentation/api/routes/tables/error-handlers.ts +53 -0
  407. package/src/presentation/api/routes/tables/field-permission-validation.ts +167 -0
  408. package/src/presentation/api/routes/tables/filter-parser.ts +75 -0
  409. package/src/presentation/api/routes/tables/formula-parser.ts +118 -0
  410. package/src/presentation/api/routes/tables/index.ts +113 -0
  411. package/src/presentation/api/routes/tables/list-records-filter.ts +54 -0
  412. package/src/presentation/api/routes/tables/param-parsers.ts +59 -0
  413. package/src/presentation/api/routes/tables/record-handlers.ts +484 -0
  414. package/src/presentation/api/routes/tables/record-routes.ts +53 -0
  415. package/src/presentation/api/routes/tables/record-update-handler.ts +200 -0
  416. package/src/presentation/api/routes/tables/sort-validation.ts +85 -0
  417. package/src/presentation/api/routes/tables/table-routes.ts +76 -0
  418. package/src/presentation/api/routes/tables/timezone-validation.ts +41 -0
  419. package/src/presentation/api/routes/tables/upsert-helpers.ts +471 -0
  420. package/src/presentation/api/routes/tables/utils.ts +159 -0
  421. package/src/presentation/api/routes/tables/view-routes.ts +51 -0
  422. package/src/presentation/api/routes/tables.ts +9 -0
  423. package/src/presentation/api/utils/context-helpers.ts +43 -0
  424. package/src/presentation/api/utils/error-sanitizer.ts +235 -0
  425. package/src/presentation/api/utils/field-permission-validator.ts +53 -0
  426. package/src/presentation/api/utils/filter-field-validator.ts +90 -0
  427. package/src/presentation/api/utils/index.ts +13 -0
  428. package/src/presentation/api/utils/run-effect.ts +94 -0
  429. package/src/presentation/api/utils/validate-request.ts +89 -0
  430. package/src/presentation/api/validation/index.ts +29 -0
  431. package/src/presentation/api/validation/rules/field-rules.ts +158 -0
  432. package/src/presentation/api/validation/rules/record-rules.ts +73 -0
  433. package/src/presentation/cli/index.ts +19 -0
  434. package/src/presentation/cli/schema-loader.ts +172 -0
  435. package/src/presentation/hooks/use-breakpoint.ts +155 -0
  436. package/src/presentation/rendering/render-error-pages.tsx +60 -0
  437. package/src/presentation/rendering/render-homepage.tsx +137 -0
  438. package/src/presentation/scripts/script-renderers.ts +112 -0
  439. package/src/presentation/styling/animation-composer.ts +117 -0
  440. package/src/presentation/styling/index.ts +13 -0
  441. package/src/presentation/styling/parse-style.ts +243 -0
  442. package/src/presentation/styling/style-utils.ts +50 -0
  443. package/src/presentation/styling/theme-colors.ts +53 -0
  444. package/src/presentation/translations/component-utils.ts +54 -0
  445. package/src/presentation/translations/index.ts +16 -0
  446. package/src/presentation/translations/translation-resolver.ts +22 -0
  447. package/src/presentation/ui/languages/language-switcher.tsx +119 -0
  448. package/src/presentation/ui/metadata/analytics-builders.tsx +174 -0
  449. package/src/presentation/ui/metadata/analytics-head.tsx +39 -0
  450. package/src/presentation/ui/metadata/custom-elements-builders.tsx +157 -0
  451. package/src/presentation/ui/metadata/extract-component-meta.ts +108 -0
  452. package/src/presentation/ui/metadata/head-elements.tsx +164 -0
  453. package/src/presentation/ui/metadata/index.tsx +35 -0
  454. package/src/presentation/ui/metadata/meta-utils.tsx +42 -0
  455. package/src/presentation/ui/metadata/open-graph-meta.tsx +57 -0
  456. package/src/presentation/ui/metadata/structured-data-from-component.tsx +134 -0
  457. package/src/presentation/ui/metadata/structured-data.tsx +88 -0
  458. package/src/presentation/ui/metadata/twitter-card-meta.tsx +80 -0
  459. package/src/presentation/ui/pages/DefaultHomePage.tsx +43 -0
  460. package/src/presentation/ui/pages/DefaultPageConfigs.ts +220 -0
  461. package/src/presentation/ui/pages/DynamicPage.tsx +307 -0
  462. package/src/presentation/ui/pages/ErrorPage.tsx +25 -0
  463. package/src/presentation/ui/pages/NotFoundPage.tsx +25 -0
  464. package/src/presentation/ui/pages/PageBodyScripts.tsx +242 -0
  465. package/src/presentation/ui/pages/PageBodyStyles.ts +52 -0
  466. package/src/presentation/ui/pages/PageHead.tsx +380 -0
  467. package/src/presentation/ui/pages/PageLangResolver.ts +58 -0
  468. package/src/presentation/ui/pages/PageMain.tsx +58 -0
  469. package/src/presentation/ui/pages/PageMetadata.ts +168 -0
  470. package/src/presentation/ui/pages/PageMetadataI18n.ts +169 -0
  471. package/src/presentation/ui/pages/PageScripts.ts +78 -0
  472. package/src/presentation/ui/pages/SectionRenderer.tsx +67 -0
  473. package/src/presentation/ui/pages/SectionSpacing.tsx +131 -0
  474. package/src/presentation/ui/sections/component-renderer.tsx +426 -0
  475. package/src/presentation/ui/sections/component-renderer.types.ts +33 -0
  476. package/src/presentation/ui/sections/components/component-reference-handler.tsx +74 -0
  477. package/src/presentation/ui/sections/components/component-resolution.ts +65 -0
  478. package/src/presentation/ui/sections/components/index.ts +9 -0
  479. package/src/presentation/ui/sections/hero.tsx +394 -0
  480. package/src/presentation/ui/sections/props/component-builder.ts +183 -0
  481. package/src/presentation/ui/sections/props/element-props.ts +179 -0
  482. package/src/presentation/ui/sections/props/index.ts +9 -0
  483. package/src/presentation/ui/sections/props/prop-conversion.ts +171 -0
  484. package/src/presentation/ui/sections/props/props-builder-config.ts +42 -0
  485. package/src/presentation/ui/sections/props/props-builder.ts +296 -0
  486. package/src/presentation/ui/sections/renderers/element-renderers/html-element-renderer.tsx +124 -0
  487. package/src/presentation/ui/sections/renderers/element-renderers/index.ts +59 -0
  488. package/src/presentation/ui/sections/renderers/element-renderers/interactive-renderers.tsx +231 -0
  489. package/src/presentation/ui/sections/renderers/element-renderers/media-renderers.tsx +102 -0
  490. package/src/presentation/ui/sections/renderers/element-renderers/text-content-renderers.tsx +42 -0
  491. package/src/presentation/ui/sections/renderers/element-renderers.ts +53 -0
  492. package/src/presentation/ui/sections/renderers/html-element-helpers.ts +100 -0
  493. package/src/presentation/ui/sections/renderers/specialized-renderers.tsx +212 -0
  494. package/src/presentation/ui/sections/rendering/component-dispatch-config.ts +31 -0
  495. package/src/presentation/ui/sections/rendering/component-registry/index.ts +39 -0
  496. package/src/presentation/ui/sections/rendering/component-registry/interactive-components.ts +54 -0
  497. package/src/presentation/ui/sections/rendering/component-registry/media-components.ts +36 -0
  498. package/src/presentation/ui/sections/rendering/component-registry/special-components.tsx +153 -0
  499. package/src/presentation/ui/sections/rendering/component-registry/structural-components.ts +215 -0
  500. package/src/presentation/ui/sections/rendering/component-registry/text-components.ts +57 -0
  501. package/src/presentation/ui/sections/rendering/component-registry-helpers.tsx +29 -0
  502. package/src/presentation/ui/sections/rendering/component-registry.tsx +21 -0
  503. package/src/presentation/ui/sections/rendering/component-type-dispatcher.tsx +33 -0
  504. package/src/presentation/ui/sections/rendering/index.ts +9 -0
  505. package/src/presentation/ui/sections/responsive/responsive-children-builder.tsx +96 -0
  506. package/src/presentation/ui/sections/responsive/responsive-content-builder.tsx +95 -0
  507. package/src/presentation/ui/sections/responsive/responsive-props-merger.ts +195 -0
  508. package/src/presentation/ui/sections/responsive/responsive-resolver.ts +213 -0
  509. package/src/presentation/ui/sections/styling/animation-composer-wrapper.ts +65 -0
  510. package/src/presentation/ui/sections/styling/class-builders.ts +45 -0
  511. package/src/presentation/ui/sections/styling/color-resolver.ts +43 -0
  512. package/src/presentation/ui/sections/styling/hover-interaction-handler.ts +107 -0
  513. package/src/presentation/ui/sections/styling/index.ts +9 -0
  514. package/src/presentation/ui/sections/styling/interaction-props-builder.ts +55 -0
  515. package/src/presentation/ui/sections/styling/shadow-resolver.ts +83 -0
  516. package/src/presentation/ui/sections/styling/spacing-resolver.ts +104 -0
  517. package/src/presentation/ui/sections/styling/style-processor.ts +170 -0
  518. package/src/presentation/ui/sections/styling/theme-tokens.ts +184 -0
  519. package/src/presentation/ui/sections/translations/i18n-content-resolver.ts +198 -0
  520. package/src/presentation/ui/sections/translations/index.ts +9 -0
  521. package/src/presentation/ui/sections/translations/translation-handler.ts +143 -0
  522. package/src/presentation/ui/sections/translations/variable-substitution.ts +225 -0
  523. package/src/presentation/ui/sections/utils/time-parser.ts +82 -0
  524. package/src/presentation/utils/link-attributes.ts +50 -0
  525. package/src/presentation/utils/string-utils.ts +58 -0
  526. package/src/presentation/utils/styles.ts +50 -0
  527. package/tsconfig.json +46 -0
@@ -0,0 +1,1216 @@
1
+ {
2
+ "id": "ceda5934-4a25-4de0-b0ff-9fa7173bea47",
3
+ "prevId": "00000000-0000-0000-0000-000000000000",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "auth.account": {
8
+ "name": "account",
9
+ "schema": "auth",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "text",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "account_id": {
18
+ "name": "account_id",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true
22
+ },
23
+ "provider_id": {
24
+ "name": "provider_id",
25
+ "type": "text",
26
+ "primaryKey": false,
27
+ "notNull": true
28
+ },
29
+ "user_id": {
30
+ "name": "user_id",
31
+ "type": "text",
32
+ "primaryKey": false,
33
+ "notNull": true
34
+ },
35
+ "access_token": {
36
+ "name": "access_token",
37
+ "type": "text",
38
+ "primaryKey": false,
39
+ "notNull": false
40
+ },
41
+ "refresh_token": {
42
+ "name": "refresh_token",
43
+ "type": "text",
44
+ "primaryKey": false,
45
+ "notNull": false
46
+ },
47
+ "id_token": {
48
+ "name": "id_token",
49
+ "type": "text",
50
+ "primaryKey": false,
51
+ "notNull": false
52
+ },
53
+ "access_token_expires_at": {
54
+ "name": "access_token_expires_at",
55
+ "type": "timestamp with time zone",
56
+ "primaryKey": false,
57
+ "notNull": false
58
+ },
59
+ "refresh_token_expires_at": {
60
+ "name": "refresh_token_expires_at",
61
+ "type": "timestamp with time zone",
62
+ "primaryKey": false,
63
+ "notNull": false
64
+ },
65
+ "scope": {
66
+ "name": "scope",
67
+ "type": "text",
68
+ "primaryKey": false,
69
+ "notNull": false
70
+ },
71
+ "password": {
72
+ "name": "password",
73
+ "type": "text",
74
+ "primaryKey": false,
75
+ "notNull": false
76
+ },
77
+ "created_at": {
78
+ "name": "created_at",
79
+ "type": "timestamp with time zone",
80
+ "primaryKey": false,
81
+ "notNull": true,
82
+ "default": "now()"
83
+ },
84
+ "updated_at": {
85
+ "name": "updated_at",
86
+ "type": "timestamp with time zone",
87
+ "primaryKey": false,
88
+ "notNull": true,
89
+ "default": "now()"
90
+ }
91
+ },
92
+ "indexes": {
93
+ "account_userId_idx": {
94
+ "name": "account_userId_idx",
95
+ "columns": [
96
+ {
97
+ "expression": "user_id",
98
+ "isExpression": false,
99
+ "asc": true,
100
+ "nulls": "last"
101
+ }
102
+ ],
103
+ "isUnique": false,
104
+ "concurrently": false,
105
+ "method": "btree",
106
+ "with": {}
107
+ }
108
+ },
109
+ "foreignKeys": {
110
+ "account_user_id_user_id_fk": {
111
+ "name": "account_user_id_user_id_fk",
112
+ "tableFrom": "account",
113
+ "tableTo": "user",
114
+ "schemaTo": "auth",
115
+ "columnsFrom": ["user_id"],
116
+ "columnsTo": ["id"],
117
+ "onDelete": "cascade",
118
+ "onUpdate": "no action"
119
+ }
120
+ },
121
+ "compositePrimaryKeys": {},
122
+ "uniqueConstraints": {},
123
+ "policies": {},
124
+ "checkConstraints": {},
125
+ "isRLSEnabled": false
126
+ },
127
+ "auth.session": {
128
+ "name": "session",
129
+ "schema": "auth",
130
+ "columns": {
131
+ "id": {
132
+ "name": "id",
133
+ "type": "text",
134
+ "primaryKey": true,
135
+ "notNull": true
136
+ },
137
+ "expires_at": {
138
+ "name": "expires_at",
139
+ "type": "timestamp with time zone",
140
+ "primaryKey": false,
141
+ "notNull": true
142
+ },
143
+ "token": {
144
+ "name": "token",
145
+ "type": "text",
146
+ "primaryKey": false,
147
+ "notNull": true
148
+ },
149
+ "created_at": {
150
+ "name": "created_at",
151
+ "type": "timestamp with time zone",
152
+ "primaryKey": false,
153
+ "notNull": true,
154
+ "default": "now()"
155
+ },
156
+ "updated_at": {
157
+ "name": "updated_at",
158
+ "type": "timestamp with time zone",
159
+ "primaryKey": false,
160
+ "notNull": true,
161
+ "default": "now()"
162
+ },
163
+ "ip_address": {
164
+ "name": "ip_address",
165
+ "type": "text",
166
+ "primaryKey": false,
167
+ "notNull": false
168
+ },
169
+ "user_agent": {
170
+ "name": "user_agent",
171
+ "type": "text",
172
+ "primaryKey": false,
173
+ "notNull": false
174
+ },
175
+ "user_id": {
176
+ "name": "user_id",
177
+ "type": "text",
178
+ "primaryKey": false,
179
+ "notNull": true
180
+ },
181
+ "impersonated_by": {
182
+ "name": "impersonated_by",
183
+ "type": "text",
184
+ "primaryKey": false,
185
+ "notNull": false
186
+ }
187
+ },
188
+ "indexes": {
189
+ "session_userId_idx": {
190
+ "name": "session_userId_idx",
191
+ "columns": [
192
+ {
193
+ "expression": "user_id",
194
+ "isExpression": false,
195
+ "asc": true,
196
+ "nulls": "last"
197
+ }
198
+ ],
199
+ "isUnique": false,
200
+ "concurrently": false,
201
+ "method": "btree",
202
+ "with": {}
203
+ }
204
+ },
205
+ "foreignKeys": {
206
+ "session_user_id_user_id_fk": {
207
+ "name": "session_user_id_user_id_fk",
208
+ "tableFrom": "session",
209
+ "tableTo": "user",
210
+ "schemaTo": "auth",
211
+ "columnsFrom": ["user_id"],
212
+ "columnsTo": ["id"],
213
+ "onDelete": "cascade",
214
+ "onUpdate": "no action"
215
+ }
216
+ },
217
+ "compositePrimaryKeys": {},
218
+ "uniqueConstraints": {
219
+ "session_token_unique": {
220
+ "name": "session_token_unique",
221
+ "nullsNotDistinct": false,
222
+ "columns": ["token"]
223
+ }
224
+ },
225
+ "policies": {},
226
+ "checkConstraints": {},
227
+ "isRLSEnabled": false
228
+ },
229
+ "auth.two_factor": {
230
+ "name": "two_factor",
231
+ "schema": "auth",
232
+ "columns": {
233
+ "id": {
234
+ "name": "id",
235
+ "type": "text",
236
+ "primaryKey": true,
237
+ "notNull": true
238
+ },
239
+ "user_id": {
240
+ "name": "user_id",
241
+ "type": "text",
242
+ "primaryKey": false,
243
+ "notNull": true
244
+ },
245
+ "secret": {
246
+ "name": "secret",
247
+ "type": "text",
248
+ "primaryKey": false,
249
+ "notNull": true
250
+ },
251
+ "backup_codes": {
252
+ "name": "backup_codes",
253
+ "type": "text",
254
+ "primaryKey": false,
255
+ "notNull": true
256
+ }
257
+ },
258
+ "indexes": {
259
+ "twoFactor_secret_idx": {
260
+ "name": "twoFactor_secret_idx",
261
+ "columns": [
262
+ {
263
+ "expression": "secret",
264
+ "isExpression": false,
265
+ "asc": true,
266
+ "nulls": "last"
267
+ }
268
+ ],
269
+ "isUnique": false,
270
+ "concurrently": false,
271
+ "method": "btree",
272
+ "with": {}
273
+ },
274
+ "twoFactor_userId_idx": {
275
+ "name": "twoFactor_userId_idx",
276
+ "columns": [
277
+ {
278
+ "expression": "user_id",
279
+ "isExpression": false,
280
+ "asc": true,
281
+ "nulls": "last"
282
+ }
283
+ ],
284
+ "isUnique": false,
285
+ "concurrently": false,
286
+ "method": "btree",
287
+ "with": {}
288
+ }
289
+ },
290
+ "foreignKeys": {
291
+ "two_factor_user_id_user_id_fk": {
292
+ "name": "two_factor_user_id_user_id_fk",
293
+ "tableFrom": "two_factor",
294
+ "tableTo": "user",
295
+ "schemaTo": "auth",
296
+ "columnsFrom": ["user_id"],
297
+ "columnsTo": ["id"],
298
+ "onDelete": "cascade",
299
+ "onUpdate": "no action"
300
+ }
301
+ },
302
+ "compositePrimaryKeys": {},
303
+ "uniqueConstraints": {},
304
+ "policies": {},
305
+ "checkConstraints": {},
306
+ "isRLSEnabled": false
307
+ },
308
+ "auth.user": {
309
+ "name": "user",
310
+ "schema": "auth",
311
+ "columns": {
312
+ "id": {
313
+ "name": "id",
314
+ "type": "text",
315
+ "primaryKey": true,
316
+ "notNull": true
317
+ },
318
+ "name": {
319
+ "name": "name",
320
+ "type": "text",
321
+ "primaryKey": false,
322
+ "notNull": true
323
+ },
324
+ "email": {
325
+ "name": "email",
326
+ "type": "text",
327
+ "primaryKey": false,
328
+ "notNull": true
329
+ },
330
+ "email_verified": {
331
+ "name": "email_verified",
332
+ "type": "boolean",
333
+ "primaryKey": false,
334
+ "notNull": true,
335
+ "default": false
336
+ },
337
+ "image": {
338
+ "name": "image",
339
+ "type": "text",
340
+ "primaryKey": false,
341
+ "notNull": false
342
+ },
343
+ "created_at": {
344
+ "name": "created_at",
345
+ "type": "timestamp with time zone",
346
+ "primaryKey": false,
347
+ "notNull": true,
348
+ "default": "now()"
349
+ },
350
+ "updated_at": {
351
+ "name": "updated_at",
352
+ "type": "timestamp with time zone",
353
+ "primaryKey": false,
354
+ "notNull": true,
355
+ "default": "now()"
356
+ },
357
+ "role": {
358
+ "name": "role",
359
+ "type": "text",
360
+ "primaryKey": false,
361
+ "notNull": false
362
+ },
363
+ "banned": {
364
+ "name": "banned",
365
+ "type": "boolean",
366
+ "primaryKey": false,
367
+ "notNull": false,
368
+ "default": false
369
+ },
370
+ "ban_reason": {
371
+ "name": "ban_reason",
372
+ "type": "text",
373
+ "primaryKey": false,
374
+ "notNull": false
375
+ },
376
+ "ban_expires": {
377
+ "name": "ban_expires",
378
+ "type": "timestamp with time zone",
379
+ "primaryKey": false,
380
+ "notNull": false
381
+ },
382
+ "two_factor_enabled": {
383
+ "name": "two_factor_enabled",
384
+ "type": "boolean",
385
+ "primaryKey": false,
386
+ "notNull": false,
387
+ "default": false
388
+ }
389
+ },
390
+ "indexes": {},
391
+ "foreignKeys": {},
392
+ "compositePrimaryKeys": {},
393
+ "uniqueConstraints": {
394
+ "user_email_unique": {
395
+ "name": "user_email_unique",
396
+ "nullsNotDistinct": false,
397
+ "columns": ["email"]
398
+ }
399
+ },
400
+ "policies": {},
401
+ "checkConstraints": {},
402
+ "isRLSEnabled": false
403
+ },
404
+ "auth.verification": {
405
+ "name": "verification",
406
+ "schema": "auth",
407
+ "columns": {
408
+ "id": {
409
+ "name": "id",
410
+ "type": "text",
411
+ "primaryKey": true,
412
+ "notNull": true
413
+ },
414
+ "identifier": {
415
+ "name": "identifier",
416
+ "type": "text",
417
+ "primaryKey": false,
418
+ "notNull": true
419
+ },
420
+ "value": {
421
+ "name": "value",
422
+ "type": "text",
423
+ "primaryKey": false,
424
+ "notNull": true
425
+ },
426
+ "expires_at": {
427
+ "name": "expires_at",
428
+ "type": "timestamp with time zone",
429
+ "primaryKey": false,
430
+ "notNull": true
431
+ },
432
+ "created_at": {
433
+ "name": "created_at",
434
+ "type": "timestamp with time zone",
435
+ "primaryKey": false,
436
+ "notNull": true,
437
+ "default": "now()"
438
+ },
439
+ "updated_at": {
440
+ "name": "updated_at",
441
+ "type": "timestamp with time zone",
442
+ "primaryKey": false,
443
+ "notNull": true,
444
+ "default": "now()"
445
+ }
446
+ },
447
+ "indexes": {
448
+ "verification_identifier_idx": {
449
+ "name": "verification_identifier_idx",
450
+ "columns": [
451
+ {
452
+ "expression": "identifier",
453
+ "isExpression": false,
454
+ "asc": true,
455
+ "nulls": "last"
456
+ }
457
+ ],
458
+ "isUnique": false,
459
+ "concurrently": false,
460
+ "method": "btree",
461
+ "with": {}
462
+ }
463
+ },
464
+ "foreignKeys": {},
465
+ "compositePrimaryKeys": {},
466
+ "uniqueConstraints": {},
467
+ "policies": {},
468
+ "checkConstraints": {},
469
+ "isRLSEnabled": false
470
+ },
471
+ "system.migration_history": {
472
+ "name": "migration_history",
473
+ "schema": "system",
474
+ "columns": {
475
+ "id": {
476
+ "name": "id",
477
+ "type": "serial",
478
+ "primaryKey": true,
479
+ "notNull": true
480
+ },
481
+ "version": {
482
+ "name": "version",
483
+ "type": "integer",
484
+ "primaryKey": false,
485
+ "notNull": true
486
+ },
487
+ "checksum": {
488
+ "name": "checksum",
489
+ "type": "text",
490
+ "primaryKey": false,
491
+ "notNull": true
492
+ },
493
+ "schema": {
494
+ "name": "schema",
495
+ "type": "jsonb",
496
+ "primaryKey": false,
497
+ "notNull": false
498
+ },
499
+ "applied_at": {
500
+ "name": "applied_at",
501
+ "type": "timestamp",
502
+ "primaryKey": false,
503
+ "notNull": false,
504
+ "default": "now()"
505
+ },
506
+ "rolled_back_at": {
507
+ "name": "rolled_back_at",
508
+ "type": "timestamp",
509
+ "primaryKey": false,
510
+ "notNull": false
511
+ }
512
+ },
513
+ "indexes": {},
514
+ "foreignKeys": {},
515
+ "compositePrimaryKeys": {},
516
+ "uniqueConstraints": {},
517
+ "policies": {},
518
+ "checkConstraints": {},
519
+ "isRLSEnabled": false
520
+ },
521
+ "system.migration_log": {
522
+ "name": "migration_log",
523
+ "schema": "system",
524
+ "columns": {
525
+ "id": {
526
+ "name": "id",
527
+ "type": "serial",
528
+ "primaryKey": true,
529
+ "notNull": true
530
+ },
531
+ "operation": {
532
+ "name": "operation",
533
+ "type": "text",
534
+ "primaryKey": false,
535
+ "notNull": true
536
+ },
537
+ "from_version": {
538
+ "name": "from_version",
539
+ "type": "integer",
540
+ "primaryKey": false,
541
+ "notNull": false
542
+ },
543
+ "to_version": {
544
+ "name": "to_version",
545
+ "type": "integer",
546
+ "primaryKey": false,
547
+ "notNull": false
548
+ },
549
+ "reason": {
550
+ "name": "reason",
551
+ "type": "text",
552
+ "primaryKey": false,
553
+ "notNull": false
554
+ },
555
+ "status": {
556
+ "name": "status",
557
+ "type": "text",
558
+ "primaryKey": false,
559
+ "notNull": true
560
+ },
561
+ "created_at": {
562
+ "name": "created_at",
563
+ "type": "timestamp",
564
+ "primaryKey": false,
565
+ "notNull": false,
566
+ "default": "now()"
567
+ }
568
+ },
569
+ "indexes": {},
570
+ "foreignKeys": {},
571
+ "compositePrimaryKeys": {},
572
+ "uniqueConstraints": {},
573
+ "policies": {},
574
+ "checkConstraints": {},
575
+ "isRLSEnabled": false
576
+ },
577
+ "system.schema_checksum": {
578
+ "name": "schema_checksum",
579
+ "schema": "system",
580
+ "columns": {
581
+ "id": {
582
+ "name": "id",
583
+ "type": "text",
584
+ "primaryKey": true,
585
+ "notNull": true
586
+ },
587
+ "checksum": {
588
+ "name": "checksum",
589
+ "type": "text",
590
+ "primaryKey": false,
591
+ "notNull": true
592
+ },
593
+ "schema": {
594
+ "name": "schema",
595
+ "type": "jsonb",
596
+ "primaryKey": false,
597
+ "notNull": true
598
+ },
599
+ "updated_at": {
600
+ "name": "updated_at",
601
+ "type": "timestamp",
602
+ "primaryKey": false,
603
+ "notNull": false,
604
+ "default": "now()"
605
+ }
606
+ },
607
+ "indexes": {},
608
+ "foreignKeys": {},
609
+ "compositePrimaryKeys": {},
610
+ "uniqueConstraints": {},
611
+ "policies": {},
612
+ "checkConstraints": {},
613
+ "isRLSEnabled": false
614
+ },
615
+ "system.activity_logs": {
616
+ "name": "activity_logs",
617
+ "schema": "system",
618
+ "columns": {
619
+ "id": {
620
+ "name": "id",
621
+ "type": "text",
622
+ "primaryKey": true,
623
+ "notNull": true,
624
+ "default": "gen_random_uuid()"
625
+ },
626
+ "created_at": {
627
+ "name": "created_at",
628
+ "type": "timestamp with time zone",
629
+ "primaryKey": false,
630
+ "notNull": true,
631
+ "default": "now()"
632
+ },
633
+ "user_id": {
634
+ "name": "user_id",
635
+ "type": "text",
636
+ "primaryKey": false,
637
+ "notNull": false
638
+ },
639
+ "session_id": {
640
+ "name": "session_id",
641
+ "type": "text",
642
+ "primaryKey": false,
643
+ "notNull": false
644
+ },
645
+ "action": {
646
+ "name": "action",
647
+ "type": "text",
648
+ "primaryKey": false,
649
+ "notNull": true
650
+ },
651
+ "table_name": {
652
+ "name": "table_name",
653
+ "type": "text",
654
+ "primaryKey": false,
655
+ "notNull": true
656
+ },
657
+ "table_id": {
658
+ "name": "table_id",
659
+ "type": "text",
660
+ "primaryKey": false,
661
+ "notNull": false
662
+ },
663
+ "record_id": {
664
+ "name": "record_id",
665
+ "type": "text",
666
+ "primaryKey": false,
667
+ "notNull": true
668
+ },
669
+ "changes": {
670
+ "name": "changes",
671
+ "type": "jsonb",
672
+ "primaryKey": false,
673
+ "notNull": false
674
+ },
675
+ "ip_address": {
676
+ "name": "ip_address",
677
+ "type": "text",
678
+ "primaryKey": false,
679
+ "notNull": false
680
+ },
681
+ "user_agent": {
682
+ "name": "user_agent",
683
+ "type": "text",
684
+ "primaryKey": false,
685
+ "notNull": false
686
+ }
687
+ },
688
+ "indexes": {
689
+ "activity_logs_created_at_idx": {
690
+ "name": "activity_logs_created_at_idx",
691
+ "columns": [
692
+ {
693
+ "expression": "created_at",
694
+ "isExpression": false,
695
+ "asc": true,
696
+ "nulls": "last"
697
+ }
698
+ ],
699
+ "isUnique": false,
700
+ "concurrently": false,
701
+ "method": "btree",
702
+ "with": {}
703
+ },
704
+ "activity_logs_user_created_at_idx": {
705
+ "name": "activity_logs_user_created_at_idx",
706
+ "columns": [
707
+ {
708
+ "expression": "user_id",
709
+ "isExpression": false,
710
+ "asc": true,
711
+ "nulls": "last"
712
+ },
713
+ {
714
+ "expression": "created_at",
715
+ "isExpression": false,
716
+ "asc": true,
717
+ "nulls": "last"
718
+ }
719
+ ],
720
+ "isUnique": false,
721
+ "concurrently": false,
722
+ "method": "btree",
723
+ "with": {}
724
+ },
725
+ "activity_logs_table_record_idx": {
726
+ "name": "activity_logs_table_record_idx",
727
+ "columns": [
728
+ {
729
+ "expression": "table_name",
730
+ "isExpression": false,
731
+ "asc": true,
732
+ "nulls": "last"
733
+ },
734
+ {
735
+ "expression": "record_id",
736
+ "isExpression": false,
737
+ "asc": true,
738
+ "nulls": "last"
739
+ }
740
+ ],
741
+ "isUnique": false,
742
+ "concurrently": false,
743
+ "method": "btree",
744
+ "with": {}
745
+ },
746
+ "activity_logs_action_idx": {
747
+ "name": "activity_logs_action_idx",
748
+ "columns": [
749
+ {
750
+ "expression": "action",
751
+ "isExpression": false,
752
+ "asc": true,
753
+ "nulls": "last"
754
+ }
755
+ ],
756
+ "isUnique": false,
757
+ "concurrently": false,
758
+ "method": "btree",
759
+ "with": {}
760
+ }
761
+ },
762
+ "foreignKeys": {
763
+ "activity_logs_user_id_user_id_fk": {
764
+ "name": "activity_logs_user_id_user_id_fk",
765
+ "tableFrom": "activity_logs",
766
+ "tableTo": "user",
767
+ "schemaTo": "auth",
768
+ "columnsFrom": ["user_id"],
769
+ "columnsTo": ["id"],
770
+ "onDelete": "set null",
771
+ "onUpdate": "no action"
772
+ }
773
+ },
774
+ "compositePrimaryKeys": {},
775
+ "uniqueConstraints": {},
776
+ "policies": {},
777
+ "checkConstraints": {},
778
+ "isRLSEnabled": false
779
+ },
780
+ "system.analytics_page_views": {
781
+ "name": "analytics_page_views",
782
+ "schema": "system",
783
+ "columns": {
784
+ "id": {
785
+ "name": "id",
786
+ "type": "text",
787
+ "primaryKey": true,
788
+ "notNull": true,
789
+ "default": "gen_random_uuid()"
790
+ },
791
+ "timestamp": {
792
+ "name": "timestamp",
793
+ "type": "timestamp with time zone",
794
+ "primaryKey": false,
795
+ "notNull": true,
796
+ "default": "now()"
797
+ },
798
+ "app_name": {
799
+ "name": "app_name",
800
+ "type": "text",
801
+ "primaryKey": false,
802
+ "notNull": true,
803
+ "default": "'default'"
804
+ },
805
+ "page_path": {
806
+ "name": "page_path",
807
+ "type": "text",
808
+ "primaryKey": false,
809
+ "notNull": true
810
+ },
811
+ "page_title": {
812
+ "name": "page_title",
813
+ "type": "text",
814
+ "primaryKey": false,
815
+ "notNull": false
816
+ },
817
+ "visitor_hash": {
818
+ "name": "visitor_hash",
819
+ "type": "text",
820
+ "primaryKey": false,
821
+ "notNull": true
822
+ },
823
+ "session_hash": {
824
+ "name": "session_hash",
825
+ "type": "text",
826
+ "primaryKey": false,
827
+ "notNull": true,
828
+ "default": "gen_random_uuid()"
829
+ },
830
+ "is_entrance": {
831
+ "name": "is_entrance",
832
+ "type": "boolean",
833
+ "primaryKey": false,
834
+ "notNull": true,
835
+ "default": false
836
+ },
837
+ "referrer_url": {
838
+ "name": "referrer_url",
839
+ "type": "text",
840
+ "primaryKey": false,
841
+ "notNull": false
842
+ },
843
+ "referrer_domain": {
844
+ "name": "referrer_domain",
845
+ "type": "text",
846
+ "primaryKey": false,
847
+ "notNull": false
848
+ },
849
+ "utm_source": {
850
+ "name": "utm_source",
851
+ "type": "text",
852
+ "primaryKey": false,
853
+ "notNull": false
854
+ },
855
+ "utm_medium": {
856
+ "name": "utm_medium",
857
+ "type": "text",
858
+ "primaryKey": false,
859
+ "notNull": false
860
+ },
861
+ "utm_campaign": {
862
+ "name": "utm_campaign",
863
+ "type": "text",
864
+ "primaryKey": false,
865
+ "notNull": false
866
+ },
867
+ "utm_content": {
868
+ "name": "utm_content",
869
+ "type": "text",
870
+ "primaryKey": false,
871
+ "notNull": false
872
+ },
873
+ "utm_term": {
874
+ "name": "utm_term",
875
+ "type": "text",
876
+ "primaryKey": false,
877
+ "notNull": false
878
+ },
879
+ "device_type": {
880
+ "name": "device_type",
881
+ "type": "text",
882
+ "primaryKey": false,
883
+ "notNull": false
884
+ },
885
+ "browser_name": {
886
+ "name": "browser_name",
887
+ "type": "text",
888
+ "primaryKey": false,
889
+ "notNull": false
890
+ },
891
+ "os_name": {
892
+ "name": "os_name",
893
+ "type": "text",
894
+ "primaryKey": false,
895
+ "notNull": false
896
+ },
897
+ "language": {
898
+ "name": "language",
899
+ "type": "text",
900
+ "primaryKey": false,
901
+ "notNull": false
902
+ },
903
+ "screen_width": {
904
+ "name": "screen_width",
905
+ "type": "smallint",
906
+ "primaryKey": false,
907
+ "notNull": false
908
+ },
909
+ "screen_height": {
910
+ "name": "screen_height",
911
+ "type": "smallint",
912
+ "primaryKey": false,
913
+ "notNull": false
914
+ }
915
+ },
916
+ "indexes": {
917
+ "analytics_pv_app_timestamp_idx": {
918
+ "name": "analytics_pv_app_timestamp_idx",
919
+ "columns": [
920
+ {
921
+ "expression": "app_name",
922
+ "isExpression": false,
923
+ "asc": true,
924
+ "nulls": "last"
925
+ },
926
+ {
927
+ "expression": "timestamp",
928
+ "isExpression": false,
929
+ "asc": true,
930
+ "nulls": "last"
931
+ }
932
+ ],
933
+ "isUnique": false,
934
+ "concurrently": false,
935
+ "method": "btree",
936
+ "with": {}
937
+ },
938
+ "analytics_pv_app_visitor_timestamp_idx": {
939
+ "name": "analytics_pv_app_visitor_timestamp_idx",
940
+ "columns": [
941
+ {
942
+ "expression": "app_name",
943
+ "isExpression": false,
944
+ "asc": true,
945
+ "nulls": "last"
946
+ },
947
+ {
948
+ "expression": "visitor_hash",
949
+ "isExpression": false,
950
+ "asc": true,
951
+ "nulls": "last"
952
+ },
953
+ {
954
+ "expression": "timestamp",
955
+ "isExpression": false,
956
+ "asc": true,
957
+ "nulls": "last"
958
+ }
959
+ ],
960
+ "isUnique": false,
961
+ "concurrently": false,
962
+ "method": "btree",
963
+ "with": {}
964
+ },
965
+ "analytics_pv_app_path_timestamp_idx": {
966
+ "name": "analytics_pv_app_path_timestamp_idx",
967
+ "columns": [
968
+ {
969
+ "expression": "app_name",
970
+ "isExpression": false,
971
+ "asc": true,
972
+ "nulls": "last"
973
+ },
974
+ {
975
+ "expression": "page_path",
976
+ "isExpression": false,
977
+ "asc": true,
978
+ "nulls": "last"
979
+ },
980
+ {
981
+ "expression": "timestamp",
982
+ "isExpression": false,
983
+ "asc": true,
984
+ "nulls": "last"
985
+ }
986
+ ],
987
+ "isUnique": false,
988
+ "concurrently": false,
989
+ "method": "btree",
990
+ "with": {}
991
+ },
992
+ "analytics_pv_app_referrer_idx": {
993
+ "name": "analytics_pv_app_referrer_idx",
994
+ "columns": [
995
+ {
996
+ "expression": "app_name",
997
+ "isExpression": false,
998
+ "asc": true,
999
+ "nulls": "last"
1000
+ },
1001
+ {
1002
+ "expression": "referrer_domain",
1003
+ "isExpression": false,
1004
+ "asc": true,
1005
+ "nulls": "last"
1006
+ }
1007
+ ],
1008
+ "isUnique": false,
1009
+ "concurrently": false,
1010
+ "method": "btree",
1011
+ "with": {}
1012
+ },
1013
+ "analytics_pv_app_utm_source_idx": {
1014
+ "name": "analytics_pv_app_utm_source_idx",
1015
+ "columns": [
1016
+ {
1017
+ "expression": "app_name",
1018
+ "isExpression": false,
1019
+ "asc": true,
1020
+ "nulls": "last"
1021
+ },
1022
+ {
1023
+ "expression": "utm_source",
1024
+ "isExpression": false,
1025
+ "asc": true,
1026
+ "nulls": "last"
1027
+ }
1028
+ ],
1029
+ "isUnique": false,
1030
+ "concurrently": false,
1031
+ "method": "btree",
1032
+ "with": {}
1033
+ },
1034
+ "analytics_pv_app_device_idx": {
1035
+ "name": "analytics_pv_app_device_idx",
1036
+ "columns": [
1037
+ {
1038
+ "expression": "app_name",
1039
+ "isExpression": false,
1040
+ "asc": true,
1041
+ "nulls": "last"
1042
+ },
1043
+ {
1044
+ "expression": "device_type",
1045
+ "isExpression": false,
1046
+ "asc": true,
1047
+ "nulls": "last"
1048
+ }
1049
+ ],
1050
+ "isUnique": false,
1051
+ "concurrently": false,
1052
+ "method": "btree",
1053
+ "with": {}
1054
+ }
1055
+ },
1056
+ "foreignKeys": {},
1057
+ "compositePrimaryKeys": {},
1058
+ "uniqueConstraints": {},
1059
+ "policies": {},
1060
+ "checkConstraints": {},
1061
+ "isRLSEnabled": false
1062
+ },
1063
+ "system.record_comments": {
1064
+ "name": "record_comments",
1065
+ "schema": "system",
1066
+ "columns": {
1067
+ "id": {
1068
+ "name": "id",
1069
+ "type": "text",
1070
+ "primaryKey": true,
1071
+ "notNull": true
1072
+ },
1073
+ "record_id": {
1074
+ "name": "record_id",
1075
+ "type": "text",
1076
+ "primaryKey": false,
1077
+ "notNull": true
1078
+ },
1079
+ "table_id": {
1080
+ "name": "table_id",
1081
+ "type": "text",
1082
+ "primaryKey": false,
1083
+ "notNull": true
1084
+ },
1085
+ "user_id": {
1086
+ "name": "user_id",
1087
+ "type": "text",
1088
+ "primaryKey": false,
1089
+ "notNull": true
1090
+ },
1091
+ "content": {
1092
+ "name": "content",
1093
+ "type": "text",
1094
+ "primaryKey": false,
1095
+ "notNull": true
1096
+ },
1097
+ "created_at": {
1098
+ "name": "created_at",
1099
+ "type": "timestamp with time zone",
1100
+ "primaryKey": false,
1101
+ "notNull": true,
1102
+ "default": "now()"
1103
+ },
1104
+ "updated_at": {
1105
+ "name": "updated_at",
1106
+ "type": "timestamp with time zone",
1107
+ "primaryKey": false,
1108
+ "notNull": true,
1109
+ "default": "now()"
1110
+ },
1111
+ "deleted_at": {
1112
+ "name": "deleted_at",
1113
+ "type": "timestamp with time zone",
1114
+ "primaryKey": false,
1115
+ "notNull": false
1116
+ }
1117
+ },
1118
+ "indexes": {
1119
+ "record_comments_record_created_idx": {
1120
+ "name": "record_comments_record_created_idx",
1121
+ "columns": [
1122
+ {
1123
+ "expression": "table_id",
1124
+ "isExpression": false,
1125
+ "asc": true,
1126
+ "nulls": "last"
1127
+ },
1128
+ {
1129
+ "expression": "record_id",
1130
+ "isExpression": false,
1131
+ "asc": true,
1132
+ "nulls": "last"
1133
+ },
1134
+ {
1135
+ "expression": "created_at",
1136
+ "isExpression": false,
1137
+ "asc": true,
1138
+ "nulls": "last"
1139
+ }
1140
+ ],
1141
+ "isUnique": false,
1142
+ "concurrently": false,
1143
+ "method": "btree",
1144
+ "with": {}
1145
+ },
1146
+ "record_comments_user_created_idx": {
1147
+ "name": "record_comments_user_created_idx",
1148
+ "columns": [
1149
+ {
1150
+ "expression": "user_id",
1151
+ "isExpression": false,
1152
+ "asc": true,
1153
+ "nulls": "last"
1154
+ },
1155
+ {
1156
+ "expression": "created_at",
1157
+ "isExpression": false,
1158
+ "asc": true,
1159
+ "nulls": "last"
1160
+ }
1161
+ ],
1162
+ "isUnique": false,
1163
+ "concurrently": false,
1164
+ "method": "btree",
1165
+ "with": {}
1166
+ },
1167
+ "record_comments_deleted_at_idx": {
1168
+ "name": "record_comments_deleted_at_idx",
1169
+ "columns": [
1170
+ {
1171
+ "expression": "deleted_at",
1172
+ "isExpression": false,
1173
+ "asc": true,
1174
+ "nulls": "last"
1175
+ }
1176
+ ],
1177
+ "isUnique": false,
1178
+ "concurrently": false,
1179
+ "method": "btree",
1180
+ "with": {}
1181
+ }
1182
+ },
1183
+ "foreignKeys": {
1184
+ "record_comments_user_id_user_id_fk": {
1185
+ "name": "record_comments_user_id_user_id_fk",
1186
+ "tableFrom": "record_comments",
1187
+ "tableTo": "user",
1188
+ "schemaTo": "auth",
1189
+ "columnsFrom": ["user_id"],
1190
+ "columnsTo": ["id"],
1191
+ "onDelete": "cascade",
1192
+ "onUpdate": "no action"
1193
+ }
1194
+ },
1195
+ "compositePrimaryKeys": {},
1196
+ "uniqueConstraints": {},
1197
+ "policies": {},
1198
+ "checkConstraints": {},
1199
+ "isRLSEnabled": false
1200
+ }
1201
+ },
1202
+ "enums": {},
1203
+ "schemas": {
1204
+ "auth": "auth",
1205
+ "system": "system"
1206
+ },
1207
+ "sequences": {},
1208
+ "roles": {},
1209
+ "policies": {},
1210
+ "views": {},
1211
+ "_meta": {
1212
+ "columns": {},
1213
+ "schemas": {},
1214
+ "tables": {}
1215
+ }
1216
+ }