chore(db): add query indexes migration and update project config

- Add database migration for missing query indexes on frequently filtered columns
- Update Prisma schema
- Update .env.example, eslint config, and dependency-cruiser config

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Ho Ngoc Hai
2026-04-09 09:44:37 +07:00
parent 7195064f12
commit ef47d9eb80
5 changed files with 126 additions and 2 deletions

View File

@@ -56,11 +56,14 @@ model User {
oauthAccounts OAuthAccount[]
buyerTransactions Transaction[] @relation("BuyerTransactions")
@@index([phone])
@@index([role])
@@index([kycStatus])
@@index([isActive])
@@index([createdAt])
// --- Compound indexes (query optimization) ---
@@index([role, isActive, createdAt(sort: Desc)])
@@index([kycStatus, createdAt])
}
enum OAuthProvider {
@@ -265,6 +268,7 @@ model Listing {
@@index([status, createdAt(sort: Desc)])
@@index([status, publishedAt(sort: Desc)])
@@index([transactionType, status, createdAt(sort: Desc)])
@@index([status, transactionType, priceVND])
}
// =============================================================================
@@ -410,6 +414,10 @@ model Payment {
@@index([status])
@@index([providerTxId])
@@index([createdAt])
// --- Compound indexes (query optimization) ---
@@index([userId, status, createdAt(sort: Desc)])
@@index([userId, type, createdAt(sort: Desc)])
}
// =============================================================================
@@ -494,6 +502,7 @@ model Valuation {
createdAt DateTime @default(now())
@@index([propertyId])
@@index([propertyId, createdAt(sort: Desc)])
}
model MarketIndex {
@@ -552,6 +561,7 @@ model NotificationLog {
@@index([templateKey])
@@index([createdAt])
@@index([userId, readAt])
@@index([userId, createdAt(sort: Desc)])
}
model NotificationPreference {
@@ -583,4 +593,5 @@ model Review {
@@index([targetType, targetId])
@@index([userId])
@@index([targetType, targetId, createdAt(sort: Desc)])
}