csa-backend-test/prisma/schema.cms.prisma

344 lines
9.2 KiB
Plaintext

generator client_cms {
provider = "prisma-client-js"
output = "clients/cms"
}
datasource db_cms {
provider = "mysql"
url = env("DATABASE_URL")
}
model AdminAccount {
UUID_AA String @id @default(uuid())
Username_AA String @unique
Email_AA String @unique
Password_AA String
LastLogin_AA DateTime?
UpdatedAt_AA DateTime @updatedAt
CreatedAt_AA DateTime @default(now())
}
model AppCredential {
UUID_AC String @id @default(uuid())
CreatedAt_AC DateTime @default(now())
TokenCredential_AC String @unique
UpdatedAt_AC DateTime @updatedAt
}
model AppContent {
UUID_APC String @id @default(uuid())
Content_APC String @db_cms.Text
CreatedAt_APC DateTime @default(now())
Filename_APC String?
Title_APC String
UpdatedAt_APC DateTime @updatedAt
Url_APC String?
Type_APC ContentType
CorpType_APC CorpType
TargetUrl_APC String?
}
model AppCampaign {
UUID_ACP String @id @default(uuid())
Title_ACP String
Content_ACP String @db_cms.Text
Date_ACP DateTime
Status_ACP CampaignStatus @default(pending)
UpdatedAt_ACP DateTime @updatedAt
CreatedAt_ACP DateTime @default(now())
TargetUsers_ACP Int? @default(0)
SentCount_ACP Int? @default(0)
SuccessCount_ACP Int? @default(0)
FailureCount_ACP Int? @default(0)
DeliveryRate_ACP Float? @default(0)
SentAt_ACP DateTime?
CompletedAt_ACP DateTime?
ErrorMessage_ACP String? @db_cms.Text
Data_ACP String? @db_cms.Text
ImageUrl_ACP String?
CampaignDelivery CampaignDelivery[]
}
model CampaignDelivery {
UUID_CD String @id @default(uuid()) @db_cms.Char(36)
Campaign_CD String
UserID_CD String
Token_CD String
Status_CD DeliveryStatus @default(pending)
SentAt_CD DateTime?
DeliveredAt_CD DateTime?
FailedAt_CD DateTime?
ErrorMessage_CD String? @db_cms.Text
ResponseData_CD String? @db_cms.Text
CreatedAt_CD DateTime @default(now())
UpdatedAt_CD DateTime @updatedAt
AppCampaign AppCampaign @relation(fields: [Campaign_CD], references: [UUID_ACP], onDelete: Cascade)
@@index([Campaign_CD])
@@index([UserID_CD])
}
model UsersToken {
UUID_UT String @id @default(uuid())
UserID_UT String @unique
Token_UT String @unique
UpdatedAt_UT DateTime @updatedAt
CreatedAt_UT DateTime @default(now())
UsersActivity UsersActivity[]
}
model UsersActivity {
UUID_UA String @id @default(uuid())
UUID_UT String
ActivityType_UA ActivityType
Params_UA String
NotifyAt_UA DateTime @default(now())
UpdatedAt_UA DateTime @updatedAt
CreatedAt_UA DateTime @default(now())
Processed_UA Boolean @default(false)
UsersToken UsersToken @relation(fields: [UUID_UT], references: [UUID_UT], onDelete: Cascade)
@@index([UUID_UT], map: "UsersActivity_UUID_UT_fkey")
}
model CrashReport {
UUID_CR String @id @default(uuid())
AppId_CR String
AppVersion_CR String
BuildVersion_CR String?
CrashId_CR String @unique
SessionId_CR String?
UserId_CR String?
CrashType_CR String
ExceptionName_CR String?
ExceptionReason_CR String? @db_cms.Text
StackTrace_CR String? @db_cms.LongText
ThreadName_CR String?
IsFatal_CR Boolean @default(true)
Severity_CR CrashSeverity @default(fatal)
Status_CR CrashStatus @default(new)
DeviceModel_CR String?
DeviceBrand_CR String?
OSName_CR DeviceOS @default(android)
OSVersion_CR String?
Architecture_CR String?
AvailableRam_CR BigInt?
TotalRam_CR BigInt?
AvailableDisk_CR BigInt?
TotalDisk_CR BigInt?
BatteryLevel_CR Float?
IsRooted_CR Boolean? @default(false)
IsDebugger_CR Boolean? @default(false)
NetworkType_CR String?
Breadcrumbs_CR Json?
CustomData_CR Json?
Logs_CR Json?
CrashCount_CR Int @default(1)
FirstOccurred_CR DateTime @default(now())
LastOccurred_CR DateTime @default(now())
AffectedUsers_CR Int @default(1)
CreatedAt_CR DateTime @default(now())
UpdatedAt_CR DateTime @updatedAt
ResolvedAt_CR DateTime?
ResolvedBy_CR String?
}
model CrashSession {
UUID_CS String @id @default(uuid())
SessionId_CS String @unique
AppId_CS String
AppVersion_CS String
UserId_CS String?
StartedAt_CS DateTime
EndedAt_CS DateTime?
Duration_CS Int?
IsCrashed_CS Boolean @default(false)
CrashCount_CS Int @default(0)
DeviceModel_CS String?
OSVersion_CS String?
CreatedAt_CS DateTime @default(now())
UpdatedAt_CS DateTime @updatedAt
}
model CrashAnalytics {
UUID_CA String @id @default(uuid())
AppId_CA String
AppVersion_CA String
Date_CA DateTime @db_cms.Date
TotalCrashes_CA Int @default(0)
FatalCrashes_CA Int @default(0)
NonFatalCrashes_CA Int @default(0)
UniqueCrashes_CA Int @default(0)
AffectedUsers_CA Int @default(0)
TotalSessions_CA Int @default(0)
CrashedSessions_CA Int @default(0)
CrashFreeRate_CA Float?
TopCrashes_CA Json?
CreatedAt_CA DateTime @default(now())
UpdatedAt_CA DateTime @updatedAt
@@unique([AppId_CA, AppVersion_CA, Date_CA])
}
model AINotification {
UUID_AIN String @id @default(uuid())
UserID_AIN String
AnalyzedActivities_AIN Int @default(0)
ActivityTypes_AIN String? @db_cms.Text
GeneratedTitle_AIN String
GeneratedDesc_AIN String @db_cms.Text
SentStatus_AIN DeliveryStatus @default(pending)
SentAt_AIN DateTime?
DeliveredAt_AIN DateTime?
FailedAt_AIN DateTime?
ErrorMessage_AIN String? @db_cms.Text
FCMMessageId_AIN String?
ResponseTime_AIN Int?
ProcessingTime_AIN Int?
ActivityTimeRange_AIN Int @default(60)
AIModel_AIN String @default("google/gemma-3n-e4b-it")
ScheduledAt_AIN DateTime?
PredictedConfidence_AIN Int?
PredictionReasoning_AIN String? @db_cms.VarChar(255)
UserEngagementPattern_AIN String? @db_cms.VarChar(50)
DelayMinutes_AIN Int?
CreatedAt_AIN DateTime @default(now())
UpdatedAt_AIN DateTime @updatedAt
@@index([UserID_AIN])
@@index([SentStatus_AIN])
@@index([CreatedAt_AIN])
@@index([SentStatus_AIN, ScheduledAt_AIN], name: "idx_scheduled_notifications")
@@index([UserID_AIN, UserEngagementPattern_AIN], name: "idx_user_pattern")
}
model AINotificationAnalytics {
UUID_ANA String @id @default(uuid())
Date_ANA DateTime @unique @db_cms.Date
TotalAnalyzed_ANA Int @default(0)
TotalGenerated_ANA Int @default(0)
TotalSent_ANA Int @default(0)
TotalDelivered_ANA Int @default(0)
TotalFailed_ANA Int @default(0)
DeliveryRate_ANA Float? @default(0)
AvgResponseTime_ANA Float? @default(0)
AvgProcessingTime_ANA Float? @default(0)
TopActivityTypes_ANA Json?
PopularTitles_ANA Json?
ErrorBreakdown_ANA Json?
CreatedAt_ANA DateTime @default(now())
UpdatedAt_ANA DateTime @updatedAt
}
model AppMenu {
UUID_AM String @id @default(uuid())
Name_AM String
Route_AM String
Icon_AM String
IsActive_AM Boolean @default(true)
Badge_AM String?
Order_AM Int @default(0)
Type_AM MenuType @default(IN_APP_ROUTE)
CreatedAt_AM DateTime @default(now())
UpdatedAt_AM DateTime @updatedAt
@@index([Order_AM])
@@index([IsActive_AM])
}
enum MenuType {
IN_APP_ROUTE
WEB_OPEN
}
enum CampaignStatus {
failed
pending
cancelled
completed
}
enum ContentType {
splash
promo
article
banner
floatingWidget
}
enum CorpType {
walanja
simaya
cifo
}
enum ActivityType {
VisitHotel
VisitRoom
VisitRetail
VisitCCTV
VisitTopup
VisitTransfer
VisitSwap
CheckBalance
InputDepositAmount
InputTransferAmount
ScanQRCode
SelectSwapPair
ViewArticle
ViewPromo
ViewDiscount
SearchHotel
FilterHotel
ViewHotelGallery
CheckRoomAvail
ViewProfile
UpdateProfile
ChangePIN
ViewQRCode
InitiateBooking
SelectCheckInDate
SelectCheckOutDate
ViewBookingSummary
SelectPaymentMethod
ViewPaymentEstimate
InitiatePayment
CheckInternetBill
ViewTransactionHistory
ViewNotification
ShareContent
SaveFavorite
ContactSupport
ViewFAQ
}
enum DeliveryStatus {
pending
scheduled
sent
delivered
failed
cancelled
}
enum CrashSeverity {
fatal
error
warning
info
}
enum CrashStatus {
new
acknowledged
resolved
ignored
}
enum DeviceOS {
android
ios
web
desktop
}