# Kernmodell Dieses Kernmodell beschreibt die wichtigsten Klassen, die OnlyPrompt fuer Login, Profile, Marketplace und Prompt-Kaeufe benoetigt. ## Klassen ### User - `id: int` - `username: string` - `email: string` - `passwordHash: string` - `role: string` - `createdAt: datetime` ### Profile - `id: int` - `userId: int` - `displayName: string` - `bio: string` - `avatarUrl: string` - `specialties: string` ### Prompt - `id: int` - `creatorId: int` - `categoryId: int` - `title: string` - `description: string` - `content: text` - `price: decimal` - `thumbnailUrl: string` - `ratingAverage: float` - `reviewCount: int` - `status: string` - `createdAt: datetime` - `updatedAt: datetime` ### Category - `id: int` - `name: string` - `slug: string` ### Purchase - `id: int` - `buyerId: int` - `promptId: int` - `pricePaid: decimal` - `purchasedAt: datetime` ### Review - `id: int` - `promptId: int` - `userId: int` - `rating: int` - `comment: string` - `createdAt: datetime` ## Beziehungen - Ein `User` hat genau ein `Profile`. - Ein `User` kann viele `Prompts` erstellen. - Ein `Prompt` gehoert zu genau einer `Category`. - Ein `User` kann viele `Prompts` ueber `Purchase` kaufen. - Ein `User` kann viele `Reviews` schreiben. - Ein `Prompt` kann viele `Reviews` erhalten. ## UML-Kurzform ```text User 1 --- 1 Profile User 1 --- * Prompt Category 1 --- * Prompt User 1 --- * Purchase Prompt 1 --- * Purchase User 1 --- * Review Prompt 1 --- * Review ```