diff --git a/apps/web/prisma/schema.prisma b/apps/web/prisma/schema.prisma index d11320364..391895c72 100644 --- a/apps/web/prisma/schema.prisma +++ b/apps/web/prisma/schema.prisma @@ -9,19 +9,29 @@ datasource db { model User { id Int @id @default(autoincrement()) - email String @unique @db.VarChar(255) - password String @db.VarChar(255) firstName String? @db.VarChar(255) lastName String? @db.VarChar(255) + email String @unique @db.VarChar(255) + password String? @db.VarChar(255) documents Document[] } model Document { id Int @id @default(autoincrement()) - owner User @relation(fields: [userId], references: [id], onDelete: Cascade) userId Int - recipients Recipient[] document Bytes + owner User @relation(fields: [userId], references: [id], onDelete: Cascade) + recipients Recipient[] +} + +model Recipient { + id Int @id @default(autoincrement()) + documentId Int + email String @db.VarChar(255) + readStatus ReadStatus + signingStatus SigningStatus + sendStatus SendStatus + Document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) } enum SigningStatus { @@ -38,13 +48,3 @@ enum SendStatus { NOT_SENT SENT } - -model Recipient { - id Int @id @default(autoincrement()) - Document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) - documentId Int - email String @db.VarChar(255) - readStatus ReadStatus - signingStatus SigningStatus - sendStatus SendStatus -} diff --git a/packages/prisma/.gitignore b/packages/prisma/.gitignore new file mode 100644 index 000000000..11ddd8dbe --- /dev/null +++ b/packages/prisma/.gitignore @@ -0,0 +1,3 @@ +node_modules +# Keep environment variables out of version control +.env diff --git a/packages/prisma/index.ts b/packages/prisma/index.ts new file mode 100644 index 000000000..f948b3f11 --- /dev/null +++ b/packages/prisma/index.ts @@ -0,0 +1,3 @@ +import { PrismaClient, User } from "@prisma/client"; + +export default PrismaClient; diff --git a/packages/prisma/package-lock.json b/packages/prisma/package-lock.json new file mode 100644 index 000000000..4d1806755 --- /dev/null +++ b/packages/prisma/package-lock.json @@ -0,0 +1,97 @@ +{ + "name": "@documenso/prisma", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@documenso/prisma", + "version": "0.0.0", + "dependencies": { + "@prisma/client": "^4.8.0" + }, + "devDependencies": { + "prisma": "^4.8.0" + } + }, + "node_modules/@prisma/client": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.8.0.tgz", + "integrity": "sha512-Y1riB0p2W52kh3zgssP/YAhln3RjBFcJy3uwEiyjmU+TQYh6QTZDRFBo3JtBWuq2FyMOl1Rye8jxzUP+n0l5Cg==", + "hasInstallScript": true, + "dependencies": { + "@prisma/engines-version": "4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/engines": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.8.0.tgz", + "integrity": "sha512-A1Asn2rxZMlLAj1HTyfaCv0VQrLUv034jVay05QlqZg1qiHPeA3/pGTfNMijbsMYCsGVxfWEJuaZZuNxXGMCrA==", + "devOptional": true, + "hasInstallScript": true + }, + "node_modules/@prisma/engines-version": { + "version": "4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe.tgz", + "integrity": "sha512-MHSOSexomRMom8QN4t7bu87wPPD+pa+hW9+71JnVcF3DqyyO/ycCLhRL1we3EojRpZxKvuyGho2REQsMCvxcJw==" + }, + "node_modules/prisma": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.8.0.tgz", + "integrity": "sha512-DWIhxvxt8f4h6MDd35mz7BJff+fu7HItW3WPDIEpCR3RzcOWyiHBbLQW5/DOgmf+pRLTjwXQob7kuTZVYUAw5w==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "4.8.0" + }, + "bin": { + "prisma": "build/index.js", + "prisma2": "build/index.js" + }, + "engines": { + "node": ">=14.17" + } + } + }, + "dependencies": { + "@prisma/client": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.8.0.tgz", + "integrity": "sha512-Y1riB0p2W52kh3zgssP/YAhln3RjBFcJy3uwEiyjmU+TQYh6QTZDRFBo3JtBWuq2FyMOl1Rye8jxzUP+n0l5Cg==", + "requires": { + "@prisma/engines-version": "4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe" + } + }, + "@prisma/engines": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.8.0.tgz", + "integrity": "sha512-A1Asn2rxZMlLAj1HTyfaCv0VQrLUv034jVay05QlqZg1qiHPeA3/pGTfNMijbsMYCsGVxfWEJuaZZuNxXGMCrA==", + "devOptional": true + }, + "@prisma/engines-version": { + "version": "4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.8.0-61.d6e67a83f971b175a593ccc12e15c4a757f93ffe.tgz", + "integrity": "sha512-MHSOSexomRMom8QN4t7bu87wPPD+pa+hW9+71JnVcF3DqyyO/ycCLhRL1we3EojRpZxKvuyGho2REQsMCvxcJw==" + }, + "prisma": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.8.0.tgz", + "integrity": "sha512-DWIhxvxt8f4h6MDd35mz7BJff+fu7HItW3WPDIEpCR3RzcOWyiHBbLQW5/DOgmf+pRLTjwXQob7kuTZVYUAw5w==", + "devOptional": true, + "requires": { + "@prisma/engines": "4.8.0" + } + } + } +} diff --git a/packages/prisma/package.json b/packages/prisma/package.json new file mode 100644 index 000000000..ee700e265 --- /dev/null +++ b/packages/prisma/package.json @@ -0,0 +1,12 @@ +{ + "name": "@documenso/prisma", + "version": "0.0.0", + "private": true, + "main": "index.ts", + "devDependencies": { + "prisma": "^4.8.0" + }, + "dependencies": { + "@prisma/client": "^4.8.0" + } +} diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma new file mode 100644 index 000000000..197c72bf2 --- /dev/null +++ b/packages/prisma/schema.prisma @@ -0,0 +1,50 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model Document { + id Int @id @default(autoincrement()) + userId Int + document Bytes + User User @relation(fields: [userId], references: [id], onDelete: Cascade) + Recipient Recipient[] +} + +model Recipient { + id Int @id @default(autoincrement()) + documentId Int + email String @db.VarChar(255) + readStatus ReadStatus + signingStatus SigningStatus + sendStatus SendStatus + Document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) +} + +model User { + id Int @id @default(autoincrement()) + firstName String? @db.VarChar(255) + lastName String? @db.VarChar(255) + email String @unique @db.VarChar(255) + password String? @db.VarChar(255) + Document Document[] +} + +enum ReadStatus { + NOT_OPENED + OPENED +} + +enum SendStatus { + NOT_SENT + SENT +} + +enum SigningStatus { + NOT_SIGNED + SIGNED +}