@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,160 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const client_1 = require("@prisma/client");
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const frameworkEditorSchemas_1 = require("./frameworkEditorSchemas");
10
+ const prisma = new client_1.PrismaClient();
11
+ async function seedJsonFiles(subDirectory) {
12
+ const directoryPath = node_path_1.default.join(__dirname, subDirectory);
13
+ console.log(`Starting to seed files from: ${directoryPath}`);
14
+ const files = await promises_1.default.readdir(directoryPath);
15
+ const jsonFiles = files.filter((file) => file.endsWith('.json'));
16
+ for (const jsonFile of jsonFiles) {
17
+ try {
18
+ const filePath = node_path_1.default.join(directoryPath, jsonFile);
19
+ const jsonContent = await promises_1.default.readFile(filePath, 'utf-8');
20
+ const jsonData = JSON.parse(jsonContent);
21
+ if (!Array.isArray(jsonData) || jsonData.length === 0) {
22
+ console.log(`Skipping empty or invalid JSON file: ${jsonFile}`);
23
+ continue;
24
+ }
25
+ if (subDirectory === 'primitives') {
26
+ const modelNameForPrisma = jsonFile.replace('.json', '');
27
+ const prismaModelKey = modelNameForPrisma.charAt(0).toLowerCase() + modelNameForPrisma.slice(1);
28
+ const zodModelKey = modelNameForPrisma;
29
+ const prismaAny = prisma;
30
+ if (!prismaAny[prismaModelKey] ||
31
+ typeof prismaAny[prismaModelKey].createMany !== 'function') {
32
+ console.warn(`Model ${prismaModelKey} not found on Prisma client or does not support createMany. Skipping ${jsonFile}.`);
33
+ continue;
34
+ }
35
+ const zodSchema = frameworkEditorSchemas_1.frameworkEditorModelSchemas[zodModelKey];
36
+ if (!zodSchema) {
37
+ console.warn(`Zod schema not found for model ${String(zodModelKey)}. Skipping validation for ${jsonFile}.`);
38
+ }
39
+ else {
40
+ console.log(`Validating ${jsonData.length} records from ${jsonFile} against ${String(zodModelKey)} schema...`);
41
+ for (const item of jsonData) {
42
+ try {
43
+ zodSchema.parse(item);
44
+ }
45
+ catch (validationError) {
46
+ console.error(`Validation failed for an item in ${jsonFile} for model ${String(zodModelKey)}:`, item);
47
+ console.error('Validation errors:', validationError);
48
+ throw new Error(`Data validation failed for ${jsonFile}.`);
49
+ }
50
+ }
51
+ console.log(`Validation successful for ${jsonFile}.`);
52
+ }
53
+ const processedData = jsonData.map((item) => {
54
+ const newItem = { ...item };
55
+ if (newItem.createdAt && typeof newItem.createdAt === 'string') {
56
+ newItem.createdAt = new Date(newItem.createdAt);
57
+ }
58
+ if (newItem.updatedAt && typeof newItem.updatedAt === 'string') {
59
+ newItem.updatedAt = new Date(newItem.updatedAt);
60
+ }
61
+ return newItem;
62
+ });
63
+ console.log(`Seeding ${processedData.length} records from ${jsonFile} into ${prismaModelKey}...`);
64
+ // Use upsert to update existing records instead of skipping them
65
+ for (const record of processedData) {
66
+ await prismaAny[prismaModelKey].upsert({
67
+ where: { id: record.id },
68
+ create: record,
69
+ update: record,
70
+ });
71
+ }
72
+ console.log(`Finished seeding ${jsonFile} from primitives.`);
73
+ }
74
+ else if (subDirectory === 'relations') {
75
+ // Expected filename format: _ModelAToModelB.json
76
+ if (!jsonFile.startsWith('_') || !jsonFile.includes('To')) {
77
+ console.warn(`Skipping relation file with unexpected format: ${jsonFile}`);
78
+ continue;
79
+ }
80
+ const modelNamesPart = jsonFile.substring(1, jsonFile.indexOf('.json'));
81
+ const [modelANamePascal, modelBNamePascal] = modelNamesPart.split('To');
82
+ if (!modelANamePascal || !modelBNamePascal) {
83
+ console.warn(`Could not parse model names from relation file: ${jsonFile}`);
84
+ continue;
85
+ }
86
+ const prismaModelAName = modelANamePascal.charAt(0).toLowerCase() + modelANamePascal.slice(1);
87
+ // Infer relation field name on ModelA: pluralized, camelCased ModelB name
88
+ // e.g., if ModelB is FrameworkEditorPolicyTemplate, relation field is frameworkEditorPolicyTemplates
89
+ // This is a common convention, but might need adjustment based on actual schema
90
+ let relationFieldNameOnModelA = modelBNamePascal.charAt(0).toLowerCase() + modelBNamePascal.slice(1);
91
+ if (!relationFieldNameOnModelA.endsWith('s')) {
92
+ // basic pluralization
93
+ relationFieldNameOnModelA += 's';
94
+ }
95
+ // Special handling for 'Requirement' -> 'requirements' (already plural)
96
+ // and other specific cases if 's' isn't the right pluralization.
97
+ // For now, using a direct map for known cases from the user's file names.
98
+ if (modelBNamePascal === 'FrameworkEditorPolicyTemplate') {
99
+ relationFieldNameOnModelA = 'policyTemplates';
100
+ }
101
+ else if (modelBNamePascal === 'FrameworkEditorRequirement') {
102
+ relationFieldNameOnModelA = 'requirements';
103
+ }
104
+ else if (modelBNamePascal === 'FrameworkEditorTaskTemplate') {
105
+ relationFieldNameOnModelA = 'taskTemplates';
106
+ }
107
+ const prismaAny = prisma;
108
+ if (!prismaAny[prismaModelAName] ||
109
+ typeof prismaAny[prismaModelAName].update !== 'function') {
110
+ console.warn(`Model ${prismaModelAName} not found on Prisma client or does not support update. Skipping ${jsonFile}.`);
111
+ continue;
112
+ }
113
+ console.log(`Processing relations from ${jsonFile} for ${prismaModelAName} to connect via ${relationFieldNameOnModelA}...`);
114
+ let connectionsMade = 0;
115
+ for (const relationItem of jsonData) {
116
+ if (!relationItem.A || !relationItem.B) {
117
+ console.warn(`Skipping invalid relation item in ${jsonFile}:`, relationItem);
118
+ continue;
119
+ }
120
+ const idA = relationItem.A;
121
+ const idB = relationItem.B;
122
+ try {
123
+ await prismaAny[prismaModelAName].update({
124
+ where: { id: idA },
125
+ data: {
126
+ [relationFieldNameOnModelA]: {
127
+ connect: { id: idB },
128
+ },
129
+ },
130
+ });
131
+ connectionsMade++;
132
+ }
133
+ catch (error) {
134
+ console.error(`Failed to connect ${prismaModelAName} (${idA}) with ${modelBNamePascal} (${idB}) from ${jsonFile}:`, error);
135
+ // Decide if one error should stop the whole process for this file or continue
136
+ }
137
+ }
138
+ console.log(`Finished processing ${jsonFile}. Made ${connectionsMade} connections.`);
139
+ }
140
+ }
141
+ catch (error) {
142
+ console.error(`Error processing ${jsonFile}:`, error);
143
+ throw error;
144
+ }
145
+ }
146
+ }
147
+ async function main() {
148
+ try {
149
+ await seedJsonFiles('primitives');
150
+ await seedJsonFiles('relations');
151
+ await prisma.$disconnect();
152
+ console.log('Seeding completed successfully for primitives and relations.');
153
+ }
154
+ catch (error) {
155
+ console.error('Seeding failed:', error);
156
+ await prisma.$disconnect();
157
+ process.exit(1);
158
+ }
159
+ }
160
+ main();
@@ -0,0 +1,192 @@
1
+ import { PrismaClient } from '@prisma/client';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { frameworkEditorModelSchemas } from './frameworkEditorSchemas';
5
+
6
+ const prisma = new PrismaClient();
7
+
8
+ async function seedJsonFiles(subDirectory: string) {
9
+ const directoryPath = path.join(__dirname, subDirectory);
10
+ console.log(`Starting to seed files from: ${directoryPath}`);
11
+ const files = await fs.readdir(directoryPath);
12
+ const jsonFiles = files.filter((file) => file.endsWith('.json'));
13
+
14
+ for (const jsonFile of jsonFiles) {
15
+ try {
16
+ const filePath = path.join(directoryPath, jsonFile);
17
+ const jsonContent = await fs.readFile(filePath, 'utf-8');
18
+ const jsonData = JSON.parse(jsonContent);
19
+
20
+ if (!Array.isArray(jsonData) || jsonData.length === 0) {
21
+ console.log(`Skipping empty or invalid JSON file: ${jsonFile}`);
22
+ continue;
23
+ }
24
+
25
+ if (subDirectory === 'primitives') {
26
+ const modelNameForPrisma = jsonFile.replace('.json', '');
27
+ const prismaModelKey =
28
+ modelNameForPrisma.charAt(0).toLowerCase() + modelNameForPrisma.slice(1);
29
+ const zodModelKey = modelNameForPrisma as keyof typeof frameworkEditorModelSchemas;
30
+
31
+ const prismaAny = prisma as any;
32
+ if (
33
+ !prismaAny[prismaModelKey] ||
34
+ typeof prismaAny[prismaModelKey].createMany !== 'function'
35
+ ) {
36
+ console.warn(
37
+ `Model ${prismaModelKey} not found on Prisma client or does not support createMany. Skipping ${jsonFile}.`,
38
+ );
39
+ continue;
40
+ }
41
+
42
+ const zodSchema = frameworkEditorModelSchemas[zodModelKey];
43
+ if (!zodSchema) {
44
+ console.warn(
45
+ `Zod schema not found for model ${String(zodModelKey)}. Skipping validation for ${jsonFile}.`,
46
+ );
47
+ } else {
48
+ console.log(
49
+ `Validating ${jsonData.length} records from ${jsonFile} against ${String(zodModelKey)} schema...`,
50
+ );
51
+ for (const item of jsonData) {
52
+ try {
53
+ zodSchema.parse(item);
54
+ } catch (validationError) {
55
+ console.error(
56
+ `Validation failed for an item in ${jsonFile} for model ${String(zodModelKey)}:`,
57
+ item,
58
+ );
59
+ console.error('Validation errors:', validationError);
60
+ throw new Error(`Data validation failed for ${jsonFile}.`);
61
+ }
62
+ }
63
+ console.log(`Validation successful for ${jsonFile}.`);
64
+ }
65
+
66
+ const processedData = jsonData.map((item) => {
67
+ const newItem = { ...item };
68
+ if (newItem.createdAt && typeof newItem.createdAt === 'string') {
69
+ newItem.createdAt = new Date(newItem.createdAt);
70
+ }
71
+ if (newItem.updatedAt && typeof newItem.updatedAt === 'string') {
72
+ newItem.updatedAt = new Date(newItem.updatedAt);
73
+ }
74
+ return newItem;
75
+ });
76
+
77
+ console.log(
78
+ `Seeding ${processedData.length} records from ${jsonFile} into ${prismaModelKey}...`,
79
+ );
80
+
81
+ // Use upsert to update existing records instead of skipping them
82
+ for (const record of processedData) {
83
+ await prismaAny[prismaModelKey].upsert({
84
+ where: { id: record.id },
85
+ create: record,
86
+ update: record,
87
+ });
88
+ }
89
+
90
+ console.log(`Finished seeding ${jsonFile} from primitives.`);
91
+ } else if (subDirectory === 'relations') {
92
+ // Expected filename format: _ModelAToModelB.json
93
+ if (!jsonFile.startsWith('_') || !jsonFile.includes('To')) {
94
+ console.warn(`Skipping relation file with unexpected format: ${jsonFile}`);
95
+ continue;
96
+ }
97
+
98
+ const modelNamesPart = jsonFile.substring(1, jsonFile.indexOf('.json'));
99
+ const [modelANamePascal, modelBNamePascal] = modelNamesPart.split('To');
100
+
101
+ if (!modelANamePascal || !modelBNamePascal) {
102
+ console.warn(`Could not parse model names from relation file: ${jsonFile}`);
103
+ continue;
104
+ }
105
+
106
+ const prismaModelAName =
107
+ modelANamePascal.charAt(0).toLowerCase() + modelANamePascal.slice(1);
108
+ // Infer relation field name on ModelA: pluralized, camelCased ModelB name
109
+ // e.g., if ModelB is FrameworkEditorPolicyTemplate, relation field is frameworkEditorPolicyTemplates
110
+ // This is a common convention, but might need adjustment based on actual schema
111
+ let relationFieldNameOnModelA =
112
+ modelBNamePascal.charAt(0).toLowerCase() + modelBNamePascal.slice(1);
113
+ if (!relationFieldNameOnModelA.endsWith('s')) {
114
+ // basic pluralization
115
+ relationFieldNameOnModelA += 's';
116
+ }
117
+
118
+ // Special handling for 'Requirement' -> 'requirements' (already plural)
119
+ // and other specific cases if 's' isn't the right pluralization.
120
+ // For now, using a direct map for known cases from the user's file names.
121
+ if (modelBNamePascal === 'FrameworkEditorPolicyTemplate') {
122
+ relationFieldNameOnModelA = 'policyTemplates';
123
+ } else if (modelBNamePascal === 'FrameworkEditorRequirement') {
124
+ relationFieldNameOnModelA = 'requirements';
125
+ } else if (modelBNamePascal === 'FrameworkEditorTaskTemplate') {
126
+ relationFieldNameOnModelA = 'taskTemplates';
127
+ }
128
+
129
+ const prismaAny = prisma as any;
130
+ if (
131
+ !prismaAny[prismaModelAName] ||
132
+ typeof prismaAny[prismaModelAName].update !== 'function'
133
+ ) {
134
+ console.warn(
135
+ `Model ${prismaModelAName} not found on Prisma client or does not support update. Skipping ${jsonFile}.`,
136
+ );
137
+ continue;
138
+ }
139
+
140
+ console.log(
141
+ `Processing relations from ${jsonFile} for ${prismaModelAName} to connect via ${relationFieldNameOnModelA}...`,
142
+ );
143
+ let connectionsMade = 0;
144
+ for (const relationItem of jsonData) {
145
+ if (!relationItem.A || !relationItem.B) {
146
+ console.warn(`Skipping invalid relation item in ${jsonFile}:`, relationItem);
147
+ continue;
148
+ }
149
+ const idA = relationItem.A;
150
+ const idB = relationItem.B;
151
+
152
+ try {
153
+ await prismaAny[prismaModelAName].update({
154
+ where: { id: idA },
155
+ data: {
156
+ [relationFieldNameOnModelA]: {
157
+ connect: { id: idB },
158
+ },
159
+ },
160
+ });
161
+ connectionsMade++;
162
+ } catch (error) {
163
+ console.error(
164
+ `Failed to connect ${prismaModelAName} (${idA}) with ${modelBNamePascal} (${idB}) from ${jsonFile}:`,
165
+ error,
166
+ );
167
+ // Decide if one error should stop the whole process for this file or continue
168
+ }
169
+ }
170
+ console.log(`Finished processing ${jsonFile}. Made ${connectionsMade} connections.`);
171
+ }
172
+ } catch (error) {
173
+ console.error(`Error processing ${jsonFile}:`, error);
174
+ throw error;
175
+ }
176
+ }
177
+ }
178
+
179
+ async function main() {
180
+ try {
181
+ await seedJsonFiles('primitives');
182
+ await seedJsonFiles('relations');
183
+ await prisma.$disconnect();
184
+ console.log('Seeding completed successfully for primitives and relations.');
185
+ } catch (error: unknown) {
186
+ console.error('Seeding failed:', error);
187
+ await prisma.$disconnect();
188
+ process.exit(1);
189
+ }
190
+ }
191
+
192
+ main();