This commit is contained in:
Shnimlz
2025-12-01 18:59:48 +00:00
parent 9c20ca0930
commit 7661b2b8b1
117 changed files with 17954 additions and 3591 deletions

View File

@@ -10,8 +10,8 @@ generator client {
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
provider = "postgresql"
url = env("DATABASE_URL")
}
/**
@@ -101,6 +101,9 @@ model User {
AuditLog AuditLog[]
PlayerStatusEffect PlayerStatusEffect[]
DeathLog DeathLog[]
// Suscripción
subscription UserSubscription?
}
/**
@@ -1176,6 +1179,7 @@ model PlaylistTrack {
thumbnail String?
url String?
addedAt DateTime @default(now())
order Int @default(0)
playlist MusicPlaylist @relation(fields: [playlistId], references: [id], onDelete: Cascade)
@@ -1202,3 +1206,52 @@ model TrackLike {
@@index([userId, guildId])
@@index([trackId])
}
/**
* -----------------------------------------------------------------------------
* Sistema de Cupones y Suscripciones
* -----------------------------------------------------------------------------
*/
model Coupon {
id String @id @default(cuid())
code String @unique
type String // IMPORT_LIMIT, VOLUME_BOOST, PRO_RECOMMENDATIONS, ALL_ACCESS
value Int // Valor numérico (ej. 500 canciones, 200% volumen)
maxUses Int @default(1)
usedCount Int @default(0)
daysValid Int? // Días de duración de la suscripción una vez canjeado
expiresAt DateTime? // Fecha de expiración del cupón (si no se usa)
redemptions CouponRedemption[]
createdAt DateTime @default(now())
createdBy String // ID del admin/owner
}
model CouponRedemption {
id String @id @default(cuid())
couponId String
userId String
redeemedAt DateTime @default(now())
coupon Coupon @relation(fields: [couponId], references: [id])
@@unique([couponId, userId]) // Un usuario solo puede canjear un cupón una vez
}
model UserSubscription {
userId String @id
// Beneficios activos
importLimit Int @default(100)
maxVolume Int @default(100)
recommendationLevel String @default("standard") // standard, pro
// Expiración de beneficios
expiresAt DateTime?
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id])
}