diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-06 18:16:35 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-06 19:24:52 +0000 |
| commit | baf48af5f0a4b88642edc18ae8b16e81260e1846 (patch) | |
| tree | 1f9779ac76b21ba7504ec664f05064d1b4e9ff2a /db/prisma/schema.prisma | |
| parent | e035c2fd1067a06d4774c64ae54548f664490f9d (diff) | |
| download | karakeep-baf48af5f0a4b88642edc18ae8b16e81260e1846.tar.zst | |
Implement metadata fetching logic in the crawler
Diffstat (limited to 'db/prisma/schema.prisma')
| -rw-r--r-- | db/prisma/schema.prisma | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/db/prisma/schema.prisma b/db/prisma/schema.prisma new file mode 100644 index 00000000..f5b83b66 --- /dev/null +++ b/db/prisma/schema.prisma @@ -0,0 +1,106 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +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? + accounts Account[] + sessions Session[] + links BookmarkedLink[] + tags BookmarkTags[] +} + +model VerificationToken { + identifier String + token String @unique + expires DateTime + + @@unique([identifier, token]) +} + +model BookmarkedLink { + id String @id @default(cuid()) + url String + createdAt DateTime @default(now()) + + userId String + + details BookmarkedLinkDetails? + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + tags TagsOnLinks[] +} + +model BookmarkedLinkDetails { + id String @id + title String? + description String? + imageUrl String? + favicon String? + createdAt DateTime @default(now()) + + link BookmarkedLink @relation(fields: [id], references: [id], onDelete: Cascade) +} + +model BookmarkTags { + id String @id @default(cuid()) + name String @unique + createdAt DateTime @default(now()) + + userId String + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + attachedLinks TagsOnLinks[] +} + +model TagsOnLinks { + link BookmarkedLink @relation(fields: [linkId], references: [id], onDelete: Cascade) + linkId String + + tag BookmarkTags @relation(fields: [tagId], references: [id], onDelete: Cascade) + tagId String + + attachedAt DateTime @default(now()) + bookmarkTagsId String + + @@unique([linkId, tagId]) +} |
