@trycompai/db 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/dist/index.d.mts +9 -0
  2. package/dist/index.d.ts +9 -0
  3. package/dist/index.js +39 -0
  4. package/dist/index.mjs +14 -0
  5. package/dist/prisma/functionDefinition.sql +18 -0
  6. package/dist/prisma/migrations/20250403163138_init/migration.sql +611 -0
  7. package/dist/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +29 -0
  8. package/dist/prisma/migrations/20250403194504_risk_assignee/migration.sql +18 -0
  9. package/dist/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +16 -0
  10. package/dist/prisma/migrations/20250403205655_vendor_assignee/migration.sql +22 -0
  11. package/dist/prisma/migrations/20250403205840_oops_optional/migration.sql +2 -0
  12. package/dist/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +8 -0
  13. package/dist/prisma/migrations/20250404004853_stripecustomerid/migration.sql +2 -0
  14. package/dist/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +20 -0
  15. package/dist/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +30 -0
  16. package/dist/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +12 -0
  17. package/dist/prisma/migrations/20250414191353_onboarding_experience/migration.sql +25 -0
  18. package/dist/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +2 -0
  19. package/dist/prisma/migrations/20250417205622_add_global_vendors/migration.sql +26 -0
  20. package/dist/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +86 -0
  21. package/dist/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +109 -0
  22. package/dist/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +2 -0
  23. package/dist/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +8 -0
  24. package/dist/prisma/migrations/20250423154259_make_role_string/migration.sql +9 -0
  25. package/dist/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +9 -0
  26. package/dist/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +14 -0
  27. package/dist/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +2 -0
  28. package/dist/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +2 -0
  29. package/dist/prisma/migrations/20250509160401_added_framework_editor/migration.sql +8 -0
  30. package/dist/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +122 -0
  31. package/dist/prisma/migrations/20250509172401_drop_slug/migration.sql +11 -0
  32. package/dist/prisma/migrations/20250509232122_trust_portal/migration.sql +24 -0
  33. package/dist/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +2 -0
  34. package/dist/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +2 -0
  35. package/dist/prisma/migrations/20250512004633_added_identifier/migration.sql +5 -0
  36. package/dist/prisma/migrations/20250512115717_added_framework_status/migration.sql +7 -0
  37. package/dist/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +2 -0
  38. package/dist/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +2 -0
  39. package/dist/prisma/migrations/20250514144228_add_vercel_check/migration.sql +2 -0
  40. package/dist/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +2 -0
  41. package/dist/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +23 -0
  42. package/dist/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +21 -0
  43. package/dist/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +11 -0
  44. package/dist/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +6 -0
  45. package/dist/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +69 -0
  46. package/dist/prisma/migrations/20250516142234_make_entity_optional/migration.sql +3 -0
  47. package/dist/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +16 -0
  48. package/dist/prisma/migrations/20250516150558_drop_task_type/migration.sql +2 -0
  49. package/dist/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +37 -0
  50. package/dist/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +5 -0
  51. package/dist/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +31 -0
  52. package/dist/prisma/migrations/20250516162730_convert_framework_id/migration.sql +5 -0
  53. package/dist/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +5 -0
  54. package/dist/prisma/migrations/20250516164307_drop_enums/migration.sql +5 -0
  55. package/dist/prisma/migrations/20250516194123_add_cal_option/migration.sql +2 -0
  56. package/dist/prisma/migrations/20250518133218_add_booking_details/migration.sql +2 -0
  57. package/dist/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +3 -0
  58. package/dist/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +2 -0
  59. package/dist/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +17 -0
  60. package/dist/prisma/migrations/20250519172353_drop_artifacts/migration.sql +56 -0
  61. package/dist/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +14 -0
  62. package/dist/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +2 -0
  63. package/dist/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +5 -0
  64. package/dist/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +2 -0
  65. package/dist/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +8 -0
  66. package/dist/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +9 -0
  67. package/dist/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +36 -0
  68. package/dist/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +2 -0
  69. package/dist/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +2 -0
  70. package/dist/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +29 -0
  71. package/dist/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +18 -0
  72. package/dist/prisma/migrations/20250609130129_add_not_relevant/migration.sql +2 -0
  73. package/dist/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +2 -0
  74. package/dist/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +2 -0
  75. package/dist/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +10 -0
  76. package/dist/prisma/migrations/20250618001304_add_default_slug/migration.sql +3 -0
  77. package/dist/prisma/migrations/20250623184529_add_subscription_type/migration.sql +12 -0
  78. package/dist/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +27 -0
  79. package/dist/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +2 -0
  80. package/dist/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +5 -0
  81. package/dist/prisma/migrations/20250627180828_rename_completed_col/migration.sql +15 -0
  82. package/dist/prisma/migrations/20250708152414_add_had_call_col/migration.sql +2 -0
  83. package/dist/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +7 -0
  84. package/dist/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +8 -0
  85. package/dist/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +31 -0
  86. package/dist/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +7 -0
  87. package/dist/prisma/migrations/migration_lock.toml +3 -0
  88. package/dist/prisma/randomSecret.sql +12 -0
  89. package/dist/prisma/schema/attachments.prisma +35 -0
  90. package/dist/prisma/schema/auth.prisma +122 -0
  91. package/dist/prisma/schema/comment.prisma +27 -0
  92. package/dist/prisma/schema/context.prisma +18 -0
  93. package/dist/prisma/schema/control.prisma +21 -0
  94. package/dist/prisma/schema/framework-editor.prisma +96 -0
  95. package/dist/prisma/schema/framework.prisma +14 -0
  96. package/dist/prisma/schema/integration.prisma +32 -0
  97. package/dist/prisma/schema/onboarding.prisma +18 -0
  98. package/dist/prisma/schema/organization.prisma +34 -0
  99. package/dist/prisma/schema/policy.prisma +32 -0
  100. package/dist/prisma/schema/requirement.prisma +15 -0
  101. package/dist/prisma/schema/risk.prisma +57 -0
  102. package/dist/prisma/schema/shared.prisma +104 -0
  103. package/dist/prisma/schema/task.prisma +41 -0
  104. package/dist/prisma/schema/trust.prisma +37 -0
  105. package/dist/prisma/schema/vendor.prisma +56 -0
  106. package/dist/prisma/schema.prisma +12 -0
  107. package/dist/prisma/seed/frameworkEditorSchemas.js +136 -0
  108. package/dist/prisma/seed/frameworkEditorSchemas.ts +178 -0
  109. package/dist/prisma/seed/primitives/FrameworkEditorControlTemplate.json +296 -0
  110. package/dist/prisma/seed/primitives/FrameworkEditorFramework.json +101 -0
  111. package/dist/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +6057 -0
  112. package/dist/prisma/seed/primitives/FrameworkEditorRequirement.json +7841 -0
  113. package/dist/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +308 -0
  114. package/dist/prisma/seed/primitives/FrameworkEditorVideo.json +47 -0
  115. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +178 -0
  116. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +470 -0
  117. package/dist/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +142 -0
  118. package/dist/prisma/seed/seed.js +160 -0
  119. package/dist/prisma/seed/seed.ts +192 -0
  120. package/dist/types.d.mts +1 -0
  121. package/dist/types.d.ts +1 -0
  122. package/dist/types.js +24 -0
  123. package/dist/types.mjs +2 -0
  124. package/package.json +75 -0
  125. package/prisma/functionDefinition.sql +18 -0
  126. package/prisma/migrations/20250403163138_init/migration.sql +611 -0
  127. package/prisma/migrations/20250403165218_archived_on_its_own/migration.sql +29 -0
  128. package/prisma/migrations/20250403194504_risk_assignee/migration.sql +18 -0
  129. package/prisma/migrations/20250403201319_tasks_use_asignee/migration.sql +16 -0
  130. package/prisma/migrations/20250403205655_vendor_assignee/migration.sql +22 -0
  131. package/prisma/migrations/20250403205840_oops_optional/migration.sql +2 -0
  132. package/prisma/migrations/20250403210049_task_assignee_optional_too/migration.sql +8 -0
  133. package/prisma/migrations/20250404004853_stripecustomerid/migration.sql +2 -0
  134. package/prisma/migrations/20250406004306_added_common_comment_table/migration.sql +20 -0
  135. package/prisma/migrations/20250410193847_add_unique_constraint_to_artifact_t_table/migration.sql +30 -0
  136. package/prisma/migrations/20250410193857_remove_published_field_from_evidence/migration.sql +12 -0
  137. package/prisma/migrations/20250414191353_onboarding_experience/migration.sql +25 -0
  138. package/prisma/migrations/20250414203443_added_evidence_to_onboarding/migration.sql +2 -0
  139. package/prisma/migrations/20250417205622_add_global_vendors/migration.sql +26 -0
  140. package/prisma/migrations/20250417205625_update_task_table_and_comments_and_attachments/migration.sql +86 -0
  141. package/prisma/migrations/20250417205627_remove_evidence_table/migration.sql +109 -0
  142. package/prisma/migrations/20250417205629_frequency_task_is_optional/migration.sql +2 -0
  143. package/prisma/migrations/20250418151856_add_comment_relationship_to_attachment_and_vice_versa/migration.sql +8 -0
  144. package/prisma/migrations/20250423154259_make_role_string/migration.sql +9 -0
  145. package/prisma/migrations/20250424165055_update_onboarding_to_use_tasks/migration.sql +9 -0
  146. package/prisma/migrations/20250424170518_remove_evidence_artifact_type/migration.sql +14 -0
  147. package/prisma/migrations/20250428202144_add_website_to_organization/migration.sql +2 -0
  148. package/prisma/migrations/20250429155419_add_company_details_to_onboarding/migration.sql +2 -0
  149. package/prisma/migrations/20250509160401_added_framework_editor/migration.sql +8 -0
  150. package/prisma/migrations/20250509162708_init_framework_editor_tables/migration.sql +122 -0
  151. package/prisma/migrations/20250509172401_drop_slug/migration.sql +11 -0
  152. package/prisma/migrations/20250509232122_trust_portal/migration.sql +24 -0
  153. package/prisma/migrations/20250511040043_add_custom_domain_to_trust_portal/migration.sql +2 -0
  154. package/prisma/migrations/20250511042943_trust_portal_domain_verified/migration.sql +2 -0
  155. package/prisma/migrations/20250512004633_added_identifier/migration.sql +5 -0
  156. package/prisma/migrations/20250512115717_added_framework_status/migration.sql +7 -0
  157. package/prisma/migrations/20250512163351_add_contact_details_trust_portal/migration.sql +2 -0
  158. package/prisma/migrations/20250514143147_remove_unique_constraint_on_integration_name/migration.sql +2 -0
  159. package/prisma/migrations/20250514144228_add_vercel_check/migration.sql +2 -0
  160. package/prisma/migrations/20250514150021_add_vercel_verification/migration.sql +2 -0
  161. package/prisma/migrations/20250514161440_add_dates_to_framework_editor_tables/migration.sql +23 -0
  162. package/prisma/migrations/20250515123635_trust_portal_friendly_url/migration.sql +21 -0
  163. package/prisma/migrations/20250515124040_fix_trust_constraints/migration.sql +11 -0
  164. package/prisma/migrations/20250516125758_patch_framework_id_in_editor/migration.sql +6 -0
  165. package/prisma/migrations/20250516132431_add_many_to_many_support_to_tasks/migration.sql +69 -0
  166. package/prisma/migrations/20250516142234_make_entity_optional/migration.sql +3 -0
  167. package/prisma/migrations/20250516145149_drop_entity_and_entity_type/migration.sql +16 -0
  168. package/prisma/migrations/20250516150558_drop_task_type/migration.sql +2 -0
  169. package/prisma/migrations/20250516160714_insert_hardcoded_framework_to_db/migration.sql +37 -0
  170. package/prisma/migrations/20250516161852_cast_framework_id_and_requirement_id_to_string/migration.sql +5 -0
  171. package/prisma/migrations/20250516162324_convert_ids_to_new_format/migration.sql +31 -0
  172. package/prisma/migrations/20250516162730_convert_framework_id/migration.sql +5 -0
  173. package/prisma/migrations/20250516163156_added_relation_to_framework_and_requirement_maps/migration.sql +5 -0
  174. package/prisma/migrations/20250516164307_drop_enums/migration.sql +5 -0
  175. package/prisma/migrations/20250516194123_add_cal_option/migration.sql +2 -0
  176. package/prisma/migrations/20250518133218_add_booking_details/migration.sql +2 -0
  177. package/prisma/migrations/20250519141733_change_framework_id_to_string/migration.sql +3 -0
  178. package/prisma/migrations/20250519141735_drop_enum_on_requirements_map/migration.sql +2 -0
  179. package/prisma/migrations/20250519142913_add_template_references_to_instances/migration.sql +17 -0
  180. package/prisma/migrations/20250519172353_drop_artifacts/migration.sql +56 -0
  181. package/prisma/migrations/20250519204449_drop_relation_between_controls_and_framewrok_instance/migration.sql +14 -0
  182. package/prisma/migrations/20250519212347_add_visibility_toggle_to_framework_editor/migration.sql +2 -0
  183. package/prisma/migrations/20250520152548_add_approver_to_policy/migration.sql +5 -0
  184. package/prisma/migrations/20250520175109_add_description_to_audit_log_for_convenience/migration.sql +2 -0
  185. package/prisma/migrations/20250520175523_add_member_id_to_log_table/migration.sql +8 -0
  186. package/prisma/migrations/20250521140239_add_entity_type_and_id_for_audit_logs_for_easy_filtering/migration.sql +9 -0
  187. package/prisma/migrations/20250603135046_add_v2_onboarding_requirements/migration.sql +36 -0
  188. package/prisma/migrations/20250604155610_add_job_id_column_to_onboarding/migration.sql +2 -0
  189. package/prisma/migrations/20250605151521_make_framework_visibility_false/migration.sql +2 -0
  190. package/prisma/migrations/20250605184738_add_cascade_to_entities_owned_by_org/migration.sql +29 -0
  191. package/prisma/migrations/20250605184740_add_device_agent_details_to_org/migration.sql +18 -0
  192. package/prisma/migrations/20250609130129_add_not_relevant/migration.sql +2 -0
  193. package/prisma/migrations/20250610215328_add_fleet_label_to_employees/migration.sql +2 -0
  194. package/prisma/migrations/20250611144654_add_is_fleet_setup_flag/migration.sql +2 -0
  195. package/prisma/migrations/20250612160731_remove_unused_cols/migration.sql +10 -0
  196. package/prisma/migrations/20250618001304_add_default_slug/migration.sql +3 -0
  197. package/prisma/migrations/20250623184529_add_subscription_type/migration.sql +12 -0
  198. package/prisma/migrations/20250626021946_add_starter_subscription_type/migration.sql +27 -0
  199. package/prisma/migrations/20250626030206_added_new_subscription_type/migration.sql +2 -0
  200. package/prisma/migrations/20250627180331_add_onboaridng_field/migration.sql +5 -0
  201. package/prisma/migrations/20250627180828_rename_completed_col/migration.sql +15 -0
  202. package/prisma/migrations/20250708152414_add_had_call_col/migration.sql +2 -0
  203. package/prisma/migrations/20250711201749_update_retool_role_to_edit_had_call_column_in_organization_table/migration.sql +7 -0
  204. package/prisma/migrations/20250711204234_add_read_permission_for_where_clause_on_retool_role/migration.sql +8 -0
  205. package/prisma/migrations/20250714153009_remove_stripe_and_add_has_access/migration.sql +31 -0
  206. package/prisma/migrations/20250715200054_add_perms_for_has_access_for_retool/migration.sql +7 -0
  207. package/prisma/migrations/migration_lock.toml +3 -0
  208. package/prisma/randomSecret.sql +12 -0
  209. package/prisma/schema/attachments.prisma +35 -0
  210. package/prisma/schema/auth.prisma +122 -0
  211. package/prisma/schema/comment.prisma +27 -0
  212. package/prisma/schema/context.prisma +18 -0
  213. package/prisma/schema/control.prisma +21 -0
  214. package/prisma/schema/framework-editor.prisma +96 -0
  215. package/prisma/schema/framework.prisma +14 -0
  216. package/prisma/schema/integration.prisma +32 -0
  217. package/prisma/schema/onboarding.prisma +18 -0
  218. package/prisma/schema/organization.prisma +34 -0
  219. package/prisma/schema/policy.prisma +32 -0
  220. package/prisma/schema/requirement.prisma +15 -0
  221. package/prisma/schema/risk.prisma +57 -0
  222. package/prisma/schema/shared.prisma +104 -0
  223. package/prisma/schema/task.prisma +41 -0
  224. package/prisma/schema/trust.prisma +37 -0
  225. package/prisma/schema/vendor.prisma +56 -0
  226. package/prisma/schema.prisma +12 -0
  227. package/prisma/seed/frameworkEditorSchemas.js +136 -0
  228. package/prisma/seed/frameworkEditorSchemas.ts +178 -0
  229. package/prisma/seed/primitives/FrameworkEditorControlTemplate.json +296 -0
  230. package/prisma/seed/primitives/FrameworkEditorFramework.json +101 -0
  231. package/prisma/seed/primitives/FrameworkEditorPolicyTemplate.json +6057 -0
  232. package/prisma/seed/primitives/FrameworkEditorRequirement.json +7841 -0
  233. package/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +308 -0
  234. package/prisma/seed/primitives/FrameworkEditorVideo.json +47 -0
  235. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorPolicyTemplate.json +178 -0
  236. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +470 -0
  237. package/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +142 -0
  238. package/prisma/seed/seed.js +160 -0
  239. package/prisma/seed/seed.ts +192 -0
@@ -0,0 +1,104 @@
1
+ model ApiKey {
2
+ id String @id @default(dbgenerated("generate_prefixed_cuid('apk'::text)"))
3
+ name String
4
+ key String @unique
5
+ salt String?
6
+ createdAt DateTime @default(now())
7
+ expiresAt DateTime?
8
+ lastUsedAt DateTime?
9
+ isActive Boolean @default(true)
10
+
11
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
12
+ organizationId String
13
+
14
+ @@index([organizationId])
15
+ @@index([key])
16
+ }
17
+
18
+ model AuditLog {
19
+ id String @id @default(dbgenerated("generate_prefixed_cuid('aud'::text)"))
20
+ timestamp DateTime @default(now())
21
+ organizationId String
22
+ userId String
23
+ memberId String?
24
+ data Json
25
+ description String?
26
+ entityId String?
27
+ entityType AuditLogEntityType?
28
+
29
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
30
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
31
+ member Member? @relation(fields: [memberId], references: [id], onDelete: Cascade)
32
+
33
+ @@index([userId])
34
+ @@index([organizationId])
35
+ @@index([memberId])
36
+ @@index([entityType])
37
+ }
38
+
39
+ enum AuditLogEntityType {
40
+ organization
41
+ framework
42
+ requirement
43
+ control
44
+ policy
45
+ task
46
+ people
47
+ risk
48
+ vendor
49
+ tests
50
+ integration
51
+ }
52
+
53
+ model GlobalVendors {
54
+ website String @id @unique
55
+ company_name String?
56
+ legal_name String?
57
+ company_description String?
58
+ company_hq_address String?
59
+ privacy_policy_url String?
60
+ terms_of_service_url String?
61
+ service_level_agreement_url String?
62
+ security_page_url String?
63
+ trust_page_url String?
64
+ security_certifications String[]
65
+ subprocessors String[]
66
+ type_of_company String?
67
+
68
+ approved Boolean @default(false)
69
+ createdAt DateTime @default(now())
70
+
71
+ @@index([website])
72
+ }
73
+
74
+ enum Departments {
75
+ none
76
+ admin
77
+ gov
78
+ hr
79
+ it
80
+ itsm
81
+ qms
82
+ }
83
+
84
+ enum Frequency {
85
+ monthly
86
+ quarterly
87
+ yearly
88
+ }
89
+
90
+ enum Likelihood {
91
+ very_unlikely
92
+ unlikely
93
+ possible
94
+ likely
95
+ very_likely
96
+ }
97
+
98
+ enum Impact {
99
+ insignificant
100
+ minor
101
+ moderate
102
+ major
103
+ severe
104
+ }
@@ -0,0 +1,41 @@
1
+ model Task {
2
+ // Metadata
3
+ id String @id @default(dbgenerated("generate_prefixed_cuid('tsk'::text)"))
4
+ title String
5
+ description String
6
+ status TaskStatus @default(todo)
7
+ frequency TaskFrequency?
8
+ department Departments? @default(none)
9
+ order Int @default(0)
10
+
11
+ // Dates
12
+ createdAt DateTime @default(now())
13
+ updatedAt DateTime @updatedAt
14
+ lastCompletedAt DateTime?
15
+
16
+ // Relationships
17
+ controls Control[]
18
+ vendors Vendor[]
19
+ risks Risk[]
20
+ assigneeId String?
21
+ assignee Member? @relation(fields: [assigneeId], references: [id])
22
+ organizationId String
23
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
24
+ taskTemplateId String?
25
+ taskTemplate FrameworkEditorTaskTemplate? @relation(fields: [taskTemplateId], references: [id])
26
+ }
27
+
28
+ enum TaskStatus {
29
+ todo
30
+ in_progress
31
+ done
32
+ not_relevant
33
+ }
34
+
35
+ enum TaskFrequency {
36
+ daily
37
+ weekly
38
+ monthly
39
+ quarterly
40
+ yearly
41
+ }
@@ -0,0 +1,37 @@
1
+ model Trust {
2
+ organizationId String
3
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
4
+ friendlyUrl String? @unique
5
+ domain String?
6
+ domainVerified Boolean @default(false)
7
+ isVercelDomain Boolean @default(false)
8
+ vercelVerification String?
9
+ status TrustStatus @default(draft)
10
+ contactEmail String?
11
+
12
+ email String?
13
+ privacyPolicy String?
14
+ soc2 Boolean @default(false)
15
+ iso27001 Boolean @default(false)
16
+ gdpr Boolean @default(false)
17
+
18
+ soc2_status FrameworkStatus @default(started)
19
+ iso27001_status FrameworkStatus @default(started)
20
+ gdpr_status FrameworkStatus @default(started)
21
+
22
+ @@id([status, organizationId])
23
+ @@unique([organizationId])
24
+ @@index([organizationId])
25
+ @@index([friendlyUrl])
26
+ }
27
+
28
+ enum TrustStatus {
29
+ draft
30
+ published
31
+ }
32
+
33
+ enum FrameworkStatus {
34
+ started
35
+ in_progress
36
+ compliant
37
+ }
@@ -0,0 +1,56 @@
1
+ model Vendor {
2
+ id String @id @default(dbgenerated("generate_prefixed_cuid('vnd'::text)"))
3
+ name String
4
+ description String
5
+ category VendorCategory @default(other)
6
+ status VendorStatus @default(not_assessed)
7
+ inherentProbability Likelihood @default(very_unlikely)
8
+ inherentImpact Impact @default(insignificant)
9
+ residualProbability Likelihood @default(very_unlikely)
10
+ residualImpact Impact @default(insignificant)
11
+ website String?
12
+
13
+ createdAt DateTime @default(now())
14
+ updatedAt DateTime @updatedAt
15
+
16
+ organizationId String
17
+ organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
18
+ assigneeId String?
19
+ assignee Member? @relation(fields: [assigneeId], references: [id], onDelete: Cascade)
20
+ contacts VendorContact[]
21
+ tasks Task[]
22
+
23
+ @@index([organizationId])
24
+ @@index([assigneeId])
25
+ @@index([category])
26
+ }
27
+
28
+ model VendorContact {
29
+ id String @id @default(dbgenerated("generate_prefixed_cuid('vct'::text)"))
30
+ vendorId String
31
+ name String
32
+ email String
33
+ phone String
34
+ createdAt DateTime @default(now())
35
+ updatedAt DateTime @updatedAt
36
+ Vendor Vendor @relation(fields: [vendorId], references: [id], onDelete: Cascade)
37
+
38
+ @@index([vendorId])
39
+ }
40
+
41
+ enum VendorCategory {
42
+ cloud
43
+ infrastructure
44
+ software_as_a_service
45
+ finance
46
+ marketing
47
+ sales
48
+ hr
49
+ other
50
+ }
51
+
52
+ enum VendorStatus {
53
+ not_assessed
54
+ in_progress
55
+ assessed
56
+ }
@@ -0,0 +1,12 @@
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ previewFeatures = ["driverAdapters", "postgresqlExtensions", "prismaSchemaFolder"]
4
+ binaryTargets = ["native", "debian-openssl-3.0.x", "linux-musl-openssl-3.0.x"]
5
+ }
6
+
7
+ datasource db {
8
+ provider = "postgresql"
9
+ url = env("DATABASE_URL")
10
+ directUrl = env("DATABASE_URL")
11
+ extensions = [pgcrypto]
12
+ }
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.frameworkEditorModelSchemas = exports.FrameworkEditorControlTemplateSchema = exports.FrameworkEditorTaskTemplateSchema = exports.FrameworkEditorPolicyTemplateSchema = exports.FrameworkEditorRequirementSchema = exports.FrameworkEditorFrameworkSchema = exports.FrameworkEditorVideoSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // Assuming Frequency and Departments enums are defined elsewhere and imported
6
+ // For now, we'll use z.string() as a placeholder if their definitions aren't available.
7
+ // import { Frequency, Departments } from './path-to-shared-enums'; // Example import
8
+ const datePreprocess = (arg) => {
9
+ if (typeof arg === 'string' && /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}$/.test(arg)) {
10
+ return arg.replace(' ', 'T') + 'Z';
11
+ }
12
+ return arg;
13
+ };
14
+ exports.FrameworkEditorVideoSchema = zod_1.z.object({
15
+ id: zod_1.z.string().optional(), // @id @default
16
+ title: zod_1.z.string(),
17
+ description: zod_1.z.string(),
18
+ youtubeId: zod_1.z.string(),
19
+ url: zod_1.z.string(),
20
+ createdAt: zod_1.z
21
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
22
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
23
+ }))
24
+ .optional(), // @default(now())
25
+ updatedAt: zod_1.z
26
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
27
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
28
+ }))
29
+ .optional(), // @default(now()) @updatedAt
30
+ });
31
+ exports.FrameworkEditorFrameworkSchema = zod_1.z.object({
32
+ id: zod_1.z.string().optional(), // @id @default
33
+ name: zod_1.z.string(),
34
+ version: zod_1.z.string(),
35
+ description: zod_1.z.string(),
36
+ visible: zod_1.z.boolean().optional(), // @default(true)
37
+ // requirements: FrameworkEditorRequirement[] - relational, omitted
38
+ // frameworkInstances: FrameworkInstance[] - relational, omitted
39
+ createdAt: zod_1.z
40
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
41
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
42
+ }))
43
+ .optional(), // @default(now())
44
+ updatedAt: zod_1.z
45
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
46
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
47
+ }))
48
+ .optional(), // @default(now()) @updatedAt
49
+ });
50
+ exports.FrameworkEditorRequirementSchema = zod_1.z.object({
51
+ id: zod_1.z.string().optional(), // @id @default
52
+ frameworkId: zod_1.z.string(),
53
+ // framework: FrameworkEditorFramework - relational, omitted
54
+ name: zod_1.z.string(),
55
+ identifier: zod_1.z.string().optional(), // @default("")
56
+ description: zod_1.z.string(),
57
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
58
+ // requirementMaps: RequirementMap[] - relational, omitted
59
+ createdAt: zod_1.z
60
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
61
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
62
+ }))
63
+ .optional(), // @default(now())
64
+ updatedAt: zod_1.z
65
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
66
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
67
+ }))
68
+ .optional(), // @default(now()) @updatedAt
69
+ });
70
+ exports.FrameworkEditorPolicyTemplateSchema = zod_1.z.object({
71
+ id: zod_1.z.string().optional(), // @id @default
72
+ name: zod_1.z.string(),
73
+ description: zod_1.z.string(),
74
+ frequency: zod_1.z.string(), // Placeholder for Frequency enum
75
+ department: zod_1.z.string(), // Placeholder for Departments enum
76
+ content: zod_1.z.any(), // Json
77
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
78
+ createdAt: zod_1.z
79
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
80
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
81
+ }))
82
+ .optional(), // @default(now())
83
+ updatedAt: zod_1.z
84
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
85
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
86
+ }))
87
+ .optional(), // @default(now()) @updatedAt
88
+ // policies: Policy[] - relational, omitted
89
+ });
90
+ exports.FrameworkEditorTaskTemplateSchema = zod_1.z.object({
91
+ id: zod_1.z.string().optional(), // @id @default
92
+ name: zod_1.z.string(),
93
+ description: zod_1.z.string(),
94
+ frequency: zod_1.z.string(), // Placeholder for Frequency enum
95
+ department: zod_1.z.string(), // Placeholder for Departments enum
96
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
97
+ createdAt: zod_1.z
98
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
99
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
100
+ }))
101
+ .optional(), // @default(now())
102
+ updatedAt: zod_1.z
103
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
104
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
105
+ }))
106
+ .optional(), // @default(now()) @updatedAt
107
+ // tasks: Task[] - relational, omitted
108
+ });
109
+ exports.FrameworkEditorControlTemplateSchema = zod_1.z.object({
110
+ id: zod_1.z.string().optional(), // @id @default
111
+ name: zod_1.z.string(),
112
+ description: zod_1.z.string(),
113
+ // policyTemplates: FrameworkEditorPolicyTemplate[] - relational, omitted
114
+ // requirements: FrameworkEditorRequirement[] - relational, omitted
115
+ // taskTemplates: FrameworkEditorTaskTemplate[] - relational, omitted
116
+ createdAt: zod_1.z
117
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
118
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
119
+ }))
120
+ .optional(), // @default(now())
121
+ updatedAt: zod_1.z
122
+ .preprocess(datePreprocess, zod_1.z.string().datetime({
123
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
124
+ }))
125
+ .optional(), // @default(now()) @updatedAt
126
+ // controls: Control[] - relational, omitted
127
+ });
128
+ // For use in seed script validation
129
+ exports.frameworkEditorModelSchemas = {
130
+ FrameworkEditorVideo: exports.FrameworkEditorVideoSchema,
131
+ FrameworkEditorFramework: exports.FrameworkEditorFrameworkSchema,
132
+ FrameworkEditorRequirement: exports.FrameworkEditorRequirementSchema,
133
+ FrameworkEditorPolicyTemplate: exports.FrameworkEditorPolicyTemplateSchema,
134
+ FrameworkEditorTaskTemplate: exports.FrameworkEditorTaskTemplateSchema,
135
+ FrameworkEditorControlTemplate: exports.FrameworkEditorControlTemplateSchema,
136
+ };
@@ -0,0 +1,178 @@
1
+ import { z } from 'zod';
2
+
3
+ // Assuming Frequency and Departments enums are defined elsewhere and imported
4
+ // For now, we'll use z.string() as a placeholder if their definitions aren't available.
5
+ // import { Frequency, Departments } from './path-to-shared-enums'; // Example import
6
+
7
+ const datePreprocess = (arg: unknown) => {
8
+ if (typeof arg === 'string' && /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}$/.test(arg)) {
9
+ return arg.replace(' ', 'T') + 'Z';
10
+ }
11
+ return arg;
12
+ };
13
+
14
+ export const FrameworkEditorVideoSchema = z.object({
15
+ id: z.string().optional(), // @id @default
16
+ title: z.string(),
17
+ description: z.string(),
18
+ youtubeId: z.string(),
19
+ url: z.string(),
20
+ createdAt: z
21
+ .preprocess(
22
+ datePreprocess,
23
+ z.string().datetime({
24
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
25
+ }),
26
+ )
27
+ .optional(), // @default(now())
28
+ updatedAt: z
29
+ .preprocess(
30
+ datePreprocess,
31
+ z.string().datetime({
32
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
33
+ }),
34
+ )
35
+ .optional(), // @default(now()) @updatedAt
36
+ });
37
+
38
+ export const FrameworkEditorFrameworkSchema = z.object({
39
+ id: z.string().optional(), // @id @default
40
+ name: z.string(),
41
+ version: z.string(),
42
+ description: z.string(),
43
+ visible: z.boolean().optional(), // @default(true)
44
+ // requirements: FrameworkEditorRequirement[] - relational, omitted
45
+ // frameworkInstances: FrameworkInstance[] - relational, omitted
46
+ createdAt: z
47
+ .preprocess(
48
+ datePreprocess,
49
+ z.string().datetime({
50
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
51
+ }),
52
+ )
53
+ .optional(), // @default(now())
54
+ updatedAt: z
55
+ .preprocess(
56
+ datePreprocess,
57
+ z.string().datetime({
58
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
59
+ }),
60
+ )
61
+ .optional(), // @default(now()) @updatedAt
62
+ });
63
+
64
+ export const FrameworkEditorRequirementSchema = z.object({
65
+ id: z.string().optional(), // @id @default
66
+ frameworkId: z.string(),
67
+ // framework: FrameworkEditorFramework - relational, omitted
68
+ name: z.string(),
69
+ identifier: z.string().optional(), // @default("")
70
+ description: z.string(),
71
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
72
+ // requirementMaps: RequirementMap[] - relational, omitted
73
+ createdAt: z
74
+ .preprocess(
75
+ datePreprocess,
76
+ z.string().datetime({
77
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
78
+ }),
79
+ )
80
+ .optional(), // @default(now())
81
+ updatedAt: z
82
+ .preprocess(
83
+ datePreprocess,
84
+ z.string().datetime({
85
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
86
+ }),
87
+ )
88
+ .optional(), // @default(now()) @updatedAt
89
+ });
90
+
91
+ export const FrameworkEditorPolicyTemplateSchema = z.object({
92
+ id: z.string().optional(), // @id @default
93
+ name: z.string(),
94
+ description: z.string(),
95
+ frequency: z.string(), // Placeholder for Frequency enum
96
+ department: z.string(), // Placeholder for Departments enum
97
+ content: z.any(), // Json
98
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
99
+ createdAt: z
100
+ .preprocess(
101
+ datePreprocess,
102
+ z.string().datetime({
103
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
104
+ }),
105
+ )
106
+ .optional(), // @default(now())
107
+ updatedAt: z
108
+ .preprocess(
109
+ datePreprocess,
110
+ z.string().datetime({
111
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
112
+ }),
113
+ )
114
+ .optional(), // @default(now()) @updatedAt
115
+ // policies: Policy[] - relational, omitted
116
+ });
117
+
118
+ export const FrameworkEditorTaskTemplateSchema = z.object({
119
+ id: z.string().optional(), // @id @default
120
+ name: z.string(),
121
+ description: z.string(),
122
+ frequency: z.string(), // Placeholder for Frequency enum
123
+ department: z.string(), // Placeholder for Departments enum
124
+ // controlTemplates: FrameworkEditorControlTemplate[] - relational, omitted
125
+ createdAt: z
126
+ .preprocess(
127
+ datePreprocess,
128
+ z.string().datetime({
129
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
130
+ }),
131
+ )
132
+ .optional(), // @default(now())
133
+ updatedAt: z
134
+ .preprocess(
135
+ datePreprocess,
136
+ z.string().datetime({
137
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
138
+ }),
139
+ )
140
+ .optional(), // @default(now()) @updatedAt
141
+ // tasks: Task[] - relational, omitted
142
+ });
143
+
144
+ export const FrameworkEditorControlTemplateSchema = z.object({
145
+ id: z.string().optional(), // @id @default
146
+ name: z.string(),
147
+ description: z.string(),
148
+ // policyTemplates: FrameworkEditorPolicyTemplate[] - relational, omitted
149
+ // requirements: FrameworkEditorRequirement[] - relational, omitted
150
+ // taskTemplates: FrameworkEditorTaskTemplate[] - relational, omitted
151
+ createdAt: z
152
+ .preprocess(
153
+ datePreprocess,
154
+ z.string().datetime({
155
+ message: 'Invalid datetime string for createdAt. Expected ISO 8601 format.',
156
+ }),
157
+ )
158
+ .optional(), // @default(now())
159
+ updatedAt: z
160
+ .preprocess(
161
+ datePreprocess,
162
+ z.string().datetime({
163
+ message: 'Invalid datetime string for updatedAt. Expected ISO 8601 format.',
164
+ }),
165
+ )
166
+ .optional(), // @default(now()) @updatedAt
167
+ // controls: Control[] - relational, omitted
168
+ });
169
+
170
+ // For use in seed script validation
171
+ export const frameworkEditorModelSchemas = {
172
+ FrameworkEditorVideo: FrameworkEditorVideoSchema,
173
+ FrameworkEditorFramework: FrameworkEditorFrameworkSchema,
174
+ FrameworkEditorRequirement: FrameworkEditorRequirementSchema,
175
+ FrameworkEditorPolicyTemplate: FrameworkEditorPolicyTemplateSchema,
176
+ FrameworkEditorTaskTemplate: FrameworkEditorTaskTemplateSchema,
177
+ FrameworkEditorControlTemplate: FrameworkEditorControlTemplateSchema,
178
+ };