move development of formbricks HQ to monorepo

This commit is contained in:
Matthias Nannt
2022-11-24 12:29:18 +01:00
parent 74b1cb0687
commit 0a17676981
76 changed files with 5302 additions and 640 deletions
+6 -8
View File
@@ -1,7 +1,6 @@
{
"name": "@formbricks/database",
"version": "1.0.2",
"private": true,
"version": "1.0.0",
"license": "MIT",
"main": "./dist/index.js",
"module": "./dist/index.mjs",
@@ -24,17 +23,16 @@
"studio": "prisma studio"
},
"dependencies": {
"@prisma/client": "^4.4.0"
"@prisma/client": "^4.6.1"
},
"devDependencies": {
"@types/node": "18.8.3",
"eslint": "^8.25.0",
"eslint-config-formbricks": "workspace:*",
"prisma": "^4.4.0",
"eslint": "^8.27.0",
"prisma": "^4.6.1",
"rimraf": "^3.0.2",
"@formbricks/tsconfig": "workspace:*",
"tsup": "^6.2.3",
"tsx": "^3.10.1",
"tsup": "^6.4.0",
"tsx": "^3.12.0",
"typescript": "^4.8.4"
}
}
@@ -1,115 +0,0 @@
-- CreateEnum
CREATE TYPE "FormType" AS ENUM ('CODE', 'NOCODE');
-- CreateEnum
CREATE TYPE "PipelineType" AS ENUM ('WEBHOOK');
-- CreateTable
CREATE TABLE "Form" (
"id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"ownerId" INTEGER NOT NULL,
"formType" "FormType" NOT NULL DEFAULT E'NOCODE',
"name" TEXT NOT NULL DEFAULT E'',
"published" BOOLEAN NOT NULL DEFAULT false,
"schema" JSONB NOT NULL DEFAULT '{}',
CONSTRAINT "Form_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "NoCodeForm" (
"id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"formId" TEXT NOT NULL,
"pages" JSONB NOT NULL DEFAULT '[]',
"pagesDraft" JSONB NOT NULL DEFAULT '[]',
CONSTRAINT "NoCodeForm_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Pipeline" (
"id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"type" "PipelineType" NOT NULL,
"formId" TEXT NOT NULL,
"data" JSONB NOT NULL,
CONSTRAINT "Pipeline_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "SubmissionSession" (
"id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"formId" TEXT NOT NULL,
"userFingerprint" TEXT NOT NULL,
CONSTRAINT "SubmissionSession_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "SessionEvent" (
"id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"submissionSessionId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"data" JSONB NOT NULL,
CONSTRAINT "SessionEvent_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "users" (
"id" SERIAL NOT NULL,
"name" TEXT,
"email" TEXT,
"email_verified" TIMESTAMP(3),
"password" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "verification_requests" (
"id" SERIAL NOT NULL,
"identifier" TEXT NOT NULL,
"token" TEXT NOT NULL,
"expires" TIMESTAMP(3) NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "verification_requests_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "NoCodeForm_formId_key" ON "NoCodeForm"("formId");
-- CreateIndex
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
-- CreateIndex
CREATE UNIQUE INDEX "verification_requests_token_key" ON "verification_requests"("token");
-- AddForeignKey
ALTER TABLE "Form" ADD CONSTRAINT "Form_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "NoCodeForm" ADD CONSTRAINT "NoCodeForm_formId_fkey" FOREIGN KEY ("formId") REFERENCES "Form"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Pipeline" ADD CONSTRAINT "Pipeline_formId_fkey" FOREIGN KEY ("formId") REFERENCES "Form"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "SubmissionSession" ADD CONSTRAINT "SubmissionSession_formId_fkey" FOREIGN KEY ("formId") REFERENCES "Form"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "SessionEvent" ADD CONSTRAINT "SessionEvent_submissionSessionId_fkey" FOREIGN KEY ("submissionSessionId") REFERENCES "SubmissionSession"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,11 +0,0 @@
/*
Warnings:
- You are about to drop the column `published` on the `Form` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "Form" DROP COLUMN "published";
-- AlterTable
ALTER TABLE "NoCodeForm" ADD COLUMN "published" BOOLEAN NOT NULL DEFAULT false;
@@ -1,12 +0,0 @@
/*
Warnings:
- You are about to drop the column `pages` on the `NoCodeForm` table. All the data in the column will be lost.
- You are about to drop the column `pagesDraft` on the `NoCodeForm` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "NoCodeForm" DROP COLUMN "pages",
DROP COLUMN "pagesDraft",
ADD COLUMN "blocks" JSONB NOT NULL DEFAULT '[]',
ADD COLUMN "blocksDraft" JSONB NOT NULL DEFAULT '[]';
@@ -1,24 +0,0 @@
/*
Warnings:
- You are about to drop the column `name` on the `users` table. All the data in the column will be lost.
- You are about to drop the `verification_requests` table. If the table is not empty, all the data it contains will be lost.
- Made the column `email` on table `users` required. This step will fail if there are existing NULL values in that column.
- Made the column `password` on table `users` required. This step will fail if there are existing NULL values in that column.
*/
-- DropForeignKey
ALTER TABLE "Form" DROP CONSTRAINT "Form_ownerId_fkey";
-- AlterTable
ALTER TABLE "users" DROP COLUMN "name",
ADD COLUMN "firstname" TEXT,
ADD COLUMN "lastname" TEXT,
ALTER COLUMN "email" SET NOT NULL,
ALTER COLUMN "password" SET NOT NULL;
-- DropTable
DROP TABLE "verification_requests";
-- AddForeignKey
ALTER TABLE "Form" ADD CONSTRAINT "Form_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE "NoCodeForm" ADD COLUMN "closed" BOOLEAN NOT NULL DEFAULT false;
@@ -1,14 +0,0 @@
/*
Warnings:
- Added the required column `name` to the `Pipeline` table without a default value. This is not possible if the table is not empty.
*/
-- CreateEnum
CREATE TYPE "PipelineEvent" AS ENUM ('PAGE_SUBMISSION');
-- AlterTable
ALTER TABLE "Pipeline" ADD COLUMN "enabled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "events" "PipelineEvent"[],
ADD COLUMN "name" TEXT NOT NULL,
ALTER COLUMN "data" SET DEFAULT '{}';
@@ -1,8 +0,0 @@
/*
Warnings:
- You are about to drop the column `userFingerprint` on the `SubmissionSession` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "SubmissionSession" DROP COLUMN "userFingerprint";
@@ -1,5 +0,0 @@
-- AlterEnum
ALTER TYPE "PipelineEvent" ADD VALUE 'FORM_COMPLETED';
-- AlterEnum
ALTER TYPE "PipelineType" ADD VALUE 'EMAIL_NOTIFICATION';
@@ -0,0 +1,70 @@
-- CreateEnum
CREATE TYPE "MembershipRole" AS ENUM ('MEMBER', 'ADMIN', 'OWNER');
-- CreateEnum
CREATE TYPE "IdentityProvider" AS ENUM ('EMAIL', 'GITHUB');
-- CreateTable
CREATE TABLE "Project" (
"id" SERIAL NOT NULL,
"teamId" INTEGER NOT NULL,
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Team" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
CONSTRAINT "Team_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Membership" (
"teamId" INTEGER NOT NULL,
"userId" INTEGER NOT NULL,
"accepted" BOOLEAN NOT NULL DEFAULT false,
"role" "MembershipRole" NOT NULL,
CONSTRAINT "Membership_pkey" PRIMARY KEY ("userId","teamId")
);
-- CreateTable
CREATE TABLE "Account" (
"id" TEXT NOT NULL,
"userId" INTEGER NOT NULL,
"type" TEXT NOT NULL,
"provider" TEXT NOT NULL,
"providerAccountId" TEXT NOT NULL,
"access_token" TEXT,
"refresh_token" TEXT,
"expires_at" INTEGER,
"token_type" TEXT,
"scope" TEXT,
"id_token" TEXT,
"session_state" TEXT,
CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "users" (
"id" SERIAL NOT NULL,
"name" TEXT,
"email" TEXT NOT NULL,
"email_verified" TIMESTAMP(3),
"password" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"identityProvider" "IdentityProvider" NOT NULL DEFAULT 'EMAIL',
"identityProviderAccountId" TEXT,
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId");
-- CreateIndex
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
+65 -49
View File
@@ -1,66 +1,82 @@
generator client {
provider = "prisma-client-js"
}
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
provider = "postgresql"
url = env("DATABASE_URL")
referentialIntegrity = "prisma"
}
enum PipelineType {
WEBHOOK
EMAIL_NOTIFICATION
generator client {
provider = "prisma-client-js"
previewFeatures = ["referentialIntegrity"]
}
enum PipelineEvent {
PAGE_SUBMISSION
FORM_COMPLETED
model Project {
id Int @id @default(autoincrement())
organization Team @relation(fields: [teamId], references: [id], onDelete: Cascade)
teamId Int
}
model Form {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
ownerId Int
name String @default("")
schema Json @default("{}")
submissions Submission[]
pipelines Pipeline[]
model Team {
id Int @id @default(autoincrement())
name String
members Membership[]
projects Project[]
}
model Pipeline {
id String @id @default(uuid())
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
name String
type PipelineType
form Form @relation(fields: [formId], references: [id], onDelete: Cascade)
formId String
enabled Boolean @default(false)
events PipelineEvent[]
data Json @default("{}")
}
enum MembershipRole {
MEMBER
ADMIN
OWNER
}
model Submission {
id String @id @default(uuid())
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
form Form @relation(fields: [formId], references: [id], onDelete: Cascade)
formId String
data Json
model Membership {
team Team @relation(fields: [teamId], references: [id], onDelete: Cascade)
teamId Int
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
userId Int
accepted Boolean @default(false)
role MembershipRole
@@id([userId, teamId])
}
enum IdentityProvider {
EMAIL
GITHUB
}
model Account {
id String @id @default(cuid())
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
userId Int
type String
provider String
providerAccountId String
access_token String? @db.Text
refresh_token String? @db.Text
expires_at Int?
token_type String?
scope String?
id_token String? @db.Text
session_state String?
@@unique([provider, providerAccountId])
}
model User {
id Int @id @default(autoincrement())
firstname String?
lastname String?
email String @unique
emailVerified DateTime? @map(name: "email_verified")
password String
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
forms Form[]
id Int @id @default(autoincrement())
name String?
email String @unique
emailVerified DateTime? @map(name: "email_verified")
password String?
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
identityProvider IdentityProvider @default(EMAIL)
identityProviderAccountId String?
teams Membership[]
accounts Account[]
@@map(name: "users")
}