File size: 3,500 Bytes
60faa09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
datasource db {
  provider = "sqlite"
}

generator client {
  provider = "prisma-client-js"
}

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])
}

model Session {
  id           String   @id @default(cuid())
  sessionToken String   @unique
  userId       String
  expires      DateTime
  user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)
}

model User {
  id            String      @id @default(cuid())
  name          String?
  email         String?     @unique
  emailVerified DateTime?
  image         String?
  credits       Int         @default(50)
  customApiKey  String?
  hfUsername    String?
  createdAt     DateTime    @default(now())
  accounts      Account[]
  sessions      Session[]
  chats         Chat[]
  images        UserImage[]
  creations     Creation[]
}

model UserImage {
  id        String   @id @default(cuid())
  userId    String
  url       String
  hfRepo    String?
  hfPath    String?
  createdAt DateTime @default(now())
  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)

  @@index([userId])
}

model Character {
  id           String   @id @default(cuid())
  name         String
  avatar       String
  profileUrl   String?
  description  String
  personality  String
  systemPrompt String
  greeting     String
  isCustom     Boolean  @default(true)
  isPublic     Boolean  @default(true)
  userId       String?
  createdAt    DateTime @default(now())
  chats        Chat[]

  @@index([isPublic])
  @@index([userId])
}

model Chat {
  id          String    @id @default(cuid())
  characterId String
  userId      String
  createdAt   DateTime  @default(now())
  character   Character @relation(fields: [characterId], references: [id], onDelete: Cascade)
  user        User      @relation(fields: [userId], references: [id], onDelete: Cascade)
  messages    Message[]

  @@index([userId])
  @@index([characterId])
}

model Message {
  id                String   @id @default(cuid())
  chatId            String
  role              String
  content           String
  imageUrl          String?
  model             String?
  promptTokens      Int?
  completionTokens  Int?
  createdAt         DateTime @default(now())
  chat              Chat     @relation(fields: [chatId], references: [id], onDelete: Cascade)

  @@index([chatId])
}

model Creation {
  id           String   @id @default(cuid())
  prompt       String?
  imageUrl     String?
  aspectRatio  String?
  resolution   String?
  createdAt    DateTime @default(now())
  userId       String

  requestId    String?  @unique
  status       String   @default("processing")
  error        String?

  duration     String?
  inputImages  String?
  mode         String?
  modelId      String?
  title        String?
  type         String?
  url          String?

  user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)
}

model VerificationToken {
  identifier String
  token      String   @unique
  expires    DateTime

  @@unique([identifier, token])
}