initial
This commit is contained in:
@@ -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])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user