procbay-schema 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.
- package/LICENSE +21 -0
- package/README.md +189 -0
- package/package.json +77 -0
- package/prisma/.env +13 -0
- package/prisma/migrations/20250116142512_init_user_table/migration.sql +38 -0
- package/prisma/migrations/20250116142709_init_role_table/migration.sql +20 -0
- package/prisma/migrations/20250116143847_init_user_role_table/migration.sql +20 -0
- package/prisma/migrations/20250116144035_init_permission_table/migration.sql +21 -0
- package/prisma/migrations/20250116144140_init_role_permission_table/migration.sql +21 -0
- package/prisma/migrations/20250116144233_init_department_table/migration.sql +20 -0
- package/prisma/migrations/20250116144345_init_user_department_table/migration.sql +20 -0
- package/prisma/migrations/20250116152941_init_serial_number_table/migration.sql +17 -0
- package/prisma/migrations/20250116153048_init_category_table/migration.sql +22 -0
- package/prisma/migrations/20250116153415_init_attributes_table/migration.sql +28 -0
- package/prisma/migrations/20250116153628_init_attribute_values_table/migration.sql +27 -0
- package/prisma/migrations/20250116153900_init_purchase_intake_table/migration.sql +32 -0
- package/prisma/migrations/20250116154038_init_purchase_intake_item_table/migration.sql +15 -0
- package/prisma/migrations/20250120090355_added_reset_token_column_in_user_table/migration.sql +10 -0
- package/prisma/migrations/20250120100616_init_item_table/migration.sql +42 -0
- package/prisma/migrations/20250120123720_init_vendor_table/migration.sql +39 -0
- package/prisma/migrations/20250120124526_init_vendor_categories_table/migration.sql +20 -0
- package/prisma/migrations/20250122114935_added_email_template_and_smtp_config_table/migration.sql +41 -0
- package/prisma/migrations/20250123095637_chnages_in_vendr_table/migration.sql +3 -0
- package/prisma/migrations/20250123103705_added_delated_filed_in_email_template_table/migration.sql +4 -0
- package/prisma/migrations/20250123103810_added_delated_filed_in_smtp_config_table/migration.sql +13 -0
- package/prisma/migrations/20250127123900_create_approval_heirarchy_table/migration.sql +72 -0
- package/prisma/migrations/20250128054523_make_optional_role_and_user_in_approval_hierachy/migration.sql +3 -0
- package/prisma/migrations/20250129084223_item_table_chnages/migration.sql +151 -0
- package/prisma/migrations/20250130115331_chnages_in_item_table/migration.sql +9 -0
- package/prisma/migrations/20250131054132_added_approval_journey_table/migration.sql +22 -0
- package/prisma/migrations/20250131064653_added_default_for_product_id_in_item_table/migration.sql +2 -0
- package/prisma/migrations/20250204101253_chnages_in_approval_table/migration.sql +39 -0
- package/prisma/migrations/20250206091422_added_item_document_table/migration.sql +17 -0
- package/prisma/migrations/20250207113110_added_new_column_media/migration.sql +9 -0
- package/prisma/migrations/20250207125224_added_chnages_in_pr_table/migration.sql +12 -0
- package/prisma/migrations/20250212092048_vendor_contact_table/migration.sql +30 -0
- package/prisma/migrations/20250212133620_added_tamplate_master_table/migration.sql +43 -0
- package/prisma/migrations/20250213111908_created_faq_catgory_and_faq_table/migration.sql +58 -0
- package/prisma/migrations/20250214065142_chnages_in_uom_table/migration.sql +50 -0
- package/prisma/migrations/20250217061122_corrected_email_teamplate_table/migration.sql +11 -0
- package/prisma/migrations/20250218073530_init_events/migration.sql +120 -0
- package/prisma/migrations/20250218092119_corrected_table_name/migration.sql +37 -0
- package/prisma/migrations/20250218120935_chnages_in_event_table/migration.sql +5 -0
- package/prisma/migrations/20250219083326_added_new_table_for_event_startegy/migration.sql +60 -0
- package/prisma/migrations/20250219083416_added_cms_table/migration.sql +29 -0
- package/prisma/migrations/20250219092918_alter_event_table/migration.sql +5 -0
- package/prisma/migrations/20250219093046_alter_event_to_draft/migration.sql +2 -0
- package/prisma/migrations/20250220080337_altered_event_table/migration.sql +9 -0
- package/prisma/migrations/20250221105922_added_unique_to_email_in_user_table/migration.sql +8 -0
- package/prisma/migrations/20250225063838_created_vendor_kyc_table/migration.sql +23 -0
- package/prisma/migrations/20250227060646_template_field_types_added_enum/migration.sql +14 -0
- package/prisma/migrations/20250227110306_updated_event_items_and_event_vendor_table/migration.sql +7 -0
- package/prisma/migrations/20250228060440_added_country_code_in_vendor_contact_person/migration.sql +2 -0
- package/prisma/migrations/20250228095319_init_currencies_table/migration.sql +23 -0
- package/prisma/migrations/20250303082614_added_support_ticket_table/migration.sql +89 -0
- package/prisma/migrations/20250304050248_alter_support_ticket_relations/migration.sql +35 -0
- package/prisma/migrations/20250304050613_alter_support_ticket_realtions/migration.sql +36 -0
- package/prisma/migrations/20250304061954_init_support_category_table/migration.sql +261 -0
- package/prisma/migrations/20250304092346_alter_event_vendor_table/migration.sql +2 -0
- package/prisma/migrations/20250305065430_alter_vendor_kyc_table/migration.sql +2 -0
- package/prisma/migrations/20250305111735_alter_vendor_and_user_table/migration.sql +5 -0
- package/prisma/migrations/20250307033751_alter_token_version_in_user_and_vendor_token/migration.sql +5 -0
- package/prisma/migrations/20250307034907_alter_user_and_vendor_table/migration.sql +14 -0
- package/prisma/migrations/20250307064359_chnages_in_approval_herarcy_table/migration.sql +2 -0
- package/prisma/migrations/20250307105352_alter_itme_and_vendorkyc_table/migration.sql +21 -0
- package/prisma/migrations/20250310103914_init_vendor_status_table/migration.sql +21 -0
- package/prisma/migrations/20250310105209_alter_vendor_status_table/migration.sql +18 -0
- package/prisma/migrations/20250310105413_init_vendor_kyc_status_table/migration.sql +23 -0
- package/prisma/migrations/20250311090552_alter_vendor_kyc_status_table/migration.sql +2 -0
- package/prisma/migrations/20250312055258_alter_status_column_in_event_vendors/migration.sql +12 -0
- package/prisma/migrations/20250312072145_init_vendor_event_watchlist_table/migration.sql +26 -0
- package/prisma/migrations/20250312083842_alter_vendor_event_watchlisst_table/migration.sql +41 -0
- package/prisma/migrations/20250312134730_added_chnages_in_kyc_table/migration.sql +19 -0
- package/prisma/migrations/20250317040841_init_admin_and_vendor_tables/migration.sql +38 -0
- package/prisma/migrations/20250317044110_alter_event_vendor_table/migration.sql +2 -0
- package/prisma/migrations/20250317071807_alter_rejected_reason_in_approval_journey_and_purchase_intak_table/migration.sql +5 -0
- package/prisma/migrations/20250318085504_init_customer_notification_table/migration.sql +31 -0
- package/prisma/migrations/20250318085856_alter_purchase_intake_table/migration.sql +18 -0
- package/prisma/migrations/20250319085159_alter_purchase_intake_table/migration.sql +12 -0
- package/prisma/migrations/20250320093356_init_bid_and_bidlog_table/migration.sql +75 -0
- package/prisma/migrations/20250320095501_alter_email_template_table/migration.sql +2 -0
- package/prisma/migrations/20250321053926_alter_approval_journey_table/migration.sql +2 -0
- package/prisma/migrations/20250324040851_alter_bidlog_table/migration.sql +2 -0
- package/prisma/migrations/20250324091328_init_form_master_and_dynamic_form_table/migration.sql +53 -0
- package/prisma/migrations/20250324103742_alter_bidlog_table/migration.sql +5 -0
- package/prisma/migrations/20250325052714_alter_form_master_table/migration.sql +27 -0
- package/prisma/migrations/20250327011625_init_module_and_tenant_configuration_table/migration.sql +39 -0
- package/prisma/migrations/20250403054008_alter_purchase_intake_table/migration.sql +5 -0
- package/prisma/migrations/20250404115613_init_approval_level_user/migration.sql +98 -0
- package/prisma/migrations/20250410060521_alter_approval_journey_enums/migration.sql +12 -0
- package/prisma/migrations/20250410110823_alter_purchase_intake/migration.sql +2 -0
- package/prisma/migrations/20250411062955_alter_template_field_table/migration.sql +2 -0
- package/prisma/migrations/20250414065640_alter_template/migration.sql +2 -0
- package/prisma/migrations/20250414111856_alter_event_vendors/migration.sql +2 -0
- package/prisma/migrations/20250414125356_alter_event_vendor/migration.sql +9 -0
- package/prisma/migrations/20250415063558_alter_alert_type_enum/migration.sql +2 -0
- package/prisma/migrations/20250416062508_alter_purchase_intake_table/migration.sql +15 -0
- package/prisma/migrations/20250417090325_alter_purchase_intake_table_updated_enum/migration.sql +13 -0
- package/prisma/migrations/20250417111024_alter_purchase_intake_and_purchase_intake_item/migration.sql +16 -0
- package/prisma/migrations/20250421061732_init_quotation_and_quotation_log_tables/migration.sql +96 -0
- package/prisma/migrations/20250421112331_alter_item_table_added_unique_to_slug/migration.sql +8 -0
- package/prisma/migrations/20250422060655_init_user_activity_table/migration.sql +17 -0
- package/prisma/migrations/20250423053027_/migration.sql +9 -0
- package/prisma/migrations/20250423103233_alter_user_login_activity_table/migration.sql +5 -0
- package/prisma/migrations/20250423111141_init_location_tables/migration.sql +141 -0
- package/prisma/migrations/20250424120106_alter_event_table_added_user_relation/migration.sql +2 -0
- package/prisma/migrations/20250424141637_alter_states_table/migration.sql +11 -0
- package/prisma/migrations/20250425105131_alter_user_login_activity_table/migration.sql +9 -0
- package/prisma/migrations/20250428092626_alter_location_tables/migration.sql +34 -0
- package/prisma/migrations/20250428114301_alter_location_table/migration.sql +14 -0
- package/prisma/migrations/20250429103436_alter_event_vendor_table/migration.sql +14 -0
- package/prisma/migrations/20250429135621_alter_event_vendor_table/migration.sql +5 -0
- package/prisma/migrations/20250430094809_alter_form_master_table_added_user_relation/migration.sql +2 -0
- package/prisma/migrations/20250430103440_alter_event_table/migration.sql +3 -0
- package/prisma/migrations/20250501125411_alter_strategies_table/migration.sql +2 -0
- package/prisma/migrations/20250502065554_init_location_table/migration.sql +41 -0
- package/prisma/migrations/20250505104038_alter_bid_quotation_and_dynamic_form/migration.sql +22 -0
- package/prisma/migrations/20250505105253_alter_quotation/migration.sql +5 -0
- package/prisma/migrations/20250505124851_alter_alert_enum/migration.sql +56 -0
- package/prisma/migrations/20250505133250_init_sub_module_table/migration.sql +17 -0
- package/prisma/migrations/20250506054325_alter_event_vendor_bid_status/migration.sql +14 -0
- package/prisma/migrations/20250506102135_init_counter_offer_table/migration.sql +38 -0
- package/prisma/migrations/20250506103355_alter_bid_and_quotaion_table/migration.sql +5 -0
- package/prisma/migrations/20250506110309_alter_tenant_configuration_table/migration.sql +3 -0
- package/prisma/migrations/20250506123527_alter_vendor_kyu_infor_verification_status/migration.sql +2 -0
- package/prisma/migrations/20250507055536_alter_dynamic_form_table/migration.sql +2 -0
- package/prisma/migrations/20250507070518_alter_bid_log_and_quotation_log/migration.sql +15 -0
- package/prisma/migrations/20250507130834_alter_bid_status/migration.sql +10 -0
- package/prisma/migrations/20250508065503_alter_purchase_intake_item_table/migration.sql +16 -0
- package/prisma/migrations/20250508130119_alter_purchase_intake_item/migration.sql +13 -0
- package/prisma/migrations/20250512082244_altered_template_table_to_add_currency_id/migration.sql +12 -0
- package/prisma/migrations/20250512100817_alter_approval_journey_table/migration.sql +3 -0
- package/prisma/migrations/20250513083700_alter_item_table/migration.sql +2 -0
- package/prisma/migrations/20250514100915_alter_event_table_added_template_realtion/migration.sql +2 -0
- package/prisma/migrations/20250514103503_alter_vendor_table_added_is_kyc_approved_column/migration.sql +2 -0
- package/prisma/migrations/20250520131556_init_purchase_order_table/migration.sql +52 -0
- package/prisma/migrations/20250521113946_alter_purchase_order_status_enum/migration.sql +16 -0
- package/prisma/migrations/20250522083917_alter_event_vendor_bid_status_enum/migration.sql +17 -0
- package/prisma/migrations/20250522131610_updated_vendor_table/migration.sql +16 -0
- package/prisma/migrations/20250523051058_alter_vendor_kyc_verificaiton_status_enum/migration.sql +2 -0
- package/prisma/migrations/20250526072120_alter_vendor_table/migration.sql +16 -0
- package/prisma/migrations/20250527055351_init_purchase_order_activity_log/migration.sql +41 -0
- package/prisma/migrations/20250528060657_alter_item_tale/migration.sql +14 -0
- package/prisma/migrations/20250528061946_alter_event_item_table/migration.sql +5 -0
- package/prisma/migrations/20250528081337_alter_item_table/migration.sql +2 -0
- package/prisma/migrations/20250528081524_removed_item_id_from_item_table/migration.sql +11 -0
- package/prisma/migrations/20250528081843_alter_item_table/migration.sql +2 -0
- package/prisma/migrations/20250528094057_alter_alert_type_enum/migration.sql +11 -0
- package/prisma/migrations/20250529053721_alter_added_quantity_in_purchase_order/migration.sql +2 -0
- package/prisma/migrations/20250602055114_alter_approval_journey_parent_id_to_string/migration.sql +2 -0
- package/prisma/migrations/20250602055748_alter_event_configuration_added_rule_slug/migration.sql +2 -0
- package/prisma/migrations/20250602111042_init_user_vendor_socket_token_table/migration.sql +17 -0
- package/prisma/migrations/20250602125833_alter_bidlog_and_quoatationlog_tableto_add_json_field/migration.sql +5 -0
- package/prisma/migrations/20250603063501_alter_bid_and_quoatation_table/migration.sql +29 -0
- package/prisma/migrations/20250606015045_alter_quotation_log_table/migration.sql +2 -0
- package/prisma/migrations/20250606020918_alter_quotation_table/migration.sql +2 -0
- package/prisma/migrations/20250606022901_alter_quotation_log_table/migration.sql +3 -0
- package/prisma/migrations/20250606054914_init_event_activity_logs_table/migration.sql +35 -0
- package/prisma/migrations/20250606100634_alter_added_counter_offer_status/migration.sql +5 -0
- package/prisma/migrations/20250606100908_alter_counter_offer_table/migration.sql +2 -0
- package/prisma/migrations/20250610055710_alter_enum/migration.sql +16 -0
- package/prisma/migrations/20250610060558_alter_event_and_event_vendor_db/migration.sql +14 -0
- package/prisma/migrations/20250610091013_alter_purchase_intak_item_table/migration.sql +4 -0
- package/prisma/migrations/20250610100156_alter_purchase_intake_item_table/migration.sql +19 -0
- package/prisma/migrations/20250610125706_alter_event_table/migration.sql +6 -0
- package/prisma/migrations/20250610133613_added_timestamp/migration.sql +319 -0
- package/prisma/migrations/20250611090439_init_contact_us_table/migration.sql +23 -0
- package/prisma/migrations/20250611121005_alter_event_vendor_table/migration.sql +10 -0
- package/prisma/migrations/20250612064335_alter_tenant_configuration/migration.sql +3 -0
- package/prisma/migrations/20250612094643_alter_event_vendor_bid_status_enum/migration.sql +2 -0
- package/prisma/migrations/20250618074558_alter_updated_bid_status_and_quotation_status/migration.sql +21 -0
- package/prisma/migrations/20250618122242_alter_added_event_phase_closed/migration.sql +2 -0
- package/prisma/migrations/20250620054518_alter_event_phase/migration.sql +2 -0
- package/prisma/migrations/20250620062723_alter_event_phase/migration.sql +2 -0
- package/prisma/migrations/20250620063056_alter_event_phase/migration.sql +2 -0
- package/prisma/migrations/20250620100507_alter_event_phase/migration.sql +2 -0
- package/prisma/migrations/20250627104958_alter_counter_offer_status/migration.sql +2 -0
- package/prisma/migrations/20250702095923_alter_item_table/migration.sql +74 -0
- package/prisma/migrations/20250702120134_/migration.sql +14 -0
- package/prisma/migrations/20250702150717_alter_attribute_table/migration.sql +9 -0
- package/prisma/migrations/20250703090321_alter_item_table/migration.sql +2 -0
- package/prisma/migrations/20250707054625_alter_purchase_order_table/migration.sql +15 -0
- package/prisma/migrations/20250707111354_alter_purchase_order_table_and_init_purchase_order_item_table/migration.sql +39 -0
- package/prisma/migrations/20250707111522_alter_purchase_order_item_table/migration.sql +17 -0
- package/prisma/migrations/20250710054113_alter_bid_and_quotation_status/migration.sql +31 -0
- package/prisma/migrations/20250710070813_alter_event_status/migration.sql +2 -0
- package/prisma/migrations/20250710082332_alter_bid_and_quotations_table/migration.sql +36 -0
- package/prisma/migrations/20250714102325_init_upload_log_table/migration.sql +27 -0
- package/prisma/migrations/20250716061012_alter_event_activity_logs_to_activity_logs/migration.sql +48 -0
- package/prisma/migrations/20250716071839_init_chat_thread_chat_message_and_ai_models/migration.sql +56 -0
- package/prisma/migrations/20250716135548_alter_admin_alerts_enum/migration.sql +2 -0
- package/prisma/migrations/20250717100515_init_user_event_configuration/migration.sql +21 -0
- package/prisma/migrations/20250717101037_alter_user_event_configuration_table/migration.sql +19 -0
- package/prisma/migrations/20250718071630_alter_added_module_in_upload_logs_table/migration.sql +5 -0
- package/prisma/migrations/20250718071732_alter_module_enum/migration.sql +15 -0
- package/prisma/migrations/20250721054851_init_export_log_table/migration.sql +34 -0
- package/prisma/migrations/20250722054549_init_fiscal_year_table/migration.sql +22 -0
- package/prisma/migrations/20250722072051_alter_fiscal_year_table_added_uuid/migration.sql +14 -0
- package/prisma/migrations/20250722095259_alter_fiscal_table/migration.sql +9 -0
- package/prisma/migrations/20250723071050_alter_department_table/migration.sql +14 -0
- package/prisma/migrations/20250724071201_alter_export_upload_log_enum/migration.sql +8 -0
- package/prisma/migrations/20250725094759_new_migrate/migration.sql +2 -0
- package/prisma/migrations/20250725095012_alter_migration/migration.sql +2 -0
- package/prisma/migrations/20250728072402_init_budget_management_tables/migration.sql +80 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +2609 -0
- package/prisma/seeders/approval-hierarchy.seed.js +340 -0
- package/prisma/seeders/attribute-value.seed.js +64 -0
- package/prisma/seeders/attribute.seed.js +61 -0
- package/prisma/seeders/category.seed.js +133 -0
- package/prisma/seeders/city.seed.js +147 -0
- package/prisma/seeders/country.seed.js +282 -0
- package/prisma/seeders/currency.seed.js +41 -0
- package/prisma/seeders/customer-notification.seed.js +83 -0
- package/prisma/seeders/department.seed.js +38 -0
- package/prisma/seeders/docs/CORE_SEEDER_OPTIMIZATIONS.md +270 -0
- package/prisma/seeders/docs/GEOGRAPHIC_PERFORMANCE_OPTIMIZATIONS.md +175 -0
- package/prisma/seeders/dynamic-form.seed.js +135 -0
- package/prisma/seeders/email-template.seed.js +68 -0
- package/prisma/seeders/faq-category.seed.js +56 -0
- package/prisma/seeders/faq.seed.js +61 -0
- package/prisma/seeders/form-master.seed.js +55 -0
- package/prisma/seeders/item.seed.js +133 -0
- package/prisma/seeders/permission.seed.js +102 -0
- package/prisma/seeders/region.seed.js +78 -0
- package/prisma/seeders/role-permission.seed.js +70 -0
- package/prisma/seeders/role.seed.js +38 -0
- package/prisma/seeders/seed.js +553 -0
- package/prisma/seeders/serial-number-config.seed.js +58 -0
- package/prisma/seeders/smtp-config.seed.js +61 -0
- package/prisma/seeders/state.seed.js +170 -0
- package/prisma/seeders/strategies.seed.js +54 -0
- package/prisma/seeders/subregion.seed.js +88 -0
- package/prisma/seeders/support-category.seed.js +56 -0
- package/prisma/seeders/template.seed.js +87 -0
- package/prisma/seeders/test-core-seeders.js +276 -0
- package/prisma/seeders/user-department.seed.js +66 -0
- package/prisma/seeders/user-event-configuration.seed.js +47 -0
- package/prisma/seeders/user-role.seed.js +74 -0
- package/prisma/seeders/user.seed.js +114 -0
- package/prisma/seeders/utils/bulk-seeder.js +300 -0
- package/prisma/seeders/utils/config.js +103 -0
- package/prisma/seeders/utils/connection-manager.js +380 -0
- package/prisma/seeders/utils/content-seeder.js +472 -0
- package/prisma/seeders/utils/core-seeder.js +330 -0
- package/prisma/seeders/utils/json-loader.js +69 -0
- package/prisma/seeders/utils/performance-config.js +341 -0
- package/prisma/seeders/utils/performance-helpers.js +206 -0
- package/prisma/seeders/utils/progress-tracker.js +364 -0
- package/prisma/seeders/utils/seeder-config-mapper.js +316 -0
- package/scripts/seed-databases.js +873 -0
- package/scripts/sync-schemas.js +865 -0
- package/scripts/truncate-tables.js +1048 -0
- package/src/prisma/client.d.ts +1 -0
- package/src/prisma/client.js +4 -0
- package/src/prisma/default.d.ts +1 -0
- package/src/prisma/default.js +4 -0
- package/src/prisma/edge.d.ts +1 -0
- package/src/prisma/edge.js +2084 -0
- package/src/prisma/index-browser.js +2043 -0
- package/src/prisma/index.d.ts +202051 -0
- package/src/prisma/index.js +2113 -0
- package/src/prisma/libquery_engine-darwin.dylib.node +0 -0
- package/src/prisma/libquery_engine-darwin.dylib.node.tmp24628 +0 -0
- package/src/prisma/libquery_engine-darwin.dylib.node.tmp29464 +0 -0
- package/src/prisma/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
- package/src/prisma/package.json +140 -0
- package/src/prisma/query_engine-windows.dll.node +0 -0
- package/src/prisma/query_engine-windows.dll.node.tmp4144 +0 -0
- package/src/prisma/runtime/edge-esm.js +34 -0
- package/src/prisma/runtime/edge.js +34 -0
- package/src/prisma/runtime/index-browser.d.ts +370 -0
- package/src/prisma/runtime/index-browser.js +16 -0
- package/src/prisma/runtime/library.d.ts +3647 -0
- package/src/prisma/runtime/library.js +146 -0
- package/src/prisma/runtime/react-native.js +83 -0
- package/src/prisma/runtime/wasm.js +35 -0
- package/src/prisma/schema.prisma +2609 -0
- package/src/prisma/wasm.d.ts +1 -0
- package/src/prisma/wasm.js +2043 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// prisma/seed.ts
|
|
2
|
+
|
|
3
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
4
|
+
import { loadContentData } from "./utils/json-loader.js";
|
|
5
|
+
import {
|
|
6
|
+
createProgressTracker,
|
|
7
|
+
logSeederStart,
|
|
8
|
+
logSeederComplete,
|
|
9
|
+
logEntityError,
|
|
10
|
+
} from "./utils/progress-tracker.js";
|
|
11
|
+
|
|
12
|
+
export async function seedFaq(prismaClient) {
|
|
13
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
14
|
+
const prisma = prismaClient || new PrismaClient();
|
|
15
|
+
|
|
16
|
+
logSeederStart("FAQs");
|
|
17
|
+
|
|
18
|
+
// Load FAQs from JSON
|
|
19
|
+
const faqData = loadContentData("faqs");
|
|
20
|
+
|
|
21
|
+
// Create progress tracker
|
|
22
|
+
const tracker = createProgressTracker(faqData.length, "FAQs");
|
|
23
|
+
|
|
24
|
+
for (const faq of faqData) {
|
|
25
|
+
try {
|
|
26
|
+
await prisma.faq.upsert({
|
|
27
|
+
where: {
|
|
28
|
+
faq_category_id_question_faq_type: {
|
|
29
|
+
faq_category_id: faq.faq_category_id,
|
|
30
|
+
question: faq.question,
|
|
31
|
+
faq_type: faq.faq_type,
|
|
32
|
+
},
|
|
33
|
+
}, // Use composite unique constraint
|
|
34
|
+
update: {
|
|
35
|
+
faq_type: faq.faq_type,
|
|
36
|
+
faq_category_id: faq.faq_category_id,
|
|
37
|
+
answer: faq.answer,
|
|
38
|
+
is_active: faq.is_active,
|
|
39
|
+
},
|
|
40
|
+
create: {
|
|
41
|
+
faq_type: faq.faq_type,
|
|
42
|
+
faq_category_id: faq.faq_category_id,
|
|
43
|
+
question: faq.question,
|
|
44
|
+
answer: faq.answer,
|
|
45
|
+
is_active: faq.is_active ?? true, // Default to true if not provided
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
} catch (error) {
|
|
49
|
+
// Log error but don't interrupt progress bar
|
|
50
|
+
logEntityError("FAQ", faq.question, error.message);
|
|
51
|
+
}
|
|
52
|
+
tracker.update();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
logSeederComplete("FAQs");
|
|
56
|
+
|
|
57
|
+
// Only disconnect if we created our own client
|
|
58
|
+
if (!prismaClient) {
|
|
59
|
+
await prisma.$disconnect();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import { loadContentData } from "./utils/json-loader.js";
|
|
3
|
+
import {
|
|
4
|
+
createProgressTracker,
|
|
5
|
+
logSeederStart,
|
|
6
|
+
logSeederComplete,
|
|
7
|
+
logEntityError,
|
|
8
|
+
} from "./utils/progress-tracker.js";
|
|
9
|
+
|
|
10
|
+
export async function seedFormMaster(prismaClient) {
|
|
11
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
12
|
+
const prisma = prismaClient || new PrismaClient();
|
|
13
|
+
|
|
14
|
+
logSeederStart("form-master");
|
|
15
|
+
|
|
16
|
+
// Load form master data from JSON
|
|
17
|
+
const formMasterData = loadContentData("form-master");
|
|
18
|
+
|
|
19
|
+
// Create progress tracker
|
|
20
|
+
const tracker = createProgressTracker(formMasterData.length, "form masters");
|
|
21
|
+
|
|
22
|
+
for (const formMaster of formMasterData) {
|
|
23
|
+
try {
|
|
24
|
+
await prisma.formMaster.upsert({
|
|
25
|
+
where: {
|
|
26
|
+
module_slug: formMaster.module_slug,
|
|
27
|
+
},
|
|
28
|
+
update: {
|
|
29
|
+
module_name: formMaster.module_name,
|
|
30
|
+
is_active: formMaster.is_active,
|
|
31
|
+
is_deleted: formMaster.is_deleted,
|
|
32
|
+
created_by: formMaster.created_by,
|
|
33
|
+
},
|
|
34
|
+
create: {
|
|
35
|
+
module_name: formMaster.module_name,
|
|
36
|
+
module_slug: formMaster.module_slug,
|
|
37
|
+
is_active: formMaster.is_active,
|
|
38
|
+
is_deleted: formMaster.is_deleted,
|
|
39
|
+
created_by: formMaster.created_by,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
} catch (error) {
|
|
43
|
+
// Log error but don't interrupt progress bar
|
|
44
|
+
logEntityError("form master", formMaster.module_name, error.message);
|
|
45
|
+
}
|
|
46
|
+
tracker.update();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
logSeederComplete("Form-master");
|
|
50
|
+
|
|
51
|
+
// Only disconnect if we created our own client
|
|
52
|
+
if (!prismaClient) {
|
|
53
|
+
await prisma.$disconnect();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import { loadContentData } from "./utils/json-loader.js";
|
|
3
|
+
import { createContentSeeder } from "./utils/content-seeder.js";
|
|
4
|
+
import {
|
|
5
|
+
logSeederStart,
|
|
6
|
+
logSeederComplete,
|
|
7
|
+
logEntityError,
|
|
8
|
+
} from "./utils/progress-tracker.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Enhanced item seeder using content seeder with:
|
|
12
|
+
* - Medium batch processing (1000-2000 records)
|
|
13
|
+
* - Unique constraint mapping for item_code and item_name
|
|
14
|
+
* - Memory monitoring during large operations
|
|
15
|
+
* - Connection pooling through manager
|
|
16
|
+
*/
|
|
17
|
+
export async function seedItems(prismaClient) {
|
|
18
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
19
|
+
const prisma = prismaClient || new PrismaClient();
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
// Load items from JSON
|
|
23
|
+
const itemData = loadContentData("items");
|
|
24
|
+
|
|
25
|
+
if (!itemData || itemData.length === 0) {
|
|
26
|
+
console.log("No item data found to seed.");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Create enhanced content seeder with item-specific configuration
|
|
31
|
+
const seeder = await createContentSeeder('items', {
|
|
32
|
+
// Use connection pooling if no client is provided
|
|
33
|
+
useConnectionPooling: !prismaClient,
|
|
34
|
+
// Enable all enhanced features
|
|
35
|
+
enableUniqueConstraintMapping: true,
|
|
36
|
+
enableMemoryMonitoring: true,
|
|
37
|
+
batchUpsertMode: true,
|
|
38
|
+
// Item-specific unique fields for constraint mapping
|
|
39
|
+
uniqueFields: ['item_code', 'item_name'],
|
|
40
|
+
// Higher batch size for items (1000-2000 as configured)
|
|
41
|
+
batchSize: 2000,
|
|
42
|
+
// Memory monitoring configuration
|
|
43
|
+
memoryCheckInterval: 200,
|
|
44
|
+
memoryThreshold: 0.6,
|
|
45
|
+
// Retry configuration for robustness
|
|
46
|
+
retryAttempts: 3,
|
|
47
|
+
retryDelay: 1000,
|
|
48
|
+
exponentialBackoff: true,
|
|
49
|
+
// Logging
|
|
50
|
+
logProgress: true
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Custom processor for items (fallback if batch upsert fails)
|
|
54
|
+
const itemProcessor = async (chunk, chunkIndex, client) => {
|
|
55
|
+
let created = 0;
|
|
56
|
+
|
|
57
|
+
for (const item of chunk) {
|
|
58
|
+
try {
|
|
59
|
+
await client.item.upsert({
|
|
60
|
+
where: {
|
|
61
|
+
item_code: item.item_code, // Use a unique identifier
|
|
62
|
+
},
|
|
63
|
+
update: {
|
|
64
|
+
item_name: item.item_name,
|
|
65
|
+
slug: item.slug,
|
|
66
|
+
description: item.description,
|
|
67
|
+
terms_and_conditions: item.terms_and_conditions,
|
|
68
|
+
keywords: item.keywords,
|
|
69
|
+
is_active: item.is_active,
|
|
70
|
+
created_by: item.created_by,
|
|
71
|
+
updated_by: item.updated_by,
|
|
72
|
+
category_id: item.category_id,
|
|
73
|
+
},
|
|
74
|
+
create: {
|
|
75
|
+
item_id: item.item_id,
|
|
76
|
+
item_code: item.item_code,
|
|
77
|
+
item_name: item.item_name,
|
|
78
|
+
slug: item.slug,
|
|
79
|
+
description: item.description,
|
|
80
|
+
terms_and_conditions: item.terms_and_conditions,
|
|
81
|
+
keywords: item.keywords,
|
|
82
|
+
is_active: item.is_active,
|
|
83
|
+
created_by: item.created_by,
|
|
84
|
+
updated_by: item.updated_by,
|
|
85
|
+
category: item.category_id ? {
|
|
86
|
+
connect: { id: item.category_id },
|
|
87
|
+
} : undefined,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
created++;
|
|
91
|
+
} catch (error) {
|
|
92
|
+
// Log error but continue processing
|
|
93
|
+
logEntityError("item", item.item_name || item.item_code, error.message);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return { created };
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// Execute enhanced seeding with all new features
|
|
101
|
+
const result = await seeder.seedContent(
|
|
102
|
+
'items',
|
|
103
|
+
itemData,
|
|
104
|
+
itemProcessor,
|
|
105
|
+
prisma
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// Log summary
|
|
109
|
+
console.log(`\nItem seeding summary:`);
|
|
110
|
+
console.log(`- Total processed: ${result.totalProcessed.toLocaleString()}`);
|
|
111
|
+
console.log(`- Total created: ${result.totalCreated.toLocaleString()}`);
|
|
112
|
+
console.log(`- Errors: ${result.errors.length}`);
|
|
113
|
+
console.log(`- Memory peak: ${((result.memoryStats.maxHeapUsed - result.memoryStats.startHeapUsed) / 1024 / 1024).toFixed(2)}MB`);
|
|
114
|
+
console.log(`- GC triggered: ${result.memoryStats.gcTriggered} times`);
|
|
115
|
+
|
|
116
|
+
if (result.errors.length > 0) {
|
|
117
|
+
console.log("\nErrors encountered:");
|
|
118
|
+
result.errors.slice(0, 5).forEach(error => console.log(` - ${error}`));
|
|
119
|
+
if (result.errors.length > 5) {
|
|
120
|
+
console.log(` ... and ${result.errors.length - 5} more errors`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
} catch (error) {
|
|
125
|
+
logEntityError("items", "seeding process", error.message);
|
|
126
|
+
throw error;
|
|
127
|
+
} finally {
|
|
128
|
+
// Only disconnect if we created our own client
|
|
129
|
+
if (!prismaClient) {
|
|
130
|
+
await prisma.$disconnect();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import { createCoreSeeder } from "./utils/core-seeder.js";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
import colors from "colors";
|
|
7
|
+
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
|
|
10
|
+
export async function seedPermissions(prismaClient) {
|
|
11
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
12
|
+
const prisma = prismaClient || new PrismaClient();
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
// Path to the permissions directory
|
|
16
|
+
const permissionsDir = path.resolve(
|
|
17
|
+
__dirname,
|
|
18
|
+
"../json/core-data/permissions"
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
// Get all JSON files in the permissions directory
|
|
22
|
+
const permissionFiles = fs
|
|
23
|
+
.readdirSync(permissionsDir)
|
|
24
|
+
.filter((file) => file.endsWith(".json"));
|
|
25
|
+
|
|
26
|
+
// Array to store all permissions
|
|
27
|
+
let allPermissions = [];
|
|
28
|
+
|
|
29
|
+
// Read each permission file and merge permissions
|
|
30
|
+
for (const file of permissionFiles) {
|
|
31
|
+
try {
|
|
32
|
+
const filePath = path.join(permissionsDir, file);
|
|
33
|
+
const fileData = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
34
|
+
|
|
35
|
+
console.log(colors.gray(`Loaded ${fileData.length} permissions from ${file}`));
|
|
36
|
+
allPermissions = [...allPermissions, ...fileData];
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(colors.red(`Error loading permissions from ${file}: ${error.message}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log(colors.cyan(`Total permissions to seed: ${allPermissions.length}`));
|
|
43
|
+
|
|
44
|
+
// Create optimized core seeder with retry logic for critical permission data
|
|
45
|
+
const coreSeeder = createCoreSeeder(prisma, {
|
|
46
|
+
profile: 'stability', // Permissions are critical entities
|
|
47
|
+
enableRetries: true,
|
|
48
|
+
logProgress: true
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Create processor function for permission upserts
|
|
52
|
+
const permissionProcessor = async (permission, options = {}) => {
|
|
53
|
+
try {
|
|
54
|
+
const result = await prisma.permission.upsert({
|
|
55
|
+
where: {
|
|
56
|
+
slug: permission.slug,
|
|
57
|
+
},
|
|
58
|
+
update: {
|
|
59
|
+
permissions_name: permission.permissions_name,
|
|
60
|
+
description: permission.description,
|
|
61
|
+
model: permission.model,
|
|
62
|
+
is_active: permission.is_active,
|
|
63
|
+
created_by: permission.created_by,
|
|
64
|
+
},
|
|
65
|
+
create: {
|
|
66
|
+
permissions_name: permission.permissions_name,
|
|
67
|
+
slug: permission.slug,
|
|
68
|
+
description: permission.description,
|
|
69
|
+
model: permission.model,
|
|
70
|
+
is_active: permission.is_active,
|
|
71
|
+
created_by: permission.created_by,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Simple heuristic to determine if this was create or update
|
|
76
|
+
const isNewRecord = result.created_at &&
|
|
77
|
+
new Date(result.created_at).getTime() > Date.now() - 5000;
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
created: isNewRecord,
|
|
81
|
+
updated: !isNewRecord
|
|
82
|
+
};
|
|
83
|
+
} catch (error) {
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// Process permissions with optimized core seeder
|
|
89
|
+
const result = await coreSeeder.processCore(
|
|
90
|
+
allPermissions,
|
|
91
|
+
permissionProcessor,
|
|
92
|
+
'permissions'
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
return result;
|
|
96
|
+
} finally {
|
|
97
|
+
// Only disconnect if we created our own client
|
|
98
|
+
if (!prismaClient) {
|
|
99
|
+
await prisma.$disconnect();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
5
|
+
import {
|
|
6
|
+
createProgressTracker,
|
|
7
|
+
logSeederStart,
|
|
8
|
+
logSeederComplete,
|
|
9
|
+
logSeederError,
|
|
10
|
+
logEntityError,
|
|
11
|
+
} from "./utils/progress-tracker.js";
|
|
12
|
+
import { loadGeoData } from "./utils/json-loader.js";
|
|
13
|
+
|
|
14
|
+
// Map to store JSON ID to database ID mapping
|
|
15
|
+
const regionIdMap = new Map();
|
|
16
|
+
|
|
17
|
+
export async function seedRegions(prismaClient) {
|
|
18
|
+
// Use provided transaction object or create a new prisma client
|
|
19
|
+
const prisma = prismaClient || new PrismaClient();
|
|
20
|
+
|
|
21
|
+
logSeederStart("regions");
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
// Load categories from JSON
|
|
25
|
+
const regionsData = loadGeoData("regions");
|
|
26
|
+
|
|
27
|
+
// Create progress tracker
|
|
28
|
+
const tracker = createProgressTracker(regionsData.length, "regions");
|
|
29
|
+
|
|
30
|
+
// Process each region using upsert
|
|
31
|
+
for (const region of regionsData) {
|
|
32
|
+
const jsonId = region.id;
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
// Upsert region using Prisma
|
|
36
|
+
const dbRegion = await prisma.region.upsert({
|
|
37
|
+
where: {
|
|
38
|
+
name: region.name,
|
|
39
|
+
},
|
|
40
|
+
update: {
|
|
41
|
+
translations: region.translations,
|
|
42
|
+
wikiDataId: region.wikiDataId,
|
|
43
|
+
},
|
|
44
|
+
create: {
|
|
45
|
+
name: region.name,
|
|
46
|
+
translations: region.translations,
|
|
47
|
+
wikiDataId: region.wikiDataId,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Store the mapping between JSON ID and database ID
|
|
52
|
+
regionIdMap.set(jsonId, dbRegion.id);
|
|
53
|
+
} catch (error) {
|
|
54
|
+
// Log error but don't interrupt progress bar
|
|
55
|
+
logEntityError("regions", region.name, error.message);
|
|
56
|
+
}
|
|
57
|
+
tracker.update();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
logSeederComplete("Regions");
|
|
61
|
+
|
|
62
|
+
// Only disconnect if we created our own client
|
|
63
|
+
if (!prismaClient) {
|
|
64
|
+
await prisma.$disconnect();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return regionIdMap;
|
|
68
|
+
} catch (error) {
|
|
69
|
+
logSeederError("regions", error);
|
|
70
|
+
|
|
71
|
+
// Only disconnect if we created our own client
|
|
72
|
+
if (!prismaClient) {
|
|
73
|
+
await prisma.$disconnect();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import {
|
|
3
|
+
createProgressTracker,
|
|
4
|
+
logSeederStart,
|
|
5
|
+
logSeederComplete,
|
|
6
|
+
logEntityError,
|
|
7
|
+
} from "./utils/progress-tracker.js";
|
|
8
|
+
|
|
9
|
+
export async function seedRolePermission(prismaClient) {
|
|
10
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
11
|
+
const prisma = prismaClient || new PrismaClient();
|
|
12
|
+
|
|
13
|
+
logSeederStart("role & permission mapping");
|
|
14
|
+
|
|
15
|
+
const adminRole = await prisma.role.findMany({
|
|
16
|
+
where: { slug: { in: ["super_admin", "admin"] } },
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
if (!adminRole.length) {
|
|
20
|
+
console.log(
|
|
21
|
+
"Warning: Super admin role not found. Skipping permission assignment."
|
|
22
|
+
);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
for (const role of adminRole) {
|
|
27
|
+
await prisma.rolePermission.deleteMany({ where: { role_id: role.id } });
|
|
28
|
+
console.log(`Existing permissions cleared for role: ${role.role_name}`);
|
|
29
|
+
|
|
30
|
+
const allPermissions = await prisma.permission.findMany({
|
|
31
|
+
where: { is_active: true },
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (allPermissions.length > 0) {
|
|
35
|
+
console.log(
|
|
36
|
+
`Assigning ${allPermissions.length} permissions to role: ${role.role_name}`
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
// Create progress tracker
|
|
40
|
+
const tracker = createProgressTracker(
|
|
41
|
+
allPermissions.length,
|
|
42
|
+
"permissions"
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const rolePermissions = [];
|
|
46
|
+
allPermissions.forEach((permission) => {
|
|
47
|
+
rolePermissions.push({
|
|
48
|
+
role_id: role.id,
|
|
49
|
+
permission_id: permission.id,
|
|
50
|
+
});
|
|
51
|
+
tracker.update();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
await prisma.rolePermission.createMany({ data: rolePermissions });
|
|
56
|
+
} catch (error) {
|
|
57
|
+
// Log error but don't interrupt progress bar
|
|
58
|
+
logEntityError("role permissions", adminRole.role_name, error.message);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
console.log("No active permissions found to assign");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
logSeederComplete("Role & Permission mapping");
|
|
65
|
+
|
|
66
|
+
// Only disconnect if we created our own client
|
|
67
|
+
if (!prismaClient) {
|
|
68
|
+
await prisma.$disconnect();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PrismaClient } from "../../src/prisma/index.js";
|
|
2
|
+
import { loadCoreData } from "./utils/json-loader.js";
|
|
3
|
+
import { seedCoreEntity } from "./utils/core-seeder.js";
|
|
4
|
+
|
|
5
|
+
export async function seedRoles(prismaClient) {
|
|
6
|
+
// Use the passed client or create new one only if needed (for standalone testing)
|
|
7
|
+
const prisma = prismaClient || new PrismaClient();
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
// Load roles from JSON
|
|
11
|
+
const roleData = loadCoreData("roles");
|
|
12
|
+
|
|
13
|
+
// Process roles with optimized core seeder
|
|
14
|
+
const result = await seedCoreEntity(
|
|
15
|
+
prisma,
|
|
16
|
+
roleData,
|
|
17
|
+
'roles',
|
|
18
|
+
{
|
|
19
|
+
model: 'role',
|
|
20
|
+
whereField: 'slug',
|
|
21
|
+
updateFields: ['role_name', 'description', 'is_active'],
|
|
22
|
+
createFields: ['role_name', 'slug', 'description', 'is_active']
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
profile: 'stability', // Roles are critical entities
|
|
26
|
+
enableRetries: true,
|
|
27
|
+
logProgress: true
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
return result;
|
|
32
|
+
} finally {
|
|
33
|
+
// Only disconnect if we created our own client
|
|
34
|
+
if (!prismaClient) {
|
|
35
|
+
await prisma.$disconnect();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|