From 30a17a8c2e2464e2582217b17fb252ee04c637a6 Mon Sep 17 00:00:00 2001 From: Md Afiq Iskandar Date: Thu, 26 Jun 2025 10:38:35 +0800 Subject: [PATCH] Refactor navigation structure by simplifying the menu items and removing unused pages for improved clarity and performance. Additionally, clean up the Prisma schema by removing obsolete notification models to streamline database management. --- navigation/index.js | 106 +--- pages/BF-PRF/AS/DETAIL/[id]/index.vue | 674 -------------------------- pages/BF-PRF/AS/LIST/index.vue | 337 ------------- prisma/schema.prisma | 232 --------- 4 files changed, 17 insertions(+), 1332 deletions(-) delete mode 100644 pages/BF-PRF/AS/DETAIL/[id]/index.vue delete mode 100644 pages/BF-PRF/AS/LIST/index.vue diff --git a/navigation/index.js b/navigation/index.js index c542d5b..372f90f 100644 --- a/navigation/index.js +++ b/navigation/index.js @@ -1,94 +1,22 @@ export default [ { - "header": "Utama", - "description": "", - "child": [ + header: "Utama", + description: "", + child: [ { - "title": "Dashboard", - "path": "/dashboard", - "icon": "ic:outline-dashboard", - "child": [], - "meta": {} - } + title: "Dashboard", + path: "/dashboard", + icon: "ic:outline-dashboard", + child: [], + meta: {}, + }, + { + title: "API Platform", + path: "/api-platform", + icon: "ic:outline-api", + child: [], + }, ], - "meta": {} + meta: {}, }, - { - "header": "Pentadbiran", - "description": "Urus aplikasi anda", - "child": [ - { - "title": "API Platform", - "path": "/api-platform", - "icon": "", - "child": [] - }, - { - "title": "Konfigurasi", - "icon": "ic:outline-settings", - "child": [ - { - "title": "Persekitaran", - "path": "/devtool/config/environment" - }, - { - "title": "Site Settings", - "path": "/devtool/config/site-settings" - } - ] - }, - { - "title": "Penyunting Menu", - "icon": "ci:menu-alt-03", - "path": "/devtool/menu-editor", - "child": [] - }, - { - "title": "Urus Pengguna", - "path": "/devtool/user-management", - "icon": "ph:user-circle-gear", - "child": [ - { - "title": "Senarai Pengguna", - "path": "/devtool/user-management/user", - "icon": "", - "child": [] - }, - { - "title": "Senarai Peranan", - "path": "/devtool/user-management/role", - "icon": "", - "child": [] - } - ] - }, - { - "title": "Kandungan", - "icon": "mdi:pencil-ruler", - "child": [ - { - "title": "Penyunting", - "path": "/devtool/content-editor" - }, - { - "title": "Templat", - "path": "/devtool/content-editor/template" - } - ] - }, - { - "title": "Penyunting API", - "path": "/devtool/api-editor", - "icon": "material-symbols:api-rounded", - "child": [] - } - ], - "meta": { - "auth": { - "role": [ - "Developer" - ] - } - } - } -]; \ No newline at end of file +]; diff --git a/pages/BF-PRF/AS/DETAIL/[id]/index.vue b/pages/BF-PRF/AS/DETAIL/[id]/index.vue deleted file mode 100644 index 81c6af4..0000000 --- a/pages/BF-PRF/AS/DETAIL/[id]/index.vue +++ /dev/null @@ -1,674 +0,0 @@ - - - \ No newline at end of file diff --git a/pages/BF-PRF/AS/LIST/index.vue b/pages/BF-PRF/AS/LIST/index.vue deleted file mode 100644 index 00a279a..0000000 --- a/pages/BF-PRF/AS/LIST/index.vue +++ /dev/null @@ -1,337 +0,0 @@ - - - \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a3dadf1..34d2c01 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -99,235 +99,3 @@ model site_settings { settingModifiedDate DateTime? @db.DateTime(0) siteLoginLogo String? @db.VarChar(500) } - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_analytics { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - metric_type String @db.VarChar(30) - metric_value Int? @default(0) - recorded_at DateTime? @default(now()) @db.Timestamp(0) - metadata Json? @default(dbgenerated("(_utf8mb4\\'{}\\')")) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_analytics_ibfk_1") - - @@index([notification_id], map: "idx_notification_analytics_notification_id") -} - -model notification_categories { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - description String? @db.Text - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications[] -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_channels { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - is_enabled Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_channels_ibfk_1") - - @@index([notification_id], map: "notification_id") -} - -model notification_delivery { - id Int @id @default(autoincrement()) - notification_id Int - channel_type String - recipient String - is_success Boolean @default(false) - error_message String? @db.Text - attempts Int @default(0) - sent_at DateTime? - delivered_at DateTime? - created_at DateTime @default(now()) - updated_at DateTime -} - -model notification_delivery_config { - id Int @id @default(autoincrement()) - channel_type String @unique - is_enabled Boolean @default(false) - provider String - provider_config Json @default(dbgenerated("(_utf8mb4\\'{}\\')")) - status String @default("Not Configured") - success_rate Float @default(0) @db.Float - created_at DateTime @default(now()) - updated_at DateTime - created_by Int - updated_by Int -} - -model notification_delivery_settings { - id Int @id @default(1) - auto_retry Boolean @default(true) - enable_fallback Boolean @default(true) - max_retries Int @default(3) - retry_delay Int @default(30) - priority String @default("normal") - enable_reports Boolean @default(true) - created_at DateTime @default(now()) - updated_at DateTime - created_by Int - updated_by Int -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_queue { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - recipient_id String @db.VarChar(36) - scheduled_for DateTime @db.Timestamp(0) - priority Int? @default(5) - attempts Int? @default(0) - max_attempts Int? @default(3) - status String? @default("queued") @db.VarChar(20) - last_attempt_at DateTime? @db.Timestamp(0) - error_message String? @db.Text - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_1") - notification_recipients notification_recipients @relation(fields: [recipient_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_2") - - @@index([scheduled_for], map: "idx_notification_queue_scheduled_for") - @@index([status], map: "idx_notification_queue_status") - @@index([notification_id], map: "notification_id") - @@index([recipient_id], map: "recipient_id") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_recipients { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - user_id String @db.VarChar(36) - email String? @db.VarChar(255) - channel_type String @db.VarChar(20) - status String? @default("pending") @db.VarChar(20) - sent_at DateTime? @db.Timestamp(0) - delivered_at DateTime? @db.Timestamp(0) - opened_at DateTime? @db.Timestamp(0) - clicked_at DateTime? @db.Timestamp(0) - error_message String? @db.Text - ab_test_variant String? @db.VarChar(1) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notification_queue notification_queue[] - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_recipients_ibfk_1") - - @@index([status], map: "idx_notification_recipients_status") - @@index([user_id], map: "idx_notification_recipients_user_id") - @@index([notification_id], map: "notification_id") -} - -model notification_templates { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - subject String? @db.VarChar(255) - email_content String? @db.Text - push_title String? @db.VarChar(100) - push_body String? @db.VarChar(300) - variables Json? @default(dbgenerated("(_utf8mb4\\'[]\\')")) - is_active Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications[] -} - -model notification_user_segments { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - segment_id String @db.VarChar(36) - created_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_user_segments_ibfk_1") - user_segments user_segments @relation(fields: [segment_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notification_user_segments_ibfk_2") - - @@index([notification_id], map: "notification_id") - @@index([segment_id], map: "segment_id") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notifications { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - title String @db.VarChar(255) - type String @db.VarChar(20) - priority String @db.VarChar(20) - category_id String? @db.VarChar(36) - status String? @default("draft") @db.VarChar(20) - delivery_type String @db.VarChar(20) - scheduled_at DateTime? @db.Timestamp(0) - timezone String? @default("UTC") @db.VarChar(50) - expires_at DateTime? @db.Timestamp(0) - enable_ab_testing Boolean? @default(false) - ab_test_split Int? @default(50) - ab_test_name String? @db.VarChar(100) - enable_tracking Boolean? @default(true) - audience_type String @db.VarChar(20) - specific_users String? @db.Text - user_status String? @db.VarChar(20) - registration_period String? @db.VarChar(50) - exclude_unsubscribed Boolean? @default(true) - respect_do_not_disturb Boolean? @default(true) - content_type String @db.VarChar(20) - template_id String? @db.VarChar(36) - email_subject String? @db.VarChar(255) - email_content String? @db.Text - call_to_action_text String? @db.VarChar(100) - call_to_action_url String? @db.Text - push_title String? @db.VarChar(100) - push_body String? @db.VarChar(300) - push_image_url String? @db.Text - estimated_reach Int? @default(0) - actual_sent Int? @default(0) - created_by String @db.VarChar(36) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - sent_at DateTime? @db.Timestamp(0) - notification_analytics notification_analytics[] - notification_channels notification_channels[] - notification_queue notification_queue[] - notification_recipients notification_recipients[] - notification_user_segments notification_user_segments[] - notification_categories notification_categories? @relation(fields: [category_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_1") - notification_templates notification_templates? @relation(fields: [template_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_2") - - @@index([category_id], map: "category_id") - @@index([created_by], map: "idx_notifications_created_by") - @@index([scheduled_at], map: "idx_notifications_scheduled_at") - @@index([status], map: "idx_notifications_status") - @@index([template_id], map: "template_id") -} - -model user_notification_preferences { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - user_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - category_value String? @db.VarChar(50) - is_enabled Boolean? @default(true) - do_not_disturb_start DateTime? @db.Time(0) - do_not_disturb_end DateTime? @db.Time(0) - timezone String? @default("UTC") @db.VarChar(50) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - - @@unique([user_id, channel_type, category_value], map: "user_id") - @@index([user_id], map: "idx_user_notification_preferences_user_id") -} - -model user_segments { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - description String? @db.Text - criteria Json - is_active Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notification_user_segments notification_user_segments[] -}