@trycompai/db 1.0.9 → 1.1.1

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 (236) hide show
  1. package/INTEGRATION_GUIDE.md +360 -0
  2. package/README.md +14 -2
  3. package/dist/index.d.mts +2 -5
  4. package/dist/index.d.ts +2 -5
  5. package/dist/index.js +3 -9
  6. package/dist/index.mjs +1 -4
  7. package/dist/prisma/schema.prisma +810 -0
  8. package/package.json +18 -18
  9. package/scripts/setup-consumer.sh +7 -2
  10. package/dist/prisma/migrations/20250403163138_init/migration.sql +0 -611
  11. package/dist/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +0 -29
  12. package/dist/prisma/migrations/20250403194504_risk_assignee/migration.sql +0 -18
  13. package/dist/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +0 -16
  14. package/dist/prisma/migrations/20250403205655_vendor_assignee/migration.sql +0 -22
  15. package/dist/prisma/migrations/20250403205840_oops_optional/migration.sql +0 -2
  16. package/dist/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +0 -8
  17. package/dist/prisma/migrations/20250404004853_stripecustomerid/migration.sql +0 -2
  18. package/dist/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +0 -20
  19. package/dist/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +0 -30
  20. package/dist/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +0 -12
  21. package/dist/prisma/migrations/20250414191353_onboarding_experience/migration.sql +0 -25
  22. package/dist/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +0 -2
  23. package/dist/prisma/migrations/20250417205622_add_global_vendors/migration.sql +0 -26
  24. package/dist/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +0 -86
  25. package/dist/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +0 -109
  26. package/dist/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +0 -2
  27. package/dist/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +0 -8
  28. package/dist/prisma/migrations/20250423154259_make_role_string/migration.sql +0 -9
  29. package/dist/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +0 -9
  30. package/dist/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +0 -14
  31. package/dist/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +0 -2
  32. package/dist/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +0 -2
  33. package/dist/prisma/migrations/20250509160401_added_framework_editor/migration.sql +0 -8
  34. package/dist/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +0 -122
  35. package/dist/prisma/migrations/20250509172401_drop_slug/migration.sql +0 -11
  36. package/dist/prisma/migrations/20250509232122_trust_portal/migration.sql +0 -24
  37. package/dist/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +0 -2
  38. package/dist/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +0 -2
  39. package/dist/prisma/migrations/20250512004633_added_identifier/migration.sql +0 -5
  40. package/dist/prisma/migrations/20250512115717_added_framework_status/migration.sql +0 -7
  41. package/dist/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +0 -2
  42. package/dist/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +0 -2
  43. package/dist/prisma/migrations/20250514144228_add_vercel_check/migration.sql +0 -2
  44. package/dist/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +0 -2
  45. package/dist/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +0 -23
  46. package/dist/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +0 -21
  47. package/dist/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +0 -11
  48. package/dist/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +0 -6
  49. package/dist/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +0 -69
  50. package/dist/prisma/migrations/20250516142234_make_entity_optional/migration.sql +0 -3
  51. package/dist/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +0 -16
  52. package/dist/prisma/migrations/20250516150558_drop_task_type/migration.sql +0 -2
  53. package/dist/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +0 -37
  54. package/dist/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +0 -5
  55. package/dist/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +0 -31
  56. package/dist/prisma/migrations/20250516162730_convert_framework_id/migration.sql +0 -5
  57. package/dist/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +0 -5
  58. package/dist/prisma/migrations/20250516164307_drop_enums/migration.sql +0 -5
  59. package/dist/prisma/migrations/20250516194123_add_cal_option/migration.sql +0 -2
  60. package/dist/prisma/migrations/20250518133218_add_booking_details/migration.sql +0 -2
  61. package/dist/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +0 -3
  62. package/dist/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +0 -2
  63. package/dist/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +0 -17
  64. package/dist/prisma/migrations/20250519172353_drop_artifacts/migration.sql +0 -56
  65. package/dist/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +0 -14
  66. package/dist/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +0 -2
  67. package/dist/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +0 -5
  68. package/dist/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +0 -2
  69. package/dist/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +0 -8
  70. package/dist/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +0 -9
  71. package/dist/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +0 -36
  72. package/dist/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +0 -2
  73. package/dist/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +0 -2
  74. package/dist/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +0 -29
  75. package/dist/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +0 -18
  76. package/dist/prisma/migrations/20250609130129_add_not_relevant/migration.sql +0 -2
  77. package/dist/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +0 -2
  78. package/dist/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +0 -2
  79. package/dist/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +0 -10
  80. package/dist/prisma/migrations/20250618001304_add_default_slug/migration.sql +0 -3
  81. package/dist/prisma/migrations/20250623184529_add_subscription_type/migration.sql +0 -12
  82. package/dist/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +0 -27
  83. package/dist/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +0 -2
  84. package/dist/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +0 -5
  85. package/dist/prisma/migrations/20250627180828_rename_completed_col/migration.sql +0 -15
  86. package/dist/prisma/migrations/20250708152414_add_had_call_col/migration.sql +0 -2
  87. package/dist/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +0 -7
  88. package/dist/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +0 -8
  89. package/dist/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +0 -31
  90. package/dist/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +0 -7
  91. package/dist/prisma/migrations/migration_lock.toml +0 -3
  92. package/dist/prisma/schema/attachments.prisma +0 -35
  93. package/dist/prisma/schema/auth.prisma +0 -122
  94. package/dist/prisma/schema/comment.prisma +0 -27
  95. package/dist/prisma/schema/context.prisma +0 -18
  96. package/dist/prisma/schema/control.prisma +0 -21
  97. package/dist/prisma/schema/framework-editor.prisma +0 -96
  98. package/dist/prisma/schema/framework.prisma +0 -14
  99. package/dist/prisma/schema/integration.prisma +0 -32
  100. package/dist/prisma/schema/onboarding.prisma +0 -18
  101. package/dist/prisma/schema/organization.prisma +0 -34
  102. package/dist/prisma/schema/policy.prisma +0 -32
  103. package/dist/prisma/schema/requirement.prisma +0 -15
  104. package/dist/prisma/schema/risk.prisma +0 -57
  105. package/dist/prisma/schema/shared.prisma +0 -104
  106. package/dist/prisma/schema/task.prisma +0 -41
  107. package/dist/prisma/schema/trust.prisma +0 -37
  108. package/dist/prisma/schema/vendor.prisma +0 -56
  109. package/dist/prisma/seed/frameworkEditorSchemas.js +0 -136
  110. package/dist/prisma/seed/frameworkEditorSchemas.ts +0 -178
  111. package/dist/prisma/seed/primitives/FrameworkEditorControlTemplate.json +0 -296
  112. package/dist/prisma/seed/primitives/FrameworkEditorFramework.json +0 -101
  113. package/dist/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +0 -6057
  114. package/dist/prisma/seed/primitives/FrameworkEditorRequirement.json +0 -7841
  115. package/dist/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +0 -308
  116. package/dist/prisma/seed/primitives/FrameworkEditorVideo.json +0 -47
  117. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +0 -178
  118. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +0 -470
  119. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +0 -142
  120. package/dist/prisma/seed/seed.js +0 -160
  121. package/dist/prisma/seed/seed.ts +0 -192
  122. package/prisma/functionDefinition.sql +0 -18
  123. package/prisma/migrations/20250403163138_init/migration.sql +0 -611
  124. package/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +0 -29
  125. package/prisma/migrations/20250403194504_risk_assignee/migration.sql +0 -18
  126. package/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +0 -16
  127. package/prisma/migrations/20250403205655_vendor_assignee/migration.sql +0 -22
  128. package/prisma/migrations/20250403205840_oops_optional/migration.sql +0 -2
  129. package/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +0 -8
  130. package/prisma/migrations/20250404004853_stripecustomerid/migration.sql +0 -2
  131. package/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +0 -20
  132. package/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +0 -30
  133. package/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +0 -12
  134. package/prisma/migrations/20250414191353_onboarding_experience/migration.sql +0 -25
  135. package/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +0 -2
  136. package/prisma/migrations/20250417205622_add_global_vendors/migration.sql +0 -26
  137. package/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +0 -86
  138. package/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +0 -109
  139. package/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +0 -2
  140. package/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +0 -8
  141. package/prisma/migrations/20250423154259_make_role_string/migration.sql +0 -9
  142. package/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +0 -9
  143. package/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +0 -14
  144. package/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +0 -2
  145. package/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +0 -2
  146. package/prisma/migrations/20250509160401_added_framework_editor/migration.sql +0 -8
  147. package/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +0 -122
  148. package/prisma/migrations/20250509172401_drop_slug/migration.sql +0 -11
  149. package/prisma/migrations/20250509232122_trust_portal/migration.sql +0 -24
  150. package/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +0 -2
  151. package/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +0 -2
  152. package/prisma/migrations/20250512004633_added_identifier/migration.sql +0 -5
  153. package/prisma/migrations/20250512115717_added_framework_status/migration.sql +0 -7
  154. package/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +0 -2
  155. package/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +0 -2
  156. package/prisma/migrations/20250514144228_add_vercel_check/migration.sql +0 -2
  157. package/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +0 -2
  158. package/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +0 -23
  159. package/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +0 -21
  160. package/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +0 -11
  161. package/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +0 -6
  162. package/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +0 -69
  163. package/prisma/migrations/20250516142234_make_entity_optional/migration.sql +0 -3
  164. package/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +0 -16
  165. package/prisma/migrations/20250516150558_drop_task_type/migration.sql +0 -2
  166. package/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +0 -37
  167. package/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +0 -5
  168. package/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +0 -31
  169. package/prisma/migrations/20250516162730_convert_framework_id/migration.sql +0 -5
  170. package/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +0 -5
  171. package/prisma/migrations/20250516164307_drop_enums/migration.sql +0 -5
  172. package/prisma/migrations/20250516194123_add_cal_option/migration.sql +0 -2
  173. package/prisma/migrations/20250518133218_add_booking_details/migration.sql +0 -2
  174. package/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +0 -3
  175. package/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +0 -2
  176. package/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +0 -17
  177. package/prisma/migrations/20250519172353_drop_artifacts/migration.sql +0 -56
  178. package/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +0 -14
  179. package/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +0 -2
  180. package/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +0 -5
  181. package/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +0 -2
  182. package/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +0 -8
  183. package/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +0 -9
  184. package/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +0 -36
  185. package/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +0 -2
  186. package/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +0 -2
  187. package/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +0 -29
  188. package/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +0 -18
  189. package/prisma/migrations/20250609130129_add_not_relevant/migration.sql +0 -2
  190. package/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +0 -2
  191. package/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +0 -2
  192. package/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +0 -10
  193. package/prisma/migrations/20250618001304_add_default_slug/migration.sql +0 -3
  194. package/prisma/migrations/20250623184529_add_subscription_type/migration.sql +0 -12
  195. package/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +0 -27
  196. package/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +0 -2
  197. package/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +0 -5
  198. package/prisma/migrations/20250627180828_rename_completed_col/migration.sql +0 -15
  199. package/prisma/migrations/20250708152414_add_had_call_col/migration.sql +0 -2
  200. package/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +0 -7
  201. package/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +0 -8
  202. package/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +0 -31
  203. package/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +0 -7
  204. package/prisma/migrations/migration_lock.toml +0 -3
  205. package/prisma/randomSecret.sql +0 -12
  206. package/prisma/schema/attachments.prisma +0 -35
  207. package/prisma/schema/auth.prisma +0 -122
  208. package/prisma/schema/comment.prisma +0 -27
  209. package/prisma/schema/context.prisma +0 -18
  210. package/prisma/schema/control.prisma +0 -21
  211. package/prisma/schema/framework-editor.prisma +0 -96
  212. package/prisma/schema/framework.prisma +0 -14
  213. package/prisma/schema/integration.prisma +0 -32
  214. package/prisma/schema/onboarding.prisma +0 -18
  215. package/prisma/schema/organization.prisma +0 -34
  216. package/prisma/schema/policy.prisma +0 -32
  217. package/prisma/schema/requirement.prisma +0 -15
  218. package/prisma/schema/risk.prisma +0 -57
  219. package/prisma/schema/shared.prisma +0 -104
  220. package/prisma/schema/task.prisma +0 -41
  221. package/prisma/schema/trust.prisma +0 -37
  222. package/prisma/schema/vendor.prisma +0 -56
  223. package/prisma/schema.prisma +0 -12
  224. package/prisma/seed/frameworkEditorSchemas.js +0 -136
  225. package/prisma/seed/frameworkEditorSchemas.ts +0 -178
  226. package/prisma/seed/primitives/FrameworkEditorControlTemplate.json +0 -296
  227. package/prisma/seed/primitives/FrameworkEditorFramework.json +0 -101
  228. package/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +0 -6057
  229. package/prisma/seed/primitives/FrameworkEditorRequirement.json +0 -7841
  230. package/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +0 -308
  231. package/prisma/seed/primitives/FrameworkEditorVideo.json +0 -47
  232. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +0 -178
  233. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +0 -470
  234. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +0 -142
  235. package/prisma/seed/seed.js +0 -160
  236. package/prisma/seed/seed.ts +0 -192
@@ -0,0 +1,360 @@
1
+ # Integration Guide: Using @trycompai/db in Another Turborepo
2
+
3
+ This guide walks you through integrating the `@trycompai/db` package into another Turborepo-based repository.
4
+
5
+ ## Prerequisites
6
+
7
+ - Node.js 18+ and npm/yarn/bun
8
+ - A Turborepo-based project
9
+ - PostgreSQL database (local or cloud)
10
+
11
+ ## Step 1: Install the Package
12
+
13
+ In your app directory (e.g., `apps/web` or `apps/api`):
14
+
15
+ ```bash
16
+ cd apps/your-app
17
+ bun add @trycompai/db @prisma/client prisma
18
+ ```
19
+
20
+ ## Step 2: Set Up Environment Variables
21
+
22
+ Create or update `.env` in your app directory:
23
+
24
+ ```env
25
+ DATABASE_URL="postgresql://user:password@localhost:5432/your_database"
26
+ ```
27
+
28
+ ## Step 3: Generate Prisma Client
29
+
30
+ Run from your app directory:
31
+
32
+ ```bash
33
+ npx prisma generate --schema=node_modules/@trycompai/db/dist/prisma/schema.prisma
34
+ ```
35
+
36
+ **Pro tip**: Add this to your app's `package.json` scripts:
37
+
38
+ ```json
39
+ {
40
+ "scripts": {
41
+ "db:generate": "prisma generate --schema=node_modules/@trycompai/db/dist/prisma/schema.prisma",
42
+ "postinstall": "npm run db:generate"
43
+ }
44
+ }
45
+ ```
46
+
47
+ ## Step 4: Create Database Instance
48
+
49
+ Create `lib/db.ts` (or `src/lib/db.ts`) in your app:
50
+
51
+ ```typescript
52
+ import { PrismaClient } from '@prisma/client';
53
+
54
+ const globalForPrisma = globalThis as unknown as {
55
+ prisma: PrismaClient | undefined;
56
+ };
57
+
58
+ export const db =
59
+ globalForPrisma.prisma ??
60
+ new PrismaClient({
61
+ log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
62
+ });
63
+
64
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = db;
65
+ ```
66
+
67
+ ## Step 5: Update Turborepo Configuration
68
+
69
+ Add to your root `turbo.json`:
70
+
71
+ ```json
72
+ {
73
+ "pipeline": {
74
+ "db:generate": {
75
+ "cache": false,
76
+ "outputs": ["node_modules/.prisma/**"]
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ## Step 6: Use in Your Application
83
+
84
+ ### In Next.js Server Components
85
+
86
+ ```typescript
87
+ import { db } from '@/lib/db';
88
+ import type { User } from '@trycompai/db';
89
+
90
+ export default async function UsersPage() {
91
+ const users: User[] = await db.user.findMany();
92
+
93
+ return (
94
+ <div>
95
+ {users.map(user => (
96
+ <div key={user.id}>{user.name}</div>
97
+ ))}
98
+ </div>
99
+ );
100
+ }
101
+ ```
102
+
103
+ ### In API Routes (Next.js App Router)
104
+
105
+ ```typescript
106
+ import { NextResponse } from 'next/server';
107
+ import { db } from '@/lib/db';
108
+ import type { Prisma } from '@trycompai/db';
109
+
110
+ export async function POST(request: Request) {
111
+ const data = (await request.json()) as Prisma.UserCreateInput;
112
+
113
+ const user = await db.user.create({
114
+ data,
115
+ });
116
+
117
+ return NextResponse.json(user);
118
+ }
119
+ ```
120
+
121
+ ### In Server Actions
122
+
123
+ ```typescript
124
+ 'use server';
125
+
126
+ import { db } from '@/lib/db';
127
+ import type { User, Prisma } from '@trycompai/db';
128
+
129
+ export async function createUser(data: Prisma.UserCreateInput): Promise<User> {
130
+ return await db.user.create({ data });
131
+ }
132
+ ```
133
+
134
+ ### In tRPC Procedures
135
+
136
+ ```typescript
137
+ import { z } from 'zod';
138
+ import { router, publicProcedure } from '@/server/trpc';
139
+ import { db } from '@/lib/db';
140
+ import type { User } from '@trycompai/db';
141
+
142
+ export const userRouter = router({
143
+ getAll: publicProcedure.query(async (): Promise<User[]> => {
144
+ return await db.user.findMany();
145
+ }),
146
+
147
+ create: publicProcedure
148
+ .input(
149
+ z.object({
150
+ email: z.string().email(),
151
+ name: z.string(),
152
+ }),
153
+ )
154
+ .mutation(async ({ input }) => {
155
+ return await db.user.create({
156
+ data: input,
157
+ });
158
+ }),
159
+ });
160
+ ```
161
+
162
+ ## Step 7: TypeScript Configuration
163
+
164
+ Ensure your `tsconfig.json` includes:
165
+
166
+ ```json
167
+ {
168
+ "compilerOptions": {
169
+ "paths": {
170
+ "@/*": ["./src/*"],
171
+ "@trycompai/db": ["node_modules/@trycompai/db"]
172
+ }
173
+ }
174
+ }
175
+ ```
176
+
177
+ ## Common Patterns
178
+
179
+ ### Type-Safe Queries
180
+
181
+ ```typescript
182
+ import type { Prisma } from '@trycompai/db';
183
+
184
+ // Type-safe where clauses
185
+ const whereClause: Prisma.UserWhereInput = {
186
+ email: { contains: '@example.com' },
187
+ createdAt: { gte: new Date('2024-01-01') },
188
+ };
189
+
190
+ const users = await db.user.findMany({ where: whereClause });
191
+ ```
192
+
193
+ ### Including Relations
194
+
195
+ ```typescript
196
+ const usersWithOrganizations = await db.user.findMany({
197
+ include: {
198
+ organization: true,
199
+ memberships: {
200
+ include: {
201
+ organization: true,
202
+ },
203
+ },
204
+ },
205
+ });
206
+ ```
207
+
208
+ ### Transactions
209
+
210
+ ```typescript
211
+ import type { User, Organization } from '@trycompai/db';
212
+
213
+ const result = await db.$transaction(async (tx) => {
214
+ const org = await tx.organization.create({
215
+ data: { name: 'New Org' },
216
+ });
217
+
218
+ const user = await tx.user.create({
219
+ data: {
220
+ email: 'user@example.com',
221
+ name: 'John Doe',
222
+ organizationId: org.id,
223
+ },
224
+ });
225
+
226
+ return { user, org };
227
+ });
228
+ ```
229
+
230
+ ## Turborepo-Specific Tips
231
+
232
+ ### 1. Workspace Dependencies
233
+
234
+ In your app's `package.json`:
235
+
236
+ ```json
237
+ {
238
+ "dependencies": {
239
+ "@trycompai/db": "^1.1.0"
240
+ }
241
+ }
242
+ ```
243
+
244
+ ### 2. Development Workflow
245
+
246
+ ```bash
247
+ # From root of your turborepo
248
+ turbo run dev --filter=your-app
249
+
250
+ # Run database generation across all apps
251
+ turbo run db:generate
252
+ ```
253
+
254
+ ### 3. CI/CD Pipeline
255
+
256
+ Add to your CI workflow:
257
+
258
+ ```yaml
259
+ - name: Generate Prisma Client
260
+ run: turbo run db:generate
261
+ ```
262
+
263
+ ## Troubleshooting
264
+
265
+ ### "Cannot find module '@prisma/client'"
266
+
267
+ Run `npx prisma generate --schema=node_modules/@trycompai/db/dist/prisma/schema.prisma` in your app directory.
268
+
269
+ ### "PrismaClient is unable to be run in the browser"
270
+
271
+ Ensure you're only importing and using the database client in server-side code:
272
+
273
+ - Server Components
274
+ - API Routes
275
+ - Server Actions
276
+ - Backend services
277
+
278
+ ### Type errors with Prisma types
279
+
280
+ 1. Ensure `@prisma/client` version matches the one in `@trycompai/db`
281
+ 2. Regenerate the client: `npm run db:generate`
282
+ 3. Restart TypeScript server in your IDE
283
+
284
+ ### Connection issues
285
+
286
+ 1. Verify `DATABASE_URL` is set correctly
287
+ 2. Check database is running and accessible
288
+ 3. For SSL connections, add `?sslmode=require` to your connection string
289
+
290
+ ## Best Practices
291
+
292
+ 1. **Never import `db` in client components** - it will fail at runtime
293
+ 2. **Use type imports for client code**: `import type { User } from '@trycompai/db'`
294
+ 3. **Handle errors gracefully** - wrap database calls in try/catch
295
+ 4. **Use transactions** for operations that must succeed together
296
+ 5. **Enable query logging** only in development to avoid performance impact
297
+
298
+ ## Example Full Setup
299
+
300
+ Here's a complete example for a Next.js app in a Turborepo:
301
+
302
+ ```typescript
303
+ // apps/web/lib/db.ts
304
+ import { PrismaClient } from '@prisma/client';
305
+
306
+ const globalForPrisma = globalThis as unknown as {
307
+ prisma: PrismaClient | undefined;
308
+ };
309
+
310
+ export const db =
311
+ globalForPrisma.prisma ??
312
+ new PrismaClient({
313
+ log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
314
+ });
315
+
316
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = db;
317
+
318
+ // apps/web/app/users/page.tsx
319
+ import { db } from '@/lib/db';
320
+ import type { User } from '@trycompai/db';
321
+
322
+ export default async function UsersPage() {
323
+ const users: User[] = await db.user.findMany({
324
+ orderBy: { createdAt: 'desc' },
325
+ });
326
+
327
+ return (
328
+ <div>
329
+ <h1>Users ({users.length})</h1>
330
+ {users.map(user => (
331
+ <div key={user.id}>
332
+ <h2>{user.name}</h2>
333
+ <p>{user.email}</p>
334
+ </div>
335
+ ))}
336
+ </div>
337
+ );
338
+ }
339
+ ```
340
+
341
+ ## Schema Information
342
+
343
+ The package maintains **separate schemas for development and distribution**:
344
+
345
+ **Development**: Multiple organized schema files in `prisma/schema/` for better maintainability
346
+ **Distribution**: Single combined `dist/prisma/schema.prisma` file for consumers
347
+
348
+ The build process combines:
349
+
350
+ - Base configuration and datasource
351
+ - All model definitions from the `schema/` directory
352
+ - Proper relationships and constraints
353
+
354
+ This ensures your development setup stays clean while providing consumers with a simple single-file schema.
355
+
356
+ ## Need Help?
357
+
358
+ - Check the [Prisma documentation](https://www.prisma.io/docs)
359
+ - Review the combined schema at `node_modules/@trycompai/db/dist/prisma/schema.prisma`
360
+ - Look at type definitions with IDE autocomplete
package/README.md CHANGED
@@ -23,7 +23,7 @@ bun add @trycompai/db @prisma/client prisma
23
23
 
24
24
  ```bash
25
25
  # Run this in your app directory after installing
26
- npx prisma generate --schema=node_modules/@trycompai/db/prisma/schema.prisma
26
+ npx prisma generate --schema=node_modules/@trycompai/db/dist/prisma/schema.prisma
27
27
  ```
28
28
 
29
29
  2. **Create your database instance** (`lib/db.ts`):
@@ -48,10 +48,18 @@ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = db;
48
48
 
49
49
  ```typescript
50
50
  import { db } from '@/lib/db';
51
- import type { User, Organization } from '@trycompai/db';
51
+ import type { User, Organization, Prisma } from '@trycompai/db';
52
52
 
53
53
  // Full type safety!
54
54
  const users: User[] = await db.user.findMany();
55
+
56
+ // Create with type-safe input
57
+ const newUser = await db.user.create({
58
+ data: {
59
+ email: 'user@example.com',
60
+ name: 'John Doe',
61
+ } satisfies Prisma.UserCreateInput,
62
+ });
55
63
  ```
56
64
 
57
65
  ## Why This Approach?
@@ -69,3 +77,7 @@ To update the schema:
69
77
  2. Run migrations: `bun run db:migrate`
70
78
  3. Regenerate types: `bun run build`
71
79
  4. Update version and publish
80
+
81
+ ## Integration Guide
82
+
83
+ For detailed instructions on using this package in another Turborepo, see [INTEGRATION_GUIDE.md](./INTEGRATION_GUIDE.md).
package/dist/index.d.mts CHANGED
@@ -1,5 +1,2 @@
1
- export { Organization, Prisma, PrismaClient, User } from '@prisma/client';
2
-
3
- declare const DATABASE_URL: string;
4
-
5
- export { DATABASE_URL };
1
+ export * from '@prisma/client';
2
+ export { PrismaClient } from '@prisma/client';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,2 @@
1
- export { Organization, Prisma, PrismaClient, User } from '@prisma/client';
2
-
3
- declare const DATABASE_URL: string;
4
-
5
- export { DATABASE_URL };
1
+ export * from '@prisma/client';
2
+ export { PrismaClient } from '@prisma/client';
package/dist/index.js CHANGED
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
6
  var __copyProps = (to, from, except, desc) => {
11
7
  if (from && typeof from === "object" || typeof from === "function") {
12
8
  for (let key of __getOwnPropNames(from))
@@ -15,16 +11,14 @@ var __copyProps = (to, from, except, desc) => {
15
11
  }
16
12
  return to;
17
13
  };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
16
 
20
17
  // src/index.ts
21
18
  var index_exports = {};
22
- __export(index_exports, {
23
- DATABASE_URL: () => DATABASE_URL
24
- });
25
19
  module.exports = __toCommonJS(index_exports);
26
- var DATABASE_URL = process.env.DATABASE_URL || "";
20
+ __reExport(index_exports, require("@prisma/client"), module.exports);
27
21
  // Annotate the CommonJS export names for ESM import in node:
28
22
  0 && (module.exports = {
29
- DATABASE_URL
23
+ ...require("@prisma/client")
30
24
  });
package/dist/index.mjs CHANGED
@@ -1,5 +1,2 @@
1
1
  // src/index.ts
2
- var DATABASE_URL = process.env.DATABASE_URL || "";
3
- export {
4
- DATABASE_URL
5
- };
2
+ export * from "@prisma/client";