File size: 4,542 Bytes
f31cfe8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = "file:./data/tinker.db"
relationMode = "prisma"
}
model User {
id String @id @default(cuid())
name String?
email String @unique
password String?
emailVerified DateTime?
image String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
subscription String @default("free")
credits Int @default(10)
maxDeals Int @default(5)
accounts Account[]
sessions Session[]
deals Deal[]
scanLogs ScanLog[]
negotiations Negotiation[]
transactions Transaction[]
queueItems QueueItem[]
@@map("users")
}
model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String?
access_token String?
expires_at Int?
token_type String?
scope String?
id_token String?
session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])
@@map("accounts")
}
model Session {
id String @id @default(cuid())
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("sessions")
}
model Deal {
id String @id @default(cuid())
userId String
title String
sourceUrl String
marketplace String
buyPrice Float
estimatedSell Float
profitMargin Float
confidence Float @default(0)
status String @default("pending")
scrapedAt DateTime @default(now())
analyzedAt DateTime?
negotiatedAt DateTime?
transactedAt DateTime?
sellerContact String?
notes String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
negotiations Negotiation[]
transaction Transaction?
@@index([userId, status])
@@map("deals")
}
model ScanLog {
id String @id @default(cuid())
userId String?
marketplace String
itemsScanned Int @default(0)
dealsFound Int @default(0)
duration Int
status String @default("completed")
error String?
createdAt DateTime @default(now())
user User? @relation(fields: [userId], references: [id], onDelete: SetNull)
@@index([createdAt])
@@map("scan_logs")
}
model Negotiation {
id String @id @default(cuid())
dealId String
userId String
message String
response String?
offeredPrice Float?
acceptedPrice Float?
status String @default("pending")
turn Int @default(1)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deal Deal @relation(fields: [dealId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([dealId])
@@map("negotiations")
}
model Transaction {
id String @id @default(cuid())
dealId String @unique
userId String
amount Float
fee Float @default(0)
netProfit Float
paymentMethod String
paymentStatus String @default("pending")
shippingAddress String?
trackingNumber String?
status String @default("pending")
createdAt DateTime @default(now())
completedAt DateTime?
deal Deal @relation(fields: [dealId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId, status])
@@map("transactions")
}
model QueueItem {
id String @id @default(cuid())
userId String
dealId String?
action String
priority Int @default(5)
status String @default("queued")
data String?
error String?
retries Int @default(0)
maxRetries Int @default(3)
scheduled DateTime?
startedAt DateTime?
finishedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([status, priority])
@@map("queue_items")
}
|