clients page

This commit is contained in:
Dimitar765 committed 2024-10-29 06:47:15 +01:00
1 parent 3d2b0a5d6d
commit 1a7f2afd79
20 files changed
+458 -402

No files matched your search

@@ -1,27 +0,0 @@
-- CreateTable
CREATE TABLE "User" (
"id" SERIAL NOT NULL,
"email" TEXT NOT NULL,
"name" TEXT,
"password" TEXT NOT NULL,
"isAdmin" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Document" (
"id" SERIAL NOT NULL,
"title" TEXT NOT NULL,
"content" TEXT,
"published" BOOLEAN NOT NULL DEFAULT false,
"authorId" INTEGER NOT NULL,
CONSTRAINT "Document_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
-- AddForeignKey
ALTER TABLE "Document" ADD CONSTRAINT "Document_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE "Document" ADD COLUMN "s3Key" TEXT;
@@ -1,8 +0,0 @@
/*
Warnings:
- Made the column `s3Key` on table `Document` required. This step will fail if there are existing NULL values in that column.
*/
-- AlterTable
ALTER TABLE "Document" ALTER COLUMN "s3Key" SET NOT NULL;
@@ -1,13 +1,28 @@
/*
Warnings:
-- CreateTable
CREATE TABLE "Document" (
"id" SERIAL NOT NULL,
"title" TEXT NOT NULL,
"content" TEXT,
"published" BOOLEAN NOT NULL DEFAULT false,
"authorId" INTEGER NOT NULL,
"s3Key" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'pending',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
- Added the required column `updatedAt` to the `Document` table without a default value. This is not possible if the table is not empty.
CONSTRAINT "Document_pkey" PRIMARY KEY ("id")
);
*/
-- AlterTable
ALTER TABLE "Document" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN "status" TEXT NOT NULL DEFAULT 'pending',
ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL;
-- CreateTable
CREATE TABLE "User" (
"id" SERIAL NOT NULL,
"email" TEXT NOT NULL,
"name" TEXT,
"password" TEXT NOT NULL,
"isAdmin" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Notification" (
@@ -26,12 +41,18 @@ CREATE TABLE "_SharedDocuments" (
"B" INTEGER NOT NULL
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
-- CreateIndex
CREATE UNIQUE INDEX "_SharedDocuments_AB_unique" ON "_SharedDocuments"("A", "B");
-- CreateIndex
CREATE INDEX "_SharedDocuments_B_index" ON "_SharedDocuments"("B");
-- AddForeignKey
ALTER TABLE "Document" ADD CONSTRAINT "Document_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,28 @@
/*
Warnings:
- You are about to drop the column `authorId` on the `Document` table. All the data in the column will be lost.
- You are about to drop the column `published` on the `Document` table. All the data in the column will be lost.
- You are about to drop the `_SharedDocuments` table. If the table is not empty, all the data it contains will be lost.
- Added the required column `sharedWithId` to the `Document` table without a default value. This is not possible if the table is not empty.
*/
-- DropForeignKey
ALTER TABLE "Document" DROP CONSTRAINT "Document_authorId_fkey";
-- DropForeignKey
ALTER TABLE "_SharedDocuments" DROP CONSTRAINT "_SharedDocuments_A_fkey";
-- DropForeignKey
ALTER TABLE "_SharedDocuments" DROP CONSTRAINT "_SharedDocuments_B_fkey";
-- AlterTable
ALTER TABLE "Document" DROP COLUMN "authorId",
DROP COLUMN "published",
ADD COLUMN "sharedWithId" INTEGER NOT NULL;
-- DropTable
DROP TABLE "_SharedDocuments";
-- AddForeignKey
ALTER TABLE "Document" ADD CONSTRAINT "Document_sharedWithId_fkey" FOREIGN KEY ("sharedWithId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+17 -29
View File
@@ -1,9 +1,3 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
}
@@ -13,30 +7,26 @@ datasource db {
url = env("DATABASE_URL")
}
model Document {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
authorId Int
author User @relation(fields: [authorId], references: [id])
s3Key String
status String @default("pending") // pending, uploading, completed, failed
sharedWith User[] @relation("SharedDocuments")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id Int @id @default(autoincrement())
title String
content String?
s3Key String
status String @default("pending")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sharedWithId Int
sharedWith User @relation("SharedDocuments", fields: [sharedWithId], references: [id])
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
password String
isAdmin Boolean @default(false)
authoredDocuments Document[] @relation("AuthoredDocuments")
sharedDocuments Document[] @relation("SharedDocuments")
notifications Notification[]
id Int @id @default(autoincrement())
email String @unique
name String?
password String
isAdmin Boolean @default(false)
sharedDocuments Document[] @relation("SharedDocuments")
notifications Notification[]
}
model Notification {
@@ -44,8 +34,6 @@ model Notification {
message String
read Boolean @default(false)
userId Int
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id])
}
+30
View File
@@ -0,0 +1,30 @@
import { PrismaClient } from '@prisma/client';
import * as bcrypt from 'bcrypt';
const prisma = new PrismaClient();
async function main() {
const hashedPassword = await bcrypt.hash('admin123', 10);
const admin = await prisma.user.upsert({
where: { email: 'admin@example.com' },
update: {},
create: {
email: 'admin@example.com',
name: 'Admin User',
password: hashedPassword,
isAdmin: true,
},
});
console.log({ admin });
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});