-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.prisma
124 lines (111 loc) · 3.33 KB
/
schema.prisma
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
generator client {
provider = "go run github.com/steebchen/prisma-client-go"
output = "./internal/database/prisma"
package = "prisma"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Provider {
id String @id @default(uuid())
slug String @unique
name String
scheme String
host String @db.Text
listPath String @db.Text
isActive Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
chapters Chapter[]
series Series[]
}
model Series {
id String @id @default(uuid())
slug String
title String @db.Text
sourcePath String @db.Text
thumbnailUrl String @db.Text
synopsis String @db.Text
genres Json
providerSlug String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
status Series_status @default(ONGOING)
chaptersCount Int @default(0)
latestChapter String @default("")
chapters Chapter[]
provider Provider @relation(fields: [providerSlug], references: [slug], onDelete: Cascade)
@@unique([providerSlug, slug], name: "seriesUnique")
@@index([providerSlug], map: "providerIndex")
}
model Chapter {
id String @id @default(uuid())
slug String
number Float
shortTitle String @db.Text
sourceHref String @db.Text
fullTitle String @db.Text
sourcePath String @db.Text
nextSlug String @db.Text
nextPath String @db.Text
prevSlug String @db.Text
prevPath String @db.Text
contentPaths Json
providerSlug String
seriesSlug String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
provider Provider @relation(fields: [providerSlug], references: [slug], onDelete: Cascade)
series Series @relation(fields: [providerSlug, seriesSlug], references: [providerSlug, slug], onDelete: Cascade)
@@unique([providerSlug, seriesSlug, slug], name: "chapterUnique")
@@index([providerSlug], map: "providerIndex")
@@index([providerSlug, seriesSlug], map: "seriesIndex")
}
model ScrapeRequest {
id String @id @default(uuid())
type ScrapeRequestType
baseUrl String @db.Text
requestPath String @db.Text
provider String @db.Text
series String @db.Text
chapter String @db.Text
status String
retries Int
totalTime Float
error Boolean
message String @db.Text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([type], map: "typeIndex")
}
model CronJob {
id String @id
name String @db.Text
crontab String @db.Text
tags String @db.Text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model CronJobStatus {
id String @id @default(uuid())
jobId String
status String @db.Text
message String @db.Text
duration Float
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([jobId], map: "cronJobIndex")
}
enum ScrapeRequestType {
SERIES_LIST
SERIES_DETAIL
CHAPTER_LIST
CHAPTER_DETAIL
}
enum Series_status {
ONGOING
COMPLETED
DROPPED
HIATUS
}