feat: add UI components for alert dialog, badge, checkbox, dialog, label, select, sheet, table, textarea
- Implemented AlertDialog component with overlay, content, header, footer, title, description, action, and cancel functionalities. - Created Badge component with variant support for different styles. - Developed Checkbox component with custom styling and indicator. - Added Dialog component with trigger, close, overlay, content, header, footer, title, and description. - Introduced Label component for form elements. - Built Select component with trigger, content, group, item, label, separator, and scroll buttons. - Created Sheet component with trigger, close, overlay, content, header, footer, title, and description. - Implemented Table component with header, body, footer, row, head, cell, and caption. - Added Textarea component with custom styling. - Established API service for game management with CRUD operations and metadata search functionalities. - Updated dependencies in package lock files.
This commit is contained in:
@@ -15,19 +15,49 @@ model Game {
|
||||
slug String @unique
|
||||
description String?
|
||||
releaseDate DateTime?
|
||||
genre String?
|
||||
platform String?
|
||||
year Int?
|
||||
cover String?
|
||||
|
||||
// Fuente del juego
|
||||
source String @default("manual") // "rom", "manual", "igdb", "rawg", "thegamesdb", etc.
|
||||
sourceId String? // ID en la fuente externa (para igdb, rawg, etc.)
|
||||
|
||||
// Datos específicos de ROM (si source = "rom")
|
||||
romPath String?
|
||||
romFilename String?
|
||||
romSize Int?
|
||||
romChecksum String?
|
||||
romFormat String?
|
||||
romHashes String? // JSON serialized (ej.: {"crc32": "...", "md5": "...", "sha1": "..."})
|
||||
|
||||
// IDs de integraciones externas (mantener compatibilidad con datos existentes)
|
||||
igdbId Int? @unique
|
||||
rawgId Int? @unique
|
||||
thegamesdbId Int? @unique
|
||||
extra String? // JSON serialized (usar parse/stringify al guardar/leer) para compatibilidad con SQLite
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
romFiles RomFile[]
|
||||
|
||||
// Metadatos adicionales de integraciones
|
||||
metadata String? // JSON serialized para datos adicionales de la fuente
|
||||
|
||||
// Relaciones existentes
|
||||
artworks Artwork[]
|
||||
purchases Purchase[]
|
||||
gamePlatforms GamePlatform[]
|
||||
priceHistories PriceHistory[]
|
||||
tags Tag[]
|
||||
|
||||
// Timestamps de ROM (para compatibilidad)
|
||||
addedAt DateTime @default(now())
|
||||
lastSeenAt DateTime?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([source])
|
||||
@@index([sourceId])
|
||||
@@index([title])
|
||||
@@index([romChecksum])
|
||||
}
|
||||
|
||||
model Platform {
|
||||
@@ -47,22 +77,6 @@ model GamePlatform {
|
||||
@@unique([gameId, platformId])
|
||||
}
|
||||
|
||||
model RomFile {
|
||||
id String @id @default(cuid())
|
||||
path String
|
||||
filename String
|
||||
checksum String @unique
|
||||
size Int
|
||||
format String
|
||||
hashes String? // JSON serialized (ej.: {"crc32": "...", "md5": "..."})
|
||||
game Game? @relation(fields: [gameId], references: [id])
|
||||
gameId String?
|
||||
addedAt DateTime @default(now())
|
||||
lastSeenAt DateTime?
|
||||
status String @default("active")
|
||||
@@index([checksum])
|
||||
}
|
||||
|
||||
model Artwork {
|
||||
id String @id @default(cuid())
|
||||
game Game @relation(fields: [gameId], references: [id])
|
||||
@@ -104,4 +118,5 @@ model PriceHistory {
|
||||
|
||||
// Metadatos:
|
||||
// Autor: GitHub Copilot
|
||||
// Última actualización: 2026-02-07
|
||||
// Última actualización: 2026-03-18
|
||||
// Unificación de juegos y ROMs en una sola entidad Game
|
||||
|
||||
Reference in New Issue
Block a user