@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.
- package/INTEGRATION_GUIDE.md +360 -0
- package/README.md +14 -2
- package/dist/index.d.mts +2 -5
- package/dist/index.d.ts +2 -5
- package/dist/index.js +3 -9
- package/dist/index.mjs +1 -4
- package/dist/prisma/schema.prisma +810 -0
- package/package.json +18 -18
- package/scripts/setup-consumer.sh +7 -2
- package/dist/prisma/migrations/20250403163138_init/migration.sql +0 -611
- package/dist/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +0 -29
- package/dist/prisma/migrations/20250403194504_risk_assignee/migration.sql +0 -18
- package/dist/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +0 -16
- package/dist/prisma/migrations/20250403205655_vendor_assignee/migration.sql +0 -22
- package/dist/prisma/migrations/20250403205840_oops_optional/migration.sql +0 -2
- package/dist/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +0 -8
- package/dist/prisma/migrations/20250404004853_stripecustomerid/migration.sql +0 -2
- package/dist/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +0 -20
- package/dist/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +0 -30
- package/dist/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +0 -12
- package/dist/prisma/migrations/20250414191353_onboarding_experience/migration.sql +0 -25
- package/dist/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +0 -2
- package/dist/prisma/migrations/20250417205622_add_global_vendors/migration.sql +0 -26
- package/dist/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +0 -86
- package/dist/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +0 -109
- package/dist/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +0 -2
- package/dist/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +0 -8
- package/dist/prisma/migrations/20250423154259_make_role_string/migration.sql +0 -9
- package/dist/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +0 -9
- package/dist/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +0 -14
- package/dist/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +0 -2
- package/dist/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +0 -2
- package/dist/prisma/migrations/20250509160401_added_framework_editor/migration.sql +0 -8
- package/dist/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +0 -122
- package/dist/prisma/migrations/20250509172401_drop_slug/migration.sql +0 -11
- package/dist/prisma/migrations/20250509232122_trust_portal/migration.sql +0 -24
- package/dist/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +0 -2
- package/dist/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +0 -2
- package/dist/prisma/migrations/20250512004633_added_identifier/migration.sql +0 -5
- package/dist/prisma/migrations/20250512115717_added_framework_status/migration.sql +0 -7
- package/dist/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +0 -2
- package/dist/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +0 -2
- package/dist/prisma/migrations/20250514144228_add_vercel_check/migration.sql +0 -2
- package/dist/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +0 -2
- package/dist/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +0 -23
- package/dist/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +0 -21
- package/dist/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +0 -11
- package/dist/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +0 -6
- package/dist/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +0 -69
- package/dist/prisma/migrations/20250516142234_make_entity_optional/migration.sql +0 -3
- package/dist/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +0 -16
- package/dist/prisma/migrations/20250516150558_drop_task_type/migration.sql +0 -2
- package/dist/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +0 -37
- package/dist/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +0 -5
- package/dist/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +0 -31
- package/dist/prisma/migrations/20250516162730_convert_framework_id/migration.sql +0 -5
- package/dist/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +0 -5
- package/dist/prisma/migrations/20250516164307_drop_enums/migration.sql +0 -5
- package/dist/prisma/migrations/20250516194123_add_cal_option/migration.sql +0 -2
- package/dist/prisma/migrations/20250518133218_add_booking_details/migration.sql +0 -2
- package/dist/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +0 -3
- package/dist/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +0 -2
- package/dist/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +0 -17
- package/dist/prisma/migrations/20250519172353_drop_artifacts/migration.sql +0 -56
- package/dist/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +0 -14
- package/dist/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +0 -2
- package/dist/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +0 -5
- package/dist/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +0 -2
- package/dist/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +0 -8
- package/dist/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +0 -9
- package/dist/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +0 -36
- package/dist/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +0 -2
- package/dist/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +0 -2
- package/dist/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +0 -29
- package/dist/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +0 -18
- package/dist/prisma/migrations/20250609130129_add_not_relevant/migration.sql +0 -2
- package/dist/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +0 -2
- package/dist/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +0 -2
- package/dist/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +0 -10
- package/dist/prisma/migrations/20250618001304_add_default_slug/migration.sql +0 -3
- package/dist/prisma/migrations/20250623184529_add_subscription_type/migration.sql +0 -12
- package/dist/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +0 -27
- package/dist/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +0 -2
- package/dist/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +0 -5
- package/dist/prisma/migrations/20250627180828_rename_completed_col/migration.sql +0 -15
- package/dist/prisma/migrations/20250708152414_add_had_call_col/migration.sql +0 -2
- package/dist/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +0 -7
- package/dist/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +0 -8
- package/dist/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +0 -31
- package/dist/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +0 -7
- package/dist/prisma/migrations/migration_lock.toml +0 -3
- package/dist/prisma/schema/attachments.prisma +0 -35
- package/dist/prisma/schema/auth.prisma +0 -122
- package/dist/prisma/schema/comment.prisma +0 -27
- package/dist/prisma/schema/context.prisma +0 -18
- package/dist/prisma/schema/control.prisma +0 -21
- package/dist/prisma/schema/framework-editor.prisma +0 -96
- package/dist/prisma/schema/framework.prisma +0 -14
- package/dist/prisma/schema/integration.prisma +0 -32
- package/dist/prisma/schema/onboarding.prisma +0 -18
- package/dist/prisma/schema/organization.prisma +0 -34
- package/dist/prisma/schema/policy.prisma +0 -32
- package/dist/prisma/schema/requirement.prisma +0 -15
- package/dist/prisma/schema/risk.prisma +0 -57
- package/dist/prisma/schema/shared.prisma +0 -104
- package/dist/prisma/schema/task.prisma +0 -41
- package/dist/prisma/schema/trust.prisma +0 -37
- package/dist/prisma/schema/vendor.prisma +0 -56
- package/dist/prisma/seed/frameworkEditorSchemas.js +0 -136
- package/dist/prisma/seed/frameworkEditorSchemas.ts +0 -178
- package/dist/prisma/seed/primitives/FrameworkEditorControlTemplate.json +0 -296
- package/dist/prisma/seed/primitives/FrameworkEditorFramework.json +0 -101
- package/dist/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +0 -6057
- package/dist/prisma/seed/primitives/FrameworkEditorRequirement.json +0 -7841
- package/dist/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +0 -308
- package/dist/prisma/seed/primitives/FrameworkEditorVideo.json +0 -47
- package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +0 -178
- package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +0 -470
- package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +0 -142
- package/dist/prisma/seed/seed.js +0 -160
- package/dist/prisma/seed/seed.ts +0 -192
- package/prisma/functionDefinition.sql +0 -18
- package/prisma/migrations/20250403163138_init/migration.sql +0 -611
- package/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +0 -29
- package/prisma/migrations/20250403194504_risk_assignee/migration.sql +0 -18
- package/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +0 -16
- package/prisma/migrations/20250403205655_vendor_assignee/migration.sql +0 -22
- package/prisma/migrations/20250403205840_oops_optional/migration.sql +0 -2
- package/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +0 -8
- package/prisma/migrations/20250404004853_stripecustomerid/migration.sql +0 -2
- package/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +0 -20
- package/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +0 -30
- package/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +0 -12
- package/prisma/migrations/20250414191353_onboarding_experience/migration.sql +0 -25
- package/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +0 -2
- package/prisma/migrations/20250417205622_add_global_vendors/migration.sql +0 -26
- package/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +0 -86
- package/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +0 -109
- package/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +0 -2
- package/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +0 -8
- package/prisma/migrations/20250423154259_make_role_string/migration.sql +0 -9
- package/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +0 -9
- package/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +0 -14
- package/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +0 -2
- package/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +0 -2
- package/prisma/migrations/20250509160401_added_framework_editor/migration.sql +0 -8
- package/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +0 -122
- package/prisma/migrations/20250509172401_drop_slug/migration.sql +0 -11
- package/prisma/migrations/20250509232122_trust_portal/migration.sql +0 -24
- package/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +0 -2
- package/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +0 -2
- package/prisma/migrations/20250512004633_added_identifier/migration.sql +0 -5
- package/prisma/migrations/20250512115717_added_framework_status/migration.sql +0 -7
- package/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +0 -2
- package/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +0 -2
- package/prisma/migrations/20250514144228_add_vercel_check/migration.sql +0 -2
- package/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +0 -2
- package/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +0 -23
- package/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +0 -21
- package/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +0 -11
- package/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +0 -6
- package/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +0 -69
- package/prisma/migrations/20250516142234_make_entity_optional/migration.sql +0 -3
- package/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +0 -16
- package/prisma/migrations/20250516150558_drop_task_type/migration.sql +0 -2
- package/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +0 -37
- package/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +0 -5
- package/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +0 -31
- package/prisma/migrations/20250516162730_convert_framework_id/migration.sql +0 -5
- package/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +0 -5
- package/prisma/migrations/20250516164307_drop_enums/migration.sql +0 -5
- package/prisma/migrations/20250516194123_add_cal_option/migration.sql +0 -2
- package/prisma/migrations/20250518133218_add_booking_details/migration.sql +0 -2
- package/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +0 -3
- package/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +0 -2
- package/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +0 -17
- package/prisma/migrations/20250519172353_drop_artifacts/migration.sql +0 -56
- package/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +0 -14
- package/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +0 -2
- package/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +0 -5
- package/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +0 -2
- package/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +0 -8
- package/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +0 -9
- package/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +0 -36
- package/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +0 -2
- package/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +0 -2
- package/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +0 -29
- package/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +0 -18
- package/prisma/migrations/20250609130129_add_not_relevant/migration.sql +0 -2
- package/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +0 -2
- package/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +0 -2
- package/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +0 -10
- package/prisma/migrations/20250618001304_add_default_slug/migration.sql +0 -3
- package/prisma/migrations/20250623184529_add_subscription_type/migration.sql +0 -12
- package/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +0 -27
- package/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +0 -2
- package/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +0 -5
- package/prisma/migrations/20250627180828_rename_completed_col/migration.sql +0 -15
- package/prisma/migrations/20250708152414_add_had_call_col/migration.sql +0 -2
- package/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +0 -7
- package/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +0 -8
- package/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +0 -31
- package/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +0 -7
- package/prisma/migrations/migration_lock.toml +0 -3
- package/prisma/randomSecret.sql +0 -12
- package/prisma/schema/attachments.prisma +0 -35
- package/prisma/schema/auth.prisma +0 -122
- package/prisma/schema/comment.prisma +0 -27
- package/prisma/schema/context.prisma +0 -18
- package/prisma/schema/control.prisma +0 -21
- package/prisma/schema/framework-editor.prisma +0 -96
- package/prisma/schema/framework.prisma +0 -14
- package/prisma/schema/integration.prisma +0 -32
- package/prisma/schema/onboarding.prisma +0 -18
- package/prisma/schema/organization.prisma +0 -34
- package/prisma/schema/policy.prisma +0 -32
- package/prisma/schema/requirement.prisma +0 -15
- package/prisma/schema/risk.prisma +0 -57
- package/prisma/schema/shared.prisma +0 -104
- package/prisma/schema/task.prisma +0 -41
- package/prisma/schema/trust.prisma +0 -37
- package/prisma/schema/vendor.prisma +0 -56
- package/prisma/schema.prisma +0 -12
- package/prisma/seed/frameworkEditorSchemas.js +0 -136
- package/prisma/seed/frameworkEditorSchemas.ts +0 -178
- package/prisma/seed/primitives/FrameworkEditorControlTemplate.json +0 -296
- package/prisma/seed/primitives/FrameworkEditorFramework.json +0 -101
- package/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +0 -6057
- package/prisma/seed/primitives/FrameworkEditorRequirement.json +0 -7841
- package/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +0 -308
- package/prisma/seed/primitives/FrameworkEditorVideo.json +0 -47
- package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +0 -178
- package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +0 -470
- package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +0 -142
- package/prisma/seed/seed.js +0 -160
- 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
package/dist/index.d.ts
CHANGED
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
|
-
|
|
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
|
-
|
|
23
|
+
...require("@prisma/client")
|
|
30
24
|
});
|
package/dist/index.mjs
CHANGED